From 66a9aa2aa16eded04e19c3bd1a11d1e8e2877220 Mon Sep 17 00:00:00 2001 From: "Qin Ying, Fan" Date: Fri, 2 Dec 2022 15:16:20 +0000 Subject: [PATCH] RTS UMN 1201 version Reviewed-by: Hasko, Vladimir Co-authored-by: Qin Ying, Fan Co-committed-by: Qin Ying, Fan --- docs/rts/umn/ALL_META.TXT.json | 922 ++++++++++++++++++ docs/rts/umn/CLASS.TXT.json | 830 ++++++++++++++++ docs/rts/umn/PARAMETERS.txt | 3 + docs/rts/umn/en-us_image_0076468668.png | Bin 0 -> 2888 bytes docs/rts/umn/en-us_image_0078602155.png | Bin 0 -> 3818 bytes docs/rts/umn/en-us_image_0093846144.png | Bin 0 -> 17363 bytes docs/rts/umn/en-us_image_0093846364.png | Bin 0 -> 19474 bytes docs/rts/umn/en-us_image_0106214513.png | Bin 0 -> 774 bytes docs/rts/umn/en-us_image_0110310841.png | Bin 0 -> 21166 bytes docs/rts/umn/en-us_image_0110311573.png | Bin 0 -> 30468 bytes docs/rts/umn/en-us_image_0128465684.png | Bin 0 -> 107168 bytes docs/rts/umn/en-us_image_0129631902.png | Bin 0 -> 18009 bytes docs/rts/umn/en-us_image_0129684031.png | Bin 0 -> 14930 bytes docs/rts/umn/en-us_image_0162741682.png | Bin 0 -> 12562 bytes docs/rts/umn/en-us_image_0162983502.png | Bin 0 -> 35037 bytes docs/rts/umn/en-us_image_0165712169.png | Bin 0 -> 9018 bytes docs/rts/umn/en-us_image_0165732878.png | Bin 0 -> 24785 bytes docs/rts/umn/en-us_image_0210485079.png | Bin 0 -> 1004 bytes docs/rts/umn/en-us_image_0210486176.jpg | Bin 0 -> 740 bytes docs/rts/umn/en-us_image_0238393888.png | Bin 0 -> 419 bytes docs/rts/umn/en-us_image_0238393889.png | Bin 0 -> 124 bytes docs/rts/umn/en-us_topic_0039055697.html | 49 + docs/rts/umn/en-us_topic_0068576463.html | 21 + docs/rts/umn/en-us_topic_0078604095.html | 15 + docs/rts/umn/en-us_topic_0110305013.html | 14 + docs/rts/umn/en-us_topic_0110305014.html | 114 +++ docs/rts/umn/en-us_topic_0110305015.html | 17 + docs/rts/umn/en-us_topic_0130750896.html | 114 +++ docs/rts/umn/en-us_topic_0162985073.html | 22 + .../public_sys-resources/ExpandCollapse.js | 1 + .../caution_3.0-en-us.png | Bin 0 -> 2752 bytes .../umn/public_sys-resources/commonltr.css | 1 + .../public_sys-resources/commonltr_print.css | 1 + .../umn/public_sys-resources/commonrtl.css | 2 + .../public_sys-resources/danger_3.0-en-us.png | Bin 0 -> 2771 bytes docs/rts/umn/public_sys-resources/delta.gif | Bin 0 -> 836 bytes .../rts/umn/public_sys-resources/deltaend.gif | Bin 0 -> 834 bytes .../umn/public_sys-resources/icon-arrowdn.gif | Bin 0 -> 1887 bytes .../umn/public_sys-resources/icon-arrowrt.gif | Bin 0 -> 1890 bytes .../umn/public_sys-resources/icon-caution.gif | Bin 0 -> 1086 bytes .../umn/public_sys-resources/icon-danger.gif | Bin 0 -> 1086 bytes .../umn/public_sys-resources/icon-huawei.gif | Bin 0 -> 2767 bytes .../umn/public_sys-resources/icon-note.gif | Bin 0 -> 983 bytes .../umn/public_sys-resources/icon-notice.gif | Bin 0 -> 962 bytes .../rts/umn/public_sys-resources/icon-tip.gif | Bin 0 -> 879 bytes .../umn/public_sys-resources/icon-warning.gif | Bin 0 -> 1086 bytes .../public_sys-resources/note_3.0-en-us.png | Bin 0 -> 1080 bytes .../public_sys-resources/notice_3.0-en-us.png | Bin 0 -> 1672 bytes docs/rts/umn/public_sys-resources/popup.js | 1 + .../warning_3.0-en-us.png | Bin 0 -> 3164 bytes docs/rts/umn/rts_01_0001.html | 21 + docs/rts/umn/rts_01_0003.html | 17 + docs/rts/umn/rts_01_0004.html | 514 ++++++++++ docs/rts/umn/rts_01_0006.html | 14 + docs/rts/umn/rts_01_0007.html | 111 +++ docs/rts/umn/rts_01_0008.html | 13 + docs/rts/umn/rts_02_0001.html | 13 + docs/rts/umn/rts_02_0002.html | 63 ++ docs/rts/umn/rts_02_0007.html | 93 ++ docs/rts/umn/rts_02_0008.html | 25 + docs/rts/umn/rts_02_0009.html | 59 ++ docs/rts/umn/rts_02_0010.html | 23 + docs/rts/umn/rts_02_0011.html | 14 + docs/rts/umn/rts_02_0012.html | 71 ++ docs/rts/umn/rts_02_0013.html | 58 ++ docs/rts/umn/rts_02_0014.html | 26 + docs/rts/umn/rts_02_0015.html | 40 + docs/rts/umn/rts_02_0016.html | 12 + docs/rts/umn/rts_02_0017.html | 19 + docs/rts/umn/rts_02_0018.html | 41 + docs/rts/umn/rts_02_0020.html | 73 ++ docs/rts/umn/rts_02_0021.html | 16 + docs/rts/umn/rts_02_0022.html | 12 + docs/rts/umn/rts_02_0023.html | 31 + docs/rts/umn/rts_02_0029.html | 16 + docs/rts/umn/rts_02_0030.html | 19 + docs/rts/umn/rts_02_0035.html | 14 + docs/rts/umn/rts_02_0036.html | 97 ++ docs/rts/umn/rts_02_0037.html | 26 + docs/rts/umn/rts_02_0046.html | 214 ++++ docs/rts/umn/rts_02_0047.html | 70 ++ docs/rts/umn/rts_02_0048.html | 133 +++ docs/rts/umn/rts_02_0049.html | 40 + docs/rts/umn/rts_02_0050.html | 62 ++ docs/rts/umn/rts_02_0051.html | 121 +++ docs/rts/umn/rts_02_0052.html | 118 +++ docs/rts/umn/rts_02_0053.html | 100 ++ docs/rts/umn/rts_02_0054.html | 159 +++ docs/rts/umn/rts_02_0055.html | 139 +++ docs/rts/umn/rts_02_0056.html | 116 +++ docs/rts/umn/rts_02_0058.html | 135 +++ docs/rts/umn/rts_02_0061.html | 85 ++ docs/rts/umn/rts_02_0062.html | 69 ++ docs/rts/umn/rts_02_0063.html | 112 +++ docs/rts/umn/rts_02_0064.html | 66 ++ docs/rts/umn/rts_02_0065.html | 123 +++ docs/rts/umn/rts_02_0066.html | 244 +++++ docs/rts/umn/rts_02_0067.html | 123 +++ docs/rts/umn/rts_02_0069.html | 78 ++ docs/rts/umn/rts_02_0070.html | 94 ++ docs/rts/umn/rts_02_0071.html | 246 +++++ docs/rts/umn/rts_02_0072.html | 93 ++ docs/rts/umn/rts_02_0073.html | 406 ++++++++ docs/rts/umn/rts_02_0074.html | 65 ++ docs/rts/umn/rts_02_0075.html | 155 +++ docs/rts/umn/rts_02_0076.html | 228 +++++ docs/rts/umn/rts_02_0077.html | 129 +++ docs/rts/umn/rts_02_0078.html | 177 ++++ docs/rts/umn/rts_02_0079.html | 154 +++ docs/rts/umn/rts_02_0080.html | 191 ++++ docs/rts/umn/rts_02_0081.html | 115 +++ docs/rts/umn/rts_02_0082.html | 61 ++ docs/rts/umn/rts_02_0083.html | 73 ++ docs/rts/umn/rts_02_0084.html | 150 +++ docs/rts/umn/rts_02_0085.html | 136 +++ docs/rts/umn/rts_02_0086.html | 130 +++ docs/rts/umn/rts_02_0087.html | 139 +++ docs/rts/umn/rts_02_0088.html | 118 +++ docs/rts/umn/rts_02_0089.html | 260 +++++ docs/rts/umn/rts_02_0090.html | 83 ++ docs/rts/umn/rts_02_0091.html | 122 +++ docs/rts/umn/rts_02_0092.html | 143 +++ docs/rts/umn/rts_02_0093.html | 63 ++ docs/rts/umn/rts_02_0108_0.html | 26 + docs/rts/umn/rts_02_0109_0.html | 39 + docs/rts/umn/rts_02_0110.html | 41 + docs/rts/umn/rts_02_0111.html | 30 + docs/rts/umn/rts_02_0112.html | 54 + docs/rts/umn/rts_02_0113.html | 65 ++ docs/rts/umn/rts_02_0114.html | 66 ++ docs/rts/umn/rts_02_0115.html | 40 + docs/rts/umn/rts_faq_0002.html | 14 + docs/rts/umn/rts_faq_0003.html | 11 + docs/rts/umn/rts_faq_0004.html | 31 + 134 files changed, 9933 insertions(+) create mode 100644 docs/rts/umn/ALL_META.TXT.json create mode 100644 docs/rts/umn/CLASS.TXT.json create mode 100644 docs/rts/umn/PARAMETERS.txt create mode 100644 docs/rts/umn/en-us_image_0076468668.png create mode 100644 docs/rts/umn/en-us_image_0078602155.png create mode 100644 docs/rts/umn/en-us_image_0093846144.png create mode 100644 docs/rts/umn/en-us_image_0093846364.png create mode 100644 docs/rts/umn/en-us_image_0106214513.png create mode 100644 docs/rts/umn/en-us_image_0110310841.png create mode 100644 docs/rts/umn/en-us_image_0110311573.png create mode 100644 docs/rts/umn/en-us_image_0128465684.png create mode 100644 docs/rts/umn/en-us_image_0129631902.png create mode 100644 docs/rts/umn/en-us_image_0129684031.png create mode 100644 docs/rts/umn/en-us_image_0162741682.png create mode 100644 docs/rts/umn/en-us_image_0162983502.png create mode 100644 docs/rts/umn/en-us_image_0165712169.png create mode 100644 docs/rts/umn/en-us_image_0165732878.png create mode 100644 docs/rts/umn/en-us_image_0210485079.png create mode 100644 docs/rts/umn/en-us_image_0210486176.jpg create mode 100644 docs/rts/umn/en-us_image_0238393888.png create mode 100644 docs/rts/umn/en-us_image_0238393889.png create mode 100644 docs/rts/umn/en-us_topic_0039055697.html create mode 100644 docs/rts/umn/en-us_topic_0068576463.html create mode 100644 docs/rts/umn/en-us_topic_0078604095.html create mode 100644 docs/rts/umn/en-us_topic_0110305013.html create mode 100644 docs/rts/umn/en-us_topic_0110305014.html create mode 100644 docs/rts/umn/en-us_topic_0110305015.html create mode 100644 docs/rts/umn/en-us_topic_0130750896.html create mode 100644 docs/rts/umn/en-us_topic_0162985073.html create mode 100644 docs/rts/umn/public_sys-resources/ExpandCollapse.js create mode 100644 docs/rts/umn/public_sys-resources/caution_3.0-en-us.png create mode 100644 docs/rts/umn/public_sys-resources/commonltr.css create mode 100644 docs/rts/umn/public_sys-resources/commonltr_print.css create mode 100644 docs/rts/umn/public_sys-resources/commonrtl.css create mode 100644 docs/rts/umn/public_sys-resources/danger_3.0-en-us.png create mode 100644 docs/rts/umn/public_sys-resources/delta.gif create mode 100644 docs/rts/umn/public_sys-resources/deltaend.gif create mode 100644 docs/rts/umn/public_sys-resources/icon-arrowdn.gif create mode 100644 docs/rts/umn/public_sys-resources/icon-arrowrt.gif create mode 100644 docs/rts/umn/public_sys-resources/icon-caution.gif create mode 100644 docs/rts/umn/public_sys-resources/icon-danger.gif create mode 100644 docs/rts/umn/public_sys-resources/icon-huawei.gif create mode 100644 docs/rts/umn/public_sys-resources/icon-note.gif create mode 100644 docs/rts/umn/public_sys-resources/icon-notice.gif create mode 100644 docs/rts/umn/public_sys-resources/icon-tip.gif create mode 100644 docs/rts/umn/public_sys-resources/icon-warning.gif create mode 100644 docs/rts/umn/public_sys-resources/note_3.0-en-us.png create mode 100644 docs/rts/umn/public_sys-resources/notice_3.0-en-us.png create mode 100644 docs/rts/umn/public_sys-resources/popup.js create mode 100644 docs/rts/umn/public_sys-resources/warning_3.0-en-us.png create mode 100644 docs/rts/umn/rts_01_0001.html create mode 100644 docs/rts/umn/rts_01_0003.html create mode 100644 docs/rts/umn/rts_01_0004.html create mode 100644 docs/rts/umn/rts_01_0006.html create mode 100644 docs/rts/umn/rts_01_0007.html create mode 100644 docs/rts/umn/rts_01_0008.html create mode 100644 docs/rts/umn/rts_02_0001.html create mode 100644 docs/rts/umn/rts_02_0002.html create mode 100644 docs/rts/umn/rts_02_0007.html create mode 100644 docs/rts/umn/rts_02_0008.html create mode 100644 docs/rts/umn/rts_02_0009.html create mode 100644 docs/rts/umn/rts_02_0010.html create mode 100644 docs/rts/umn/rts_02_0011.html create mode 100644 docs/rts/umn/rts_02_0012.html create mode 100644 docs/rts/umn/rts_02_0013.html create mode 100644 docs/rts/umn/rts_02_0014.html create mode 100644 docs/rts/umn/rts_02_0015.html create mode 100644 docs/rts/umn/rts_02_0016.html create mode 100644 docs/rts/umn/rts_02_0017.html create mode 100644 docs/rts/umn/rts_02_0018.html create mode 100644 docs/rts/umn/rts_02_0020.html create mode 100644 docs/rts/umn/rts_02_0021.html create mode 100644 docs/rts/umn/rts_02_0022.html create mode 100644 docs/rts/umn/rts_02_0023.html create mode 100644 docs/rts/umn/rts_02_0029.html create mode 100644 docs/rts/umn/rts_02_0030.html create mode 100644 docs/rts/umn/rts_02_0035.html create mode 100644 docs/rts/umn/rts_02_0036.html create mode 100644 docs/rts/umn/rts_02_0037.html create mode 100644 docs/rts/umn/rts_02_0046.html create mode 100644 docs/rts/umn/rts_02_0047.html create mode 100644 docs/rts/umn/rts_02_0048.html create mode 100644 docs/rts/umn/rts_02_0049.html create mode 100644 docs/rts/umn/rts_02_0050.html create mode 100644 docs/rts/umn/rts_02_0051.html create mode 100644 docs/rts/umn/rts_02_0052.html create mode 100644 docs/rts/umn/rts_02_0053.html create mode 100644 docs/rts/umn/rts_02_0054.html create mode 100644 docs/rts/umn/rts_02_0055.html create mode 100644 docs/rts/umn/rts_02_0056.html create mode 100644 docs/rts/umn/rts_02_0058.html create mode 100644 docs/rts/umn/rts_02_0061.html create mode 100644 docs/rts/umn/rts_02_0062.html create mode 100644 docs/rts/umn/rts_02_0063.html create mode 100644 docs/rts/umn/rts_02_0064.html create mode 100644 docs/rts/umn/rts_02_0065.html create mode 100644 docs/rts/umn/rts_02_0066.html create mode 100644 docs/rts/umn/rts_02_0067.html create mode 100644 docs/rts/umn/rts_02_0069.html create mode 100644 docs/rts/umn/rts_02_0070.html create mode 100644 docs/rts/umn/rts_02_0071.html create mode 100644 docs/rts/umn/rts_02_0072.html create mode 100644 docs/rts/umn/rts_02_0073.html create mode 100644 docs/rts/umn/rts_02_0074.html create mode 100644 docs/rts/umn/rts_02_0075.html create mode 100644 docs/rts/umn/rts_02_0076.html create mode 100644 docs/rts/umn/rts_02_0077.html create mode 100644 docs/rts/umn/rts_02_0078.html create mode 100644 docs/rts/umn/rts_02_0079.html create mode 100644 docs/rts/umn/rts_02_0080.html create mode 100644 docs/rts/umn/rts_02_0081.html create mode 100644 docs/rts/umn/rts_02_0082.html create mode 100644 docs/rts/umn/rts_02_0083.html create mode 100644 docs/rts/umn/rts_02_0084.html create mode 100644 docs/rts/umn/rts_02_0085.html create mode 100644 docs/rts/umn/rts_02_0086.html create mode 100644 docs/rts/umn/rts_02_0087.html create mode 100644 docs/rts/umn/rts_02_0088.html create mode 100644 docs/rts/umn/rts_02_0089.html create mode 100644 docs/rts/umn/rts_02_0090.html create mode 100644 docs/rts/umn/rts_02_0091.html create mode 100644 docs/rts/umn/rts_02_0092.html create mode 100644 docs/rts/umn/rts_02_0093.html create mode 100644 docs/rts/umn/rts_02_0108_0.html create mode 100644 docs/rts/umn/rts_02_0109_0.html create mode 100644 docs/rts/umn/rts_02_0110.html create mode 100644 docs/rts/umn/rts_02_0111.html create mode 100644 docs/rts/umn/rts_02_0112.html create mode 100644 docs/rts/umn/rts_02_0113.html create mode 100644 docs/rts/umn/rts_02_0114.html create mode 100644 docs/rts/umn/rts_02_0115.html create mode 100644 docs/rts/umn/rts_faq_0002.html create mode 100644 docs/rts/umn/rts_faq_0003.html create mode 100644 docs/rts/umn/rts_faq_0004.html diff --git a/docs/rts/umn/ALL_META.TXT.json b/docs/rts/umn/ALL_META.TXT.json new file mode 100644 index 000000000..8a864f700 --- /dev/null +++ b/docs/rts/umn/ALL_META.TXT.json @@ -0,0 +1,922 @@ +[ + { + "uri":"rts_01_0001.html", + "product_code":"rts", + "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_0039055697.html", + "product_code":"rts", + "code":"2", + "des":"Resource Template Service (RTS) helps you simplify cloud computing resource management and automate O&M. You can compile a template file and define a collection of cloud ", + "doc_type":"usermanual", + "kw":"RTS,Service Overview,User Guide", + "title":"RTS", + "githuburl":"" + }, + { + "uri":"rts_01_0003.html", + "product_code":"rts", + "code":"3", + "des":"RTS allows you to model and configure cloud computing resources in a unified way. With RTS, you only need to create a template that describes the required resources and d", + "doc_type":"usermanual", + "kw":"Advantages,Service Overview,User Guide", + "title":"Advantages", + "githuburl":"" + }, + { + "uri":"rts_01_0004.html", + "product_code":"rts", + "code":"4", + "des":"RTS supports 44 types of resources, including compute, storage, and network resources. Table 1 describes resource types supported by RTS. You can also log in to the RTS m", + "doc_type":"usermanual", + "kw":"Supported Resources,Service Overview,User Guide", + "title":"Supported Resources", + "githuburl":"" + }, + { + "uri":"rts_01_0006.html", + "product_code":"rts", + "code":"5", + "des":"RTS does not support snapshot-related APIs and the following operations: suspend, restore, discard, and adopt.The Availability Zone (AZ) attribute cannot be updated in a ", + "doc_type":"usermanual", + "kw":"Constraints,Service Overview,User Guide", + "title":"Constraints", + "githuburl":"" + }, + { + "uri":"rts_01_0007.html", + "product_code":"rts", + "code":"6", + "des":"The Heat client is a subproject of OpenStack Client, functioning as a command line client targeted for Heat. You can use this client to access cloud services by running c", + "doc_type":"usermanual", + "kw":"Heat Client,Service Overview,User Guide", + "title":"Heat Client", + "githuburl":"" + }, + { + "uri":"rts_01_0008.html", + "product_code":"rts", + "code":"7", + "des":"The cloud system provides two types of user permissions by default, user management and resource management.User management refers to management of users, user groups, an", + "doc_type":"usermanual", + "kw":"User Permissions,Service Overview,User Guide", + "title":"User Permissions", + "githuburl":"" + }, + { + "uri":"rts_02_0001.html", + "product_code":"rts", + "code":"8", + "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":"rts_02_0007.html", + "product_code":"rts", + "code":"9", + "des":"With RTS, you can orchestrate a stack that contains a collection of resources using a template and maintain these resources by managing stacks on the console. This sectio", + "doc_type":"usermanual", + "kw":"Creating Resources Using a Template (Using the Console),Getting Started,User Guide", + "title":"Creating Resources Using a Template (Using the Console)", + "githuburl":"" + }, + { + "uri":"rts_02_0002.html", + "product_code":"rts", + "code":"10", + "des":"After the Heat client is installed and configured, you can use this client to create an ECS.The required operations are as follows:Compile a Template: A template is a col", + "doc_type":"usermanual", + "kw":"Creating Resources Using a Template (Using the Heat Client),Getting Started,User Guide", + "title":"Creating Resources Using a Template (Using the Heat Client)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0162985073.html", + "product_code":"rts", + "code":"11", + "des":"RTS helps you create and configure a collection of resources using a template and makes it easy to manage these resources.To create and manage a resource stack, you need ", + "doc_type":"usermanual", + "kw":"Operation Guide,User Guide", + "title":"Operation Guide", + "githuburl":"" + }, + { + "uri":"rts_02_0017.html", + "product_code":"rts", + "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":"Stack Management", + "title":"Stack Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0068576463.html", + "product_code":"rts", + "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":"usermanual", + "kw":"Preparing a Template or a Template Package", + "title":"Preparing a Template or a Template Package", + "githuburl":"" + }, + { + "uri":"rts_02_0018.html", + "product_code":"rts", + "code":"14", + "des":"To perform operations on a stack using the Heat client, you only need to compile a template file.To perform operations on a stack using the RTS console, you need to not o", + "doc_type":"usermanual", + "kw":"Scenarios,Preparing a Template or a Template Package,User Guide", + "title":"Scenarios", + "githuburl":"" + }, + { + "uri":"rts_02_0020.html", + "product_code":"rts", + "code":"15", + "des":"You need to prepare a .zip package. For the package structure, see Figure 1.Resources DirectoryThis directory is used to store the files referenced by template files in t", + "doc_type":"usermanual", + "kw":"Template Package Structure,Preparing a Template or a Template Package,User Guide", + "title":"Template Package Structure", + "githuburl":"" + }, + { + "uri":"rts_02_0021.html", + "product_code":"rts", + "code":"16", + "des":"After you have prepared all template files and completed the required configuration, you can use compression software to package them into .zip files. The following is an", + "doc_type":"usermanual", + "kw":"Template File Packaging,Preparing a Template or a Template Package,User Guide", + "title":"Template File Packaging", + "githuburl":"" + }, + { + "uri":"rts_02_0022.html", + "product_code":"rts", + "code":"17", + "des":"The following are example template packages:https://obs.eu-de.otc.t-systems.com/obs-rts/samples/random.zip", + "doc_type":"usermanual", + "kw":"Example Template Packages,Preparing a Template or a Template Package,User Guide", + "title":"Example Template Packages", + "githuburl":"" + }, + { + "uri":"rts_02_0023.html", + "product_code":"rts", + "code":"18", + "des":"With RTS, you can create a collection of cloud resources using a template. These resources are defined as a stack. This section uses creating a random string as an exampl", + "doc_type":"usermanual", + "kw":"Creating a stack,Stack Management,User Guide", + "title":"Creating a stack", + "githuburl":"" + }, + { + "uri":"rts_02_0029.html", + "product_code":"rts", + "code":"19", + "des":"Log in to the management console.Click in the upper left corner to select the desired region and project.Under Management & Deployment, click Resource Template Service.I", + "doc_type":"usermanual", + "kw":"Viewing Details of a Stack,Stack Management,User Guide", + "title":"Viewing Details of a Stack", + "githuburl":"" + }, + { + "uri":"rts_02_0030.html", + "product_code":"rts", + "code":"20", + "des":"If the existing stack cannot meet your service requirements, you can use the update function to modify the stack. The procedure for updating a stack is the same as that f", + "doc_type":"usermanual", + "kw":"Updating a Stack,Stack Management,User Guide", + "title":"Updating a Stack", + "githuburl":"" + }, + { + "uri":"rts_02_0035.html", + "product_code":"rts", + "code":"21", + "des":"If you no longer use a stack, you can delete it.Log in to the management console.Click in the upper left corner to select the desired region and project.Under Management", + "doc_type":"usermanual", + "kw":"Deleting a Stack,Stack Management,User Guide", + "title":"Deleting a Stack", + "githuburl":"" + }, + { + "uri":"rts_02_0008.html", + "product_code":"rts", + "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":"usermanual", + "kw":"Template Syntax", + "title":"Template Syntax", + "githuburl":"" + }, + { + "uri":"rts_02_0009.html", + "product_code":"rts", + "code":"23", + "des":"Templates are blueprints for describing infrastructure and architecture and can be used to create stacks. The compiler defines resource requirements and configuration det", + "doc_type":"usermanual", + "kw":"Template Structure,Template Syntax,User Guide", + "title":"Template Structure", + "githuburl":"" + }, + { + "uri":"rts_02_0010.html", + "product_code":"rts", + "code":"24", + "des":"Theheat_template_version field indicates the template version. Each HOT template includes the heat_template_version field that specifies the template version. Different H", + "doc_type":"usermanual", + "kw":"Template Version,Template Syntax,User Guide", + "title":"Template Version", + "githuburl":"" + }, + { + "uri":"rts_02_0011.html", + "product_code":"rts", + "code":"25", + "des":"Template description is specified in the description field. This field is used to further describe resources that can be deployed using the current template. If the descr", + "doc_type":"usermanual", + "kw":"Template Description,Template Syntax,User Guide", + "title":"Template Description", + "githuburl":"" + }, + { + "uri":"rts_02_0012.html", + "product_code":"rts", + "code":"26", + "des":"Parameters are specified in the parameters field. Using parameters improves template flexibility and reusability. Some parameters in the template can be replaced as neede", + "doc_type":"usermanual", + "kw":"Parameters,Template Syntax,User Guide", + "title":"Parameters", + "githuburl":"" + }, + { + "uri":"rts_02_0013.html", + "product_code":"rts", + "code":"27", + "des":"Resources are specified in the resources field. This field includes user-defined resources (such as VMs, networks, and volumes) and dependencies between them. Each resour", + "doc_type":"usermanual", + "kw":"Resources,Template Syntax,User Guide", + "title":"Resources", + "githuburl":"" + }, + { + "uri":"rts_02_0014.html", + "product_code":"rts", + "code":"28", + "des":"Outputs are specified in the outputs field. This field is used to display the output of created resources. This field is optional. For example, the following code segment", + "doc_type":"usermanual", + "kw":"Outputs,Template Syntax,User Guide", + "title":"Outputs", + "githuburl":"" + }, + { + "uri":"rts_02_0015.html", + "product_code":"rts", + "code":"29", + "des":"Conditions are specified in the conditions field. This field indicates the conditions that must be met during stack creation and update. You can define one or more condit", + "doc_type":"usermanual", + "kw":"Conditions,Template Syntax,User Guide", + "title":"Conditions", + "githuburl":"" + }, + { + "uri":"rts_02_0016.html", + "product_code":"rts", + "code":"30", + "des":"Internal functions are used in a template to implement specific functions. For example, internal functions can be used to obtain external input parameters and attribute i", + "doc_type":"usermanual", + "kw":"Internal Function,Template Syntax,User Guide", + "title":"Internal Function", + "githuburl":"" + }, + { + "uri":"rts_02_0037.html", + "product_code":"rts", + "code":"31", + "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":"Example Templates", + "title":"Example Templates", + "githuburl":"" + }, + { + "uri":"rts_02_0108_0.html", + "product_code":"rts", + "code":"32", + "des":"This template is used to create an ECS.", + "doc_type":"usermanual", + "kw":"Creating an ECS,Example Templates,User Guide", + "title":"Creating an ECS", + "githuburl":"" + }, + { + "uri":"rts_02_0109_0.html", + "product_code":"rts", + "code":"33", + "des":"This template is used to create an ECS and bind an EIP to this ECS.", + "doc_type":"usermanual", + "kw":"Creating an ECS and Binding an EIP to the ECS,Example Templates,User Guide", + "title":"Creating an ECS and Binding an EIP to the ECS", + "githuburl":"" + }, + { + "uri":"rts_02_0110.html", + "product_code":"rts", + "code":"34", + "des":"This template is used to create an ECS and EVS disk and attach the EVS disk to the ECS.", + "doc_type":"usermanual", + "kw":"Creating an ECS with EVS Disks Mounted,Example Templates,User Guide", + "title":"Creating an ECS with EVS Disks Mounted", + "githuburl":"" + }, + { + "uri":"rts_02_0111.html", + "product_code":"rts", + "code":"35", + "des":"This template is used to create a group of ECSs.", + "doc_type":"usermanual", + "kw":"Creating an ECS Group,Example Templates,User Guide", + "title":"Creating an ECS Group", + "githuburl":"" + }, + { + "uri":"rts_02_0112.html", + "product_code":"rts", + "code":"36", + "des":"This template is used to create a security group and create an ECS in the security group.", + "doc_type":"usermanual", + "kw":"Creating an ECS in a Specified Security Group,Example Templates,User Guide", + "title":"Creating an ECS in a Specified Security Group", + "githuburl":"" + }, + { + "uri":"rts_02_0113.html", + "product_code":"rts", + "code":"37", + "des":"This template is used to perform the following operations:Create an AS group that contains 1 to 2 ECSs.Create a security group in which ECSs in the AS group are created.", + "doc_type":"usermanual", + "kw":"Creating an AS Group,Example Templates,User Guide", + "title":"Creating an AS Group", + "githuburl":"" + }, + { + "uri":"rts_02_0114.html", + "product_code":"rts", + "code":"38", + "des":"This template is used to create ECSs and a load balancer and add all ECSs to the load balancer.", + "doc_type":"usermanual", + "kw":"Creating a Load Balancer,Example Templates,User Guide", + "title":"Creating a Load Balancer", + "githuburl":"" + }, + { + "uri":"rts_02_0115.html", + "product_code":"rts", + "code":"39", + "des":"This template is used to create a VPC, a subnet, a route, and a route interface in the VPC.", + "doc_type":"usermanual", + "kw":"Creating Network Resources,Example Templates,User Guide", + "title":"Creating Network Resources", + "githuburl":"" + }, + { + "uri":"en-us_topic_0110305013.html", + "product_code":"rts", + "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":"Auditing", + "title":"Auditing", + "githuburl":"" + }, + { + "uri":"en-us_topic_0110305014.html", + "product_code":"rts", + "code":"41", + "des":"Table 1 lists the RTS operations that will be recorded by CTS.", + "doc_type":"usermanual", + "kw":"Key Operations Recorded by CTS,Auditing,User Guide", + "title":"Key Operations Recorded by CTS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0110305015.html", + "product_code":"rts", + "code":"42", + "des":"Log in to the management console.Click in the upper left corner to select a region and a project.Click Service List and choose Management & Deployment > Cloud Trace Serv", + "doc_type":"usermanual", + "kw":"Viewing CTS Traces,Auditing,User Guide", + "title":"Viewing CTS Traces", + "githuburl":"" + }, + { + "uri":"rts_02_0036.html", + "product_code":"rts", + "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":"Resource Type Reference", + "title":"Resource Type Reference", + "githuburl":"" + }, + { + "uri":"rts_02_0046.html", + "product_code":"rts", + "code":"44", + "des":"A resource that implements Cinder volumes.Cinder volume is a storage in the form of block devices. It can be used, for example, for providing storage to instance. Volume ", + "doc_type":"usermanual", + "kw":"OS::Cinder::Volume,Resource Type Reference,User Guide", + "title":"OS::Cinder::Volume", + "githuburl":"" + }, + { + "uri":"rts_02_0047.html", + "product_code":"rts", + "code":"45", + "des":"Resource for associating volume to instance.Resource for associating existing volume to instance. Also, the location where the volume is exposed on the instance can be sp", + "doc_type":"usermanual", + "kw":"OS::Cinder::VolumeAttachment,Resource Type Reference,User Guide", + "title":"OS::Cinder::VolumeAttachment", + "githuburl":"" + }, + { + "uri":"rts_02_0048.html", + "product_code":"rts", + "code":"46", + "des":"An autoscaling group that can scale arbitrary resources.An autoscaling group allows the creation of a desired count of similar resources, which are defined with the resou", + "doc_type":"usermanual", + "kw":"OS::Heat::AutoScalingGroup,Resource Type Reference,User Guide", + "title":"OS::Heat::AutoScalingGroup", + "githuburl":"" + }, + { + "uri":"rts_02_0049.html", + "product_code":"rts", + "code":"47", + "des":"A configuration resource for representing cloud-init cloud-config.This resource allows cloud-config YAML to be defined and stored by the config API. Any intrinsic functio", + "doc_type":"usermanual", + "kw":"OS::Heat::CloudConfig,Resource Type Reference,User Guide", + "title":"OS::Heat::CloudConfig", + "githuburl":"" + }, + { + "uri":"rts_02_0050.html", + "product_code":"rts", + "code":"48", + "des":"Assembles a collection of software configurations as a multi-part mime.Parts in the message can be populated with inline configuration or references to other config resou", + "doc_type":"usermanual", + "kw":"OS::Heat::MultipartMime,Resource Type Reference,User Guide", + "title":"OS::Heat::MultipartMime", + "githuburl":"" + }, + { + "uri":"rts_02_0051.html", + "product_code":"rts", + "code":"49", + "des":"A resource which generates a random string.This is useful for configuring passwords and secrets on services. Random string can be generated from specified character seque", + "doc_type":"usermanual", + "kw":"OS::Heat::RandomString,Resource Type Reference,User Guide", + "title":"OS::Heat::RandomString", + "githuburl":"" + }, + { + "uri":"rts_02_0052.html", + "product_code":"rts", + "code":"50", + "des":"Creates one or more identically configured nested resources.In addition to the refs attribute, this resource implements synthetic attributes that mirror those of the reso", + "doc_type":"usermanual", + "kw":"OS::Heat::ResourceGroup,Resource Type Reference,User Guide", + "title":"OS::Heat::ResourceGroup", + "githuburl":"" + }, + { + "uri":"rts_02_0053.html", + "product_code":"rts", + "code":"51", + "des":"A resource to manage scaling of OS::Heat::AutoScalingGroup.Resource to manage scaling for OS::Heat::AutoScalingGroup, i.e. define which metric should be scaled and scalin", + "doc_type":"usermanual", + "kw":"OS::Heat::ScalingPolicy,Resource Type Reference,User Guide", + "title":"OS::Heat::ScalingPolicy", + "githuburl":"" + }, + { + "uri":"rts_02_0054.html", + "product_code":"rts", + "code":"52", + "des":"A resource for describing and storing a software component.This resource is similar to OS::Heat::SoftwareConfig. In contrast to SoftwareConfig which allows for storing on", + "doc_type":"usermanual", + "kw":"OS::Heat::SoftwareComponent,Resource Type Reference,User Guide", + "title":"OS::Heat::SoftwareComponent", + "githuburl":"" + }, + { + "uri":"rts_02_0055.html", + "product_code":"rts", + "code":"53", + "des":"A resource for describing and storing software configuration.The software_configs API which backs this resource creates immutable configs, so any change to the template r", + "doc_type":"usermanual", + "kw":"OS::Heat::SoftwareConfig,Resource Type Reference,User Guide", + "title":"OS::Heat::SoftwareConfig", + "githuburl":"" + }, + { + "uri":"rts_02_0056.html", + "product_code":"rts", + "code":"54", + "des":"This resource associates a server with some configuration.The configuration is to be deployed to that server.A deployment allows input values to be specified which map to", + "doc_type":"usermanual", + "kw":"OS::Heat::SoftwareDeployment,Resource Type Reference,User Guide", + "title":"OS::Heat::SoftwareDeployment", + "githuburl":"" + }, + { + "uri":"rts_02_0058.html", + "product_code":"rts", + "code":"55", + "des":"A resource which has same logic with OS::Heat::SoftwareConfig.This resource is like OS::Heat::SoftwareConfig except that the config property is represented by a Map rathe", + "doc_type":"usermanual", + "kw":"OS::Heat::StructuredConfig,Resource Type Reference,User Guide", + "title":"OS::Heat::StructuredConfig", + "githuburl":"" + }, + { + "uri":"rts_02_0061.html", + "product_code":"rts", + "code":"56", + "des":"Resource for handling signals received by WaitConditionHandle.Resource takes WaitConditionHandle and starts to create. Resource is in CREATE_IN_PROGRESS status until Wait", + "doc_type":"usermanual", + "kw":"OS::Heat::WaitCondition,Resource Type Reference,User Guide", + "title":"OS::Heat::WaitCondition", + "githuburl":"" + }, + { + "uri":"rts_02_0062.html", + "product_code":"rts", + "code":"57", + "des":"Resource for managing instance signals.The main points of this resource are:have no dependencies (so the instance can reference it).create credentials to allow for signal", + "doc_type":"usermanual", + "kw":"OS::Heat::WaitConditionHandle,Resource Type Reference,User Guide", + "title":"OS::Heat::WaitConditionHandle", + "githuburl":"" + }, + { + "uri":"rts_02_0063.html", + "product_code":"rts", + "code":"58", + "des":"A resource for managing Neutron floating IP addresses.Floating IP addresses can change their association between routers by action of the user. One of the most common use", + "doc_type":"usermanual", + "kw":"OS::Neutron::FloatingIP,Resource Type Reference,User Guide", + "title":"OS::Neutron::FloatingIP", + "githuburl":"" + }, + { + "uri":"rts_02_0064.html", + "product_code":"rts", + "code":"59", + "des":"A resource for associating floating IP addresses and ports.This resource allows associating a floating IP to a port with at least one IP address to associate with this fl", + "doc_type":"usermanual", + "kw":"OS::Neutron::FloatingIPAssociation,Resource Type Reference,User Guide", + "title":"OS::Neutron::FloatingIPAssociation", + "githuburl":"" + }, + { + "uri":"rts_02_0065.html", + "product_code":"rts", + "code":"60", + "des":"A resource for managing Neutron net.A network is a virtual isolated layer-2 broadcast domain which is typically reserved to the tenant who created it, unless the network ", + "doc_type":"usermanual", + "kw":"OS::Neutron::Net,Resource Type Reference,User Guide", + "title":"OS::Neutron::Net", + "githuburl":"" + }, + { + "uri":"rts_02_0066.html", + "product_code":"rts", + "code":"61", + "des":"A resource for managing Neutron ports.A port represents a virtual switch port on a logical network switch. Virtual instances attach their interfaces into ports. The logic", + "doc_type":"usermanual", + "kw":"OS::Neutron::Port,Resource Type Reference,User Guide", + "title":"OS::Neutron::Port", + "githuburl":"" + }, + { + "uri":"rts_02_0067.html", + "product_code":"rts", + "code":"62", + "des":"A resource that implements Neutron router.Router is a physical or virtual network device that passes network traffic between different networks.", + "doc_type":"usermanual", + "kw":"OS::Neutron::Router,Resource Type Reference,User Guide", + "title":"OS::Neutron::Router", + "githuburl":"" + }, + { + "uri":"rts_02_0069.html", + "product_code":"rts", + "code":"63", + "des":"A resource for managing Neutron router interfaces.Router interfaces associate routers with existing subnets or ports.", + "doc_type":"usermanual", + "kw":"OS::Neutron::RouterInterface,Resource Type Reference,User Guide", + "title":"OS::Neutron::RouterInterface", + "githuburl":"" + }, + { + "uri":"rts_02_0070.html", + "product_code":"rts", + "code":"64", + "des":"A resource for managing Neutron security groups.Security groups are sets of IP filter rules that are applied to an instances networking. They are project specific, and pr", + "doc_type":"usermanual", + "kw":"OS::Neutron::SecurityGroup,Resource Type Reference,User Guide", + "title":"OS::Neutron::SecurityGroup", + "githuburl":"" + }, + { + "uri":"rts_02_0071.html", + "product_code":"rts", + "code":"65", + "des":"The resource is not allowed to be updated.A resource for managing Neutron subnets.A subnet represents an IP address block that can be used for assigning IP addresses to v", + "doc_type":"usermanual", + "kw":"OS::Neutron::Subnet,Resource Type Reference,User Guide", + "title":"OS::Neutron::Subnet", + "githuburl":"" + }, + { + "uri":"rts_02_0072.html", + "product_code":"rts", + "code":"66", + "des":"A resource for creating Nova key pairs.A keypair is an SSH key that can be injected into a server on launch.Note that if a new key is generated setting save_private_key t", + "doc_type":"usermanual", + "kw":"OS::Nova::KeyPair,Resource Type Reference,User Guide", + "title":"OS::Nova::KeyPair", + "githuburl":"" + }, + { + "uri":"rts_02_0073.html", + "product_code":"rts", + "code":"67", + "des":"A resource for managing Nova instances.A Server resource manages the running virtual machine instance within an OpenStack cloud.", + "doc_type":"usermanual", + "kw":"OS::Nova::Server,Resource Type Reference,User Guide", + "title":"OS::Nova::Server", + "githuburl":"" + }, + { + "uri":"rts_02_0074.html", + "product_code":"rts", + "code":"68", + "des":"A resource for managing a Nova server group.Server groups allow you to make sure instances are on the same hypervisor host or on a different one.", + "doc_type":"usermanual", + "kw":"OS::Nova::ServerGroup,Resource Type Reference,User Guide", + "title":"OS::Nova::ServerGroup", + "githuburl":"" + }, + { + "uri":"rts_02_0075.html", + "product_code":"rts", + "code":"69", + "des":"A resource for managing autoscaling configuration.", + "doc_type":"usermanual", + "kw":"OSE::AS::ScalingConfig,Resource Type Reference,User Guide", + "title":"OSE::AS::ScalingConfig", + "githuburl":"" + }, + { + "uri":"rts_02_0076.html", + "product_code":"rts", + "code":"70", + "des":"A resource for managing autoscaling group.", + "doc_type":"usermanual", + "kw":"OSE::AS::ScalingGroup,Resource Type Reference,User Guide", + "title":"OSE::AS::ScalingGroup", + "githuburl":"" + }, + { + "uri":"rts_02_0077.html", + "product_code":"rts", + "code":"71", + "des":"A resource for managing autoscaling policy.", + "doc_type":"usermanual", + "kw":"OSE::AS::ScalingPolicy,Resource Type Reference,User Guide", + "title":"OSE::AS::ScalingPolicy", + "githuburl":"" + }, + { + "uri":"rts_02_0078.html", + "product_code":"rts", + "code":"72", + "des":"A resource of CES.", + "doc_type":"usermanual", + "kw":"OSE::CES::Alarm,Resource Type Reference,User Guide", + "title":"OSE::CES::Alarm", + "githuburl":"" + }, + { + "uri":"rts_02_0079.html", + "product_code":"rts", + "code":"73", + "des":"A resource for ELB Loadbalancer.In later version, the API for using the LBaaS v2 load balancers will be provided, and you can create native LBaaS v2 load balancers. Howev", + "doc_type":"usermanual", + "kw":"OSE::ELB::LoadBalancer,Resource Type Reference,User Guide", + "title":"OSE::ELB::LoadBalancer", + "githuburl":"" + }, + { + "uri":"rts_02_0080.html", + "product_code":"rts", + "code":"74", + "des":"A resource for ELB Listener.", + "doc_type":"usermanual", + "kw":"OSE::ELB::Listener,Resource Type Reference,User Guide", + "title":"OSE::ELB::Listener", + "githuburl":"" + }, + { + "uri":"rts_02_0081.html", + "product_code":"rts", + "code":"75", + "des":"A resource for ELB Health Check.You must configure health checks for load balancers.", + "doc_type":"usermanual", + "kw":"OSE::ELB::HealthCheck,Resource Type Reference,User Guide", + "title":"OSE::ELB::HealthCheck", + "githuburl":"" + }, + { + "uri":"rts_02_0082.html", + "product_code":"rts", + "code":"76", + "des":"A resource for member.", + "doc_type":"usermanual", + "kw":"OSE::ELB::Member,Resource Type Reference,User Guide", + "title":"OSE::ELB::Member", + "githuburl":"" + }, + { + "uri":"rts_02_0083.html", + "product_code":"rts", + "code":"77", + "des":"A resource for certificate.", + "doc_type":"usermanual", + "kw":"OSE::ELB::Certificate,Resource Type Reference,User Guide", + "title":"OSE::ELB::Certificate", + "githuburl":"" + }, + { + "uri":"rts_02_0084.html", + "product_code":"rts", + "code":"78", + "des":"A resource to handle load balancer health monitors.This resource creates and manages Neutron LBaaS v2 healthmonitors, which watches status of the load balanced servers.", + "doc_type":"usermanual", + "kw":"OS::Neutron::LBaaS::HealthMonitor,Resource Type Reference,User Guide", + "title":"OS::Neutron::LBaaS::HealthMonitor", + "githuburl":"" + }, + { + "uri":"rts_02_0085.html", + "product_code":"rts", + "code":"79", + "des":"A resource for managing LBaaS v2 Listeners.This resource creates and manages Neutron LBaaS v2 Listeners, which represent a listening endpoint for the vip.", + "doc_type":"usermanual", + "kw":"OS::Neutron::LBaaS::Listener,Resource Type Reference,User Guide", + "title":"OS::Neutron::LBaaS::Listener", + "githuburl":"" + }, + { + "uri":"rts_02_0086.html", + "product_code":"rts", + "code":"80", + "des":"A resource for creating LBaaS v2 Load Balancers.This resource creates and manages Neutron LBaaS v2 Load Balancers, which allows traffic to be directed between servers.", + "doc_type":"usermanual", + "kw":"OS::Neutron::LBaaS::LoadBalancer,Resource Type Reference,User Guide", + "title":"OS::Neutron::LBaaS::LoadBalancer", + "githuburl":"" + }, + { + "uri":"rts_02_0087.html", + "product_code":"rts", + "code":"81", + "des":"The resource is not allowed to be updated.A resource for managing LBaaS v2 Pools.This resources manages Neutron-LBaaS v2 Pools, which represent a group of nodes. Pools de", + "doc_type":"usermanual", + "kw":"OS::Neutron::LBaaS::Pool,Resource Type Reference,User Guide", + "title":"OS::Neutron::LBaaS::Pool", + "githuburl":"" + }, + { + "uri":"rts_02_0088.html", + "product_code":"rts", + "code":"82", + "des":"A resource for managing LBaaS v2 Pool Members.A pool member represents a single backend node.", + "doc_type":"usermanual", + "kw":"OS::Neutron::LBaaS::PoolMember,Resource Type Reference,User Guide", + "title":"OS::Neutron::LBaaS::PoolMember", + "githuburl":"" + }, + { + "uri":"rts_02_0089.html", + "product_code":"rts", + "code":"83", + "des":"A resource for creating a relational database (Relational Database Service) instances.A relational database service is a reliable, scalable, and easy-to-manage web servic", + "doc_type":"usermanual", + "kw":"OSE::RDS::Instance,Resource Type Reference,User Guide", + "title":"OSE::RDS::Instance", + "githuburl":"" + }, + { + "uri":"rts_02_0090.html", + "product_code":"rts", + "code":"84", + "des":"A resource for managing Virtual Private Cloud (VPC) resourcesA VPC can be used to build an isolated, user-configured, and managed virtual network environment for your ECS", + "doc_type":"usermanual", + "kw":"OSE::VPC::Vpc,Resource Type Reference,User Guide", + "title":"OSE::VPC::Vpc", + "githuburl":"" + }, + { + "uri":"rts_02_0091.html", + "product_code":"rts", + "code":"85", + "des":"A resource for managing subnets", + "doc_type":"usermanual", + "kw":"OSE::VPC::Subnet,Resource Type Reference,User Guide", + "title":"OSE::VPC::Subnet", + "githuburl":"" + }, + { + "uri":"rts_02_0092.html", + "product_code":"rts", + "code":"86", + "des":"A resource for creating file sharing resourcesScalable File Service (SFS) provides users with a fully hosted shared file storage, which can be scaled to PB scale, providi", + "doc_type":"usermanual", + "kw":"OSE::SFS::Share,Resource Type Reference,User Guide", + "title":"OSE::SFS::Share", + "githuburl":"" + }, + { + "uri":"rts_02_0093.html", + "product_code":"rts", + "code":"87", + "des":"A resource for creating file sharing access rules", + "doc_type":"usermanual", + "kw":"OSE::SFS::ShareAccessRule,Resource Type Reference,User Guide", + "title":"OSE::SFS::ShareAccessRule", + "githuburl":"" + }, + { + "uri":"en-us_topic_0078604095.html", + "product_code":"rts", + "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":"FAQ", + "title":"FAQ", + "githuburl":"" + }, + { + "uri":"rts_faq_0003.html", + "product_code":"rts", + "code":"89", + "des":"If you cannot delete a stack, the reason is that the stack is in operation. If the stack is being created, updated, or otherwise manipulated, the stack cannot be deleted ", + "doc_type":"usermanual", + "kw":"What's the Reason for the Failure to Delete the Stack?,FAQ,User Guide", + "title":"What's the Reason for the Failure to Delete the Stack?", + "githuburl":"" + }, + { + "uri":"rts_faq_0002.html", + "product_code":"rts", + "code":"90", + "des":"The router ID cannot be found on the network console when you create a VPC stack using a template.RTS uses the localized OpenStack network model, including routers, netwo", + "doc_type":"usermanual", + "kw":"How Are Router Resources in the Native OpenStack Mapped to VPC Resources on the Network Console?,FAQ", + "title":"How Are Router Resources in the Native OpenStack Mapped to VPC Resources on the Network Console?", + "githuburl":"" + }, + { + "uri":"rts_faq_0004.html", + "product_code":"rts", + "code":"91", + "des":"Log in to the management console.Google Chrome is recommended.Google Chrome is recommended.Choose Database > Relational Database Service.In the upper right corner of the ", + "doc_type":"usermanual", + "kw":"How to Obtain the flavor Value of Resource OSE::RDS::Instance?,FAQ,User Guide", + "title":"How to Obtain the flavor Value of Resource OSE::RDS::Instance?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0130750896.html", + "product_code":"rts", + "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":"Change History,User Guide", + "title":"Change History", + "githuburl":"" + } +] \ No newline at end of file diff --git a/docs/rts/umn/CLASS.TXT.json b/docs/rts/umn/CLASS.TXT.json new file mode 100644 index 000000000..c8abff471 --- /dev/null +++ b/docs/rts/umn/CLASS.TXT.json @@ -0,0 +1,830 @@ +[ + { + "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":"rts", + "title":"Service Overview", + "uri":"rts_01_0001.html", + "doc_type":"usermanual", + "p_code":"", + "code":"1" + }, + { + "desc":"Resource Template Service (RTS) helps you simplify cloud computing resource management and automate O&M. You can compile a template file and define a collection of cloud ", + "product_code":"rts", + "title":"RTS", + "uri":"en-us_topic_0039055697.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"2" + }, + { + "desc":"RTS allows you to model and configure cloud computing resources in a unified way. With RTS, you only need to create a template that describes the required resources and d", + "product_code":"rts", + "title":"Advantages", + "uri":"rts_01_0003.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"3" + }, + { + "desc":"RTS supports 44 types of resources, including compute, storage, and network resources. Table 1 describes resource types supported by RTS. You can also log in to the RTS m", + "product_code":"rts", + "title":"Supported Resources", + "uri":"rts_01_0004.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"4" + }, + { + "desc":"RTS does not support snapshot-related APIs and the following operations: suspend, restore, discard, and adopt.The Availability Zone (AZ) attribute cannot be updated in a ", + "product_code":"rts", + "title":"Constraints", + "uri":"rts_01_0006.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"5" + }, + { + "desc":"The Heat client is a subproject of OpenStack Client, functioning as a command line client targeted for Heat. You can use this client to access cloud services by running c", + "product_code":"rts", + "title":"Heat Client", + "uri":"rts_01_0007.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"6" + }, + { + "desc":"The cloud system provides two types of user permissions by default, user management and resource management.User management refers to management of users, user groups, an", + "product_code":"rts", + "title":"User Permissions", + "uri":"rts_01_0008.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":"rts", + "title":"Getting Started", + "uri":"rts_02_0001.html", + "doc_type":"usermanual", + "p_code":"", + "code":"8" + }, + { + "desc":"With RTS, you can orchestrate a stack that contains a collection of resources using a template and maintain these resources by managing stacks on the console. This sectio", + "product_code":"rts", + "title":"Creating Resources Using a Template (Using the Console)", + "uri":"rts_02_0007.html", + "doc_type":"usermanual", + "p_code":"8", + "code":"9" + }, + { + "desc":"After the Heat client is installed and configured, you can use this client to create an ECS.The required operations are as follows:Compile a Template: A template is a col", + "product_code":"rts", + "title":"Creating Resources Using a Template (Using the Heat Client)", + "uri":"rts_02_0002.html", + "doc_type":"usermanual", + "p_code":"8", + "code":"10" + }, + { + "desc":"RTS helps you create and configure a collection of resources using a template and makes it easy to manage these resources.To create and manage a resource stack, you need ", + "product_code":"rts", + "title":"Operation Guide", + "uri":"en-us_topic_0162985073.html", + "doc_type":"usermanual", + "p_code":"", + "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":"rts", + "title":"Stack Management", + "uri":"rts_02_0017.html", + "doc_type":"usermanual", + "p_code":"", + "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":"rts", + "title":"Preparing a Template or a Template Package", + "uri":"en-us_topic_0068576463.html", + "doc_type":"usermanual", + "p_code":"12", + "code":"13" + }, + { + "desc":"To perform operations on a stack using the Heat client, you only need to compile a template file.To perform operations on a stack using the RTS console, you need to not o", + "product_code":"rts", + "title":"Scenarios", + "uri":"rts_02_0018.html", + "doc_type":"usermanual", + "p_code":"13", + "code":"14" + }, + { + "desc":"You need to prepare a .zip package. For the package structure, see Figure 1.Resources DirectoryThis directory is used to store the files referenced by template files in t", + "product_code":"rts", + "title":"Template Package Structure", + "uri":"rts_02_0020.html", + "doc_type":"usermanual", + "p_code":"13", + "code":"15" + }, + { + "desc":"After you have prepared all template files and completed the required configuration, you can use compression software to package them into .zip files. The following is an", + "product_code":"rts", + "title":"Template File Packaging", + "uri":"rts_02_0021.html", + "doc_type":"usermanual", + "p_code":"13", + "code":"16" + }, + { + "desc":"The following are example template packages:https://obs.eu-de.otc.t-systems.com/obs-rts/samples/random.zip", + "product_code":"rts", + "title":"Example Template Packages", + "uri":"rts_02_0022.html", + "doc_type":"usermanual", + "p_code":"13", + "code":"17" + }, + { + "desc":"With RTS, you can create a collection of cloud resources using a template. These resources are defined as a stack. This section uses creating a random string as an exampl", + "product_code":"rts", + "title":"Creating a stack", + "uri":"rts_02_0023.html", + "doc_type":"usermanual", + "p_code":"12", + "code":"18" + }, + { + "desc":"Log in to the management console.Click in the upper left corner to select the desired region and project.Under Management & Deployment, click Resource Template Service.I", + "product_code":"rts", + "title":"Viewing Details of a Stack", + "uri":"rts_02_0029.html", + "doc_type":"usermanual", + "p_code":"12", + "code":"19" + }, + { + "desc":"If the existing stack cannot meet your service requirements, you can use the update function to modify the stack. The procedure for updating a stack is the same as that f", + "product_code":"rts", + "title":"Updating a Stack", + "uri":"rts_02_0030.html", + "doc_type":"usermanual", + "p_code":"12", + "code":"20" + }, + { + "desc":"If you no longer use a stack, you can delete it.Log in to the management console.Click in the upper left corner to select the desired region and project.Under Management", + "product_code":"rts", + "title":"Deleting a Stack", + "uri":"rts_02_0035.html", + "doc_type":"usermanual", + "p_code":"12", + "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":"rts", + "title":"Template Syntax", + "uri":"rts_02_0008.html", + "doc_type":"usermanual", + "p_code":"", + "code":"22" + }, + { + "desc":"Templates are blueprints for describing infrastructure and architecture and can be used to create stacks. The compiler defines resource requirements and configuration det", + "product_code":"rts", + "title":"Template Structure", + "uri":"rts_02_0009.html", + "doc_type":"usermanual", + "p_code":"22", + "code":"23" + }, + { + "desc":"Theheat_template_version field indicates the template version. Each HOT template includes the heat_template_version field that specifies the template version. Different H", + "product_code":"rts", + "title":"Template Version", + "uri":"rts_02_0010.html", + "doc_type":"usermanual", + "p_code":"22", + "code":"24" + }, + { + "desc":"Template description is specified in the description field. This field is used to further describe resources that can be deployed using the current template. If the descr", + "product_code":"rts", + "title":"Template Description", + "uri":"rts_02_0011.html", + "doc_type":"usermanual", + "p_code":"22", + "code":"25" + }, + { + "desc":"Parameters are specified in the parameters field. Using parameters improves template flexibility and reusability. Some parameters in the template can be replaced as neede", + "product_code":"rts", + "title":"Parameters", + "uri":"rts_02_0012.html", + "doc_type":"usermanual", + "p_code":"22", + "code":"26" + }, + { + "desc":"Resources are specified in the resources field. This field includes user-defined resources (such as VMs, networks, and volumes) and dependencies between them. Each resour", + "product_code":"rts", + "title":"Resources", + "uri":"rts_02_0013.html", + "doc_type":"usermanual", + "p_code":"22", + "code":"27" + }, + { + "desc":"Outputs are specified in the outputs field. This field is used to display the output of created resources. This field is optional. For example, the following code segment", + "product_code":"rts", + "title":"Outputs", + "uri":"rts_02_0014.html", + "doc_type":"usermanual", + "p_code":"22", + "code":"28" + }, + { + "desc":"Conditions are specified in the conditions field. This field indicates the conditions that must be met during stack creation and update. You can define one or more condit", + "product_code":"rts", + "title":"Conditions", + "uri":"rts_02_0015.html", + "doc_type":"usermanual", + "p_code":"22", + "code":"29" + }, + { + "desc":"Internal functions are used in a template to implement specific functions. For example, internal functions can be used to obtain external input parameters and attribute i", + "product_code":"rts", + "title":"Internal Function", + "uri":"rts_02_0016.html", + "doc_type":"usermanual", + "p_code":"22", + "code":"30" + }, + { + "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":"rts", + "title":"Example Templates", + "uri":"rts_02_0037.html", + "doc_type":"usermanual", + "p_code":"", + "code":"31" + }, + { + "desc":"This template is used to create an ECS.", + "product_code":"rts", + "title":"Creating an ECS", + "uri":"rts_02_0108_0.html", + "doc_type":"usermanual", + "p_code":"31", + "code":"32" + }, + { + "desc":"This template is used to create an ECS and bind an EIP to this ECS.", + "product_code":"rts", + "title":"Creating an ECS and Binding an EIP to the ECS", + "uri":"rts_02_0109_0.html", + "doc_type":"usermanual", + "p_code":"31", + "code":"33" + }, + { + "desc":"This template is used to create an ECS and EVS disk and attach the EVS disk to the ECS.", + "product_code":"rts", + "title":"Creating an ECS with EVS Disks Mounted", + "uri":"rts_02_0110.html", + "doc_type":"usermanual", + "p_code":"31", + "code":"34" + }, + { + "desc":"This template is used to create a group of ECSs.", + "product_code":"rts", + "title":"Creating an ECS Group", + "uri":"rts_02_0111.html", + "doc_type":"usermanual", + "p_code":"31", + "code":"35" + }, + { + "desc":"This template is used to create a security group and create an ECS in the security group.", + "product_code":"rts", + "title":"Creating an ECS in a Specified Security Group", + "uri":"rts_02_0112.html", + "doc_type":"usermanual", + "p_code":"31", + "code":"36" + }, + { + "desc":"This template is used to perform the following operations:Create an AS group that contains 1 to 2 ECSs.Create a security group in which ECSs in the AS group are created.", + "product_code":"rts", + "title":"Creating an AS Group", + "uri":"rts_02_0113.html", + "doc_type":"usermanual", + "p_code":"31", + "code":"37" + }, + { + "desc":"This template is used to create ECSs and a load balancer and add all ECSs to the load balancer.", + "product_code":"rts", + "title":"Creating a Load Balancer", + "uri":"rts_02_0114.html", + "doc_type":"usermanual", + "p_code":"31", + "code":"38" + }, + { + "desc":"This template is used to create a VPC, a subnet, a route, and a route interface in the VPC.", + "product_code":"rts", + "title":"Creating Network Resources", + "uri":"rts_02_0115.html", + "doc_type":"usermanual", + "p_code":"31", + "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":"rts", + "title":"Auditing", + "uri":"en-us_topic_0110305013.html", + "doc_type":"usermanual", + "p_code":"", + "code":"40" + }, + { + "desc":"Table 1 lists the RTS operations that will be recorded by CTS.", + "product_code":"rts", + "title":"Key Operations Recorded by CTS", + "uri":"en-us_topic_0110305014.html", + "doc_type":"usermanual", + "p_code":"40", + "code":"41" + }, + { + "desc":"Log in to the management console.Click in the upper left corner to select a region and a project.Click Service List and choose Management & Deployment > Cloud Trace Serv", + "product_code":"rts", + "title":"Viewing CTS Traces", + "uri":"en-us_topic_0110305015.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":"rts", + "title":"Resource Type Reference", + "uri":"rts_02_0036.html", + "doc_type":"usermanual", + "p_code":"", + "code":"43" + }, + { + "desc":"A resource that implements Cinder volumes.Cinder volume is a storage in the form of block devices. It can be used, for example, for providing storage to instance. Volume ", + "product_code":"rts", + "title":"OS::Cinder::Volume", + "uri":"rts_02_0046.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"44" + }, + { + "desc":"Resource for associating volume to instance.Resource for associating existing volume to instance. Also, the location where the volume is exposed on the instance can be sp", + "product_code":"rts", + "title":"OS::Cinder::VolumeAttachment", + "uri":"rts_02_0047.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"45" + }, + { + "desc":"An autoscaling group that can scale arbitrary resources.An autoscaling group allows the creation of a desired count of similar resources, which are defined with the resou", + "product_code":"rts", + "title":"OS::Heat::AutoScalingGroup", + "uri":"rts_02_0048.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"46" + }, + { + "desc":"A configuration resource for representing cloud-init cloud-config.This resource allows cloud-config YAML to be defined and stored by the config API. Any intrinsic functio", + "product_code":"rts", + "title":"OS::Heat::CloudConfig", + "uri":"rts_02_0049.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"47" + }, + { + "desc":"Assembles a collection of software configurations as a multi-part mime.Parts in the message can be populated with inline configuration or references to other config resou", + "product_code":"rts", + "title":"OS::Heat::MultipartMime", + "uri":"rts_02_0050.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"48" + }, + { + "desc":"A resource which generates a random string.This is useful for configuring passwords and secrets on services. Random string can be generated from specified character seque", + "product_code":"rts", + "title":"OS::Heat::RandomString", + "uri":"rts_02_0051.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"49" + }, + { + "desc":"Creates one or more identically configured nested resources.In addition to the refs attribute, this resource implements synthetic attributes that mirror those of the reso", + "product_code":"rts", + "title":"OS::Heat::ResourceGroup", + "uri":"rts_02_0052.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"50" + }, + { + "desc":"A resource to manage scaling of OS::Heat::AutoScalingGroup.Resource to manage scaling for OS::Heat::AutoScalingGroup, i.e. define which metric should be scaled and scalin", + "product_code":"rts", + "title":"OS::Heat::ScalingPolicy", + "uri":"rts_02_0053.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"51" + }, + { + "desc":"A resource for describing and storing a software component.This resource is similar to OS::Heat::SoftwareConfig. In contrast to SoftwareConfig which allows for storing on", + "product_code":"rts", + "title":"OS::Heat::SoftwareComponent", + "uri":"rts_02_0054.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"52" + }, + { + "desc":"A resource for describing and storing software configuration.The software_configs API which backs this resource creates immutable configs, so any change to the template r", + "product_code":"rts", + "title":"OS::Heat::SoftwareConfig", + "uri":"rts_02_0055.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"53" + }, + { + "desc":"This resource associates a server with some configuration.The configuration is to be deployed to that server.A deployment allows input values to be specified which map to", + "product_code":"rts", + "title":"OS::Heat::SoftwareDeployment", + "uri":"rts_02_0056.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"54" + }, + { + "desc":"A resource which has same logic with OS::Heat::SoftwareConfig.This resource is like OS::Heat::SoftwareConfig except that the config property is represented by a Map rathe", + "product_code":"rts", + "title":"OS::Heat::StructuredConfig", + "uri":"rts_02_0058.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"55" + }, + { + "desc":"Resource for handling signals received by WaitConditionHandle.Resource takes WaitConditionHandle and starts to create. Resource is in CREATE_IN_PROGRESS status until Wait", + "product_code":"rts", + "title":"OS::Heat::WaitCondition", + "uri":"rts_02_0061.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"56" + }, + { + "desc":"Resource for managing instance signals.The main points of this resource are:have no dependencies (so the instance can reference it).create credentials to allow for signal", + "product_code":"rts", + "title":"OS::Heat::WaitConditionHandle", + "uri":"rts_02_0062.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"57" + }, + { + "desc":"A resource for managing Neutron floating IP addresses.Floating IP addresses can change their association between routers by action of the user. One of the most common use", + "product_code":"rts", + "title":"OS::Neutron::FloatingIP", + "uri":"rts_02_0063.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"58" + }, + { + "desc":"A resource for associating floating IP addresses and ports.This resource allows associating a floating IP to a port with at least one IP address to associate with this fl", + "product_code":"rts", + "title":"OS::Neutron::FloatingIPAssociation", + "uri":"rts_02_0064.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"59" + }, + { + "desc":"A resource for managing Neutron net.A network is a virtual isolated layer-2 broadcast domain which is typically reserved to the tenant who created it, unless the network ", + "product_code":"rts", + "title":"OS::Neutron::Net", + "uri":"rts_02_0065.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"60" + }, + { + "desc":"A resource for managing Neutron ports.A port represents a virtual switch port on a logical network switch. Virtual instances attach their interfaces into ports. The logic", + "product_code":"rts", + "title":"OS::Neutron::Port", + "uri":"rts_02_0066.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"61" + }, + { + "desc":"A resource that implements Neutron router.Router is a physical or virtual network device that passes network traffic between different networks.", + "product_code":"rts", + "title":"OS::Neutron::Router", + "uri":"rts_02_0067.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"62" + }, + { + "desc":"A resource for managing Neutron router interfaces.Router interfaces associate routers with existing subnets or ports.", + "product_code":"rts", + "title":"OS::Neutron::RouterInterface", + "uri":"rts_02_0069.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"63" + }, + { + "desc":"A resource for managing Neutron security groups.Security groups are sets of IP filter rules that are applied to an instances networking. They are project specific, and pr", + "product_code":"rts", + "title":"OS::Neutron::SecurityGroup", + "uri":"rts_02_0070.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"64" + }, + { + "desc":"The resource is not allowed to be updated.A resource for managing Neutron subnets.A subnet represents an IP address block that can be used for assigning IP addresses to v", + "product_code":"rts", + "title":"OS::Neutron::Subnet", + "uri":"rts_02_0071.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"65" + }, + { + "desc":"A resource for creating Nova key pairs.A keypair is an SSH key that can be injected into a server on launch.Note that if a new key is generated setting save_private_key t", + "product_code":"rts", + "title":"OS::Nova::KeyPair", + "uri":"rts_02_0072.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"66" + }, + { + "desc":"A resource for managing Nova instances.A Server resource manages the running virtual machine instance within an OpenStack cloud.", + "product_code":"rts", + "title":"OS::Nova::Server", + "uri":"rts_02_0073.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"67" + }, + { + "desc":"A resource for managing a Nova server group.Server groups allow you to make sure instances are on the same hypervisor host or on a different one.", + "product_code":"rts", + "title":"OS::Nova::ServerGroup", + "uri":"rts_02_0074.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"68" + }, + { + "desc":"A resource for managing autoscaling configuration.", + "product_code":"rts", + "title":"OSE::AS::ScalingConfig", + "uri":"rts_02_0075.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"69" + }, + { + "desc":"A resource for managing autoscaling group.", + "product_code":"rts", + "title":"OSE::AS::ScalingGroup", + "uri":"rts_02_0076.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"70" + }, + { + "desc":"A resource for managing autoscaling policy.", + "product_code":"rts", + "title":"OSE::AS::ScalingPolicy", + "uri":"rts_02_0077.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"71" + }, + { + "desc":"A resource of CES.", + "product_code":"rts", + "title":"OSE::CES::Alarm", + "uri":"rts_02_0078.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"72" + }, + { + "desc":"A resource for ELB Loadbalancer.In later version, the API for using the LBaaS v2 load balancers will be provided, and you can create native LBaaS v2 load balancers. Howev", + "product_code":"rts", + "title":"OSE::ELB::LoadBalancer", + "uri":"rts_02_0079.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"73" + }, + { + "desc":"A resource for ELB Listener.", + "product_code":"rts", + "title":"OSE::ELB::Listener", + "uri":"rts_02_0080.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"74" + }, + { + "desc":"A resource for ELB Health Check.You must configure health checks for load balancers.", + "product_code":"rts", + "title":"OSE::ELB::HealthCheck", + "uri":"rts_02_0081.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"75" + }, + { + "desc":"A resource for member.", + "product_code":"rts", + "title":"OSE::ELB::Member", + "uri":"rts_02_0082.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"76" + }, + { + "desc":"A resource for certificate.", + "product_code":"rts", + "title":"OSE::ELB::Certificate", + "uri":"rts_02_0083.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"77" + }, + { + "desc":"A resource to handle load balancer health monitors.This resource creates and manages Neutron LBaaS v2 healthmonitors, which watches status of the load balanced servers.", + "product_code":"rts", + "title":"OS::Neutron::LBaaS::HealthMonitor", + "uri":"rts_02_0084.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"78" + }, + { + "desc":"A resource for managing LBaaS v2 Listeners.This resource creates and manages Neutron LBaaS v2 Listeners, which represent a listening endpoint for the vip.", + "product_code":"rts", + "title":"OS::Neutron::LBaaS::Listener", + "uri":"rts_02_0085.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"79" + }, + { + "desc":"A resource for creating LBaaS v2 Load Balancers.This resource creates and manages Neutron LBaaS v2 Load Balancers, which allows traffic to be directed between servers.", + "product_code":"rts", + "title":"OS::Neutron::LBaaS::LoadBalancer", + "uri":"rts_02_0086.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"80" + }, + { + "desc":"The resource is not allowed to be updated.A resource for managing LBaaS v2 Pools.This resources manages Neutron-LBaaS v2 Pools, which represent a group of nodes. Pools de", + "product_code":"rts", + "title":"OS::Neutron::LBaaS::Pool", + "uri":"rts_02_0087.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"81" + }, + { + "desc":"A resource for managing LBaaS v2 Pool Members.A pool member represents a single backend node.", + "product_code":"rts", + "title":"OS::Neutron::LBaaS::PoolMember", + "uri":"rts_02_0088.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"82" + }, + { + "desc":"A resource for creating a relational database (Relational Database Service) instances.A relational database service is a reliable, scalable, and easy-to-manage web servic", + "product_code":"rts", + "title":"OSE::RDS::Instance", + "uri":"rts_02_0089.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"83" + }, + { + "desc":"A resource for managing Virtual Private Cloud (VPC) resourcesA VPC can be used to build an isolated, user-configured, and managed virtual network environment for your ECS", + "product_code":"rts", + "title":"OSE::VPC::Vpc", + "uri":"rts_02_0090.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"84" + }, + { + "desc":"A resource for managing subnets", + "product_code":"rts", + "title":"OSE::VPC::Subnet", + "uri":"rts_02_0091.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"85" + }, + { + "desc":"A resource for creating file sharing resourcesScalable File Service (SFS) provides users with a fully hosted shared file storage, which can be scaled to PB scale, providi", + "product_code":"rts", + "title":"OSE::SFS::Share", + "uri":"rts_02_0092.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"86" + }, + { + "desc":"A resource for creating file sharing access rules", + "product_code":"rts", + "title":"OSE::SFS::ShareAccessRule", + "uri":"rts_02_0093.html", + "doc_type":"usermanual", + "p_code":"43", + "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":"rts", + "title":"FAQ", + "uri":"en-us_topic_0078604095.html", + "doc_type":"usermanual", + "p_code":"", + "code":"88" + }, + { + "desc":"If you cannot delete a stack, the reason is that the stack is in operation. If the stack is being created, updated, or otherwise manipulated, the stack cannot be deleted ", + "product_code":"rts", + "title":"What's the Reason for the Failure to Delete the Stack?", + "uri":"rts_faq_0003.html", + "doc_type":"usermanual", + "p_code":"88", + "code":"89" + }, + { + "desc":"The router ID cannot be found on the network console when you create a VPC stack using a template.RTS uses the localized OpenStack network model, including routers, netwo", + "product_code":"rts", + "title":"How Are Router Resources in the Native OpenStack Mapped to VPC Resources on the Network Console?", + "uri":"rts_faq_0002.html", + "doc_type":"usermanual", + "p_code":"88", + "code":"90" + }, + { + "desc":"Log in to the management console.Google Chrome is recommended.Google Chrome is recommended.Choose Database > Relational Database Service.In the upper right corner of the ", + "product_code":"rts", + "title":"How to Obtain the flavor Value of Resource OSE::RDS::Instance?", + "uri":"rts_faq_0004.html", + "doc_type":"usermanual", + "p_code":"88", + "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":"rts", + "title":"Change History", + "uri":"en-us_topic_0130750896.html", + "doc_type":"usermanual", + "p_code":"", + "code":"92" + } +] \ No newline at end of file diff --git a/docs/rts/umn/PARAMETERS.txt b/docs/rts/umn/PARAMETERS.txt new file mode 100644 index 000000000..6da8d5f07 --- /dev/null +++ b/docs/rts/umn/PARAMETERS.txt @@ -0,0 +1,3 @@ +version="" +language="en-us" +type="" \ No newline at end of file diff --git a/docs/rts/umn/en-us_image_0076468668.png b/docs/rts/umn/en-us_image_0076468668.png new file mode 100644 index 0000000000000000000000000000000000000000..e46faec38f84064c166718038c55e51889e9909a GIT binary patch literal 2888 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 D1-!#? literal 0 HcmV?d00001 diff --git a/docs/rts/umn/en-us_image_0128465684.png b/docs/rts/umn/en-us_image_0128465684.png new file mode 100644 index 0000000000000000000000000000000000000000..1685331e141c67c83d55aef20d56e2b9e5fe23be GIT binary patch literal 107168 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

@E@MT)y5#8Sh*j;=flUT-MV|0O@m(@Q zB(JS~H&vp%hS^4?4lnHeH8mr89W~4Cz&HOVJsm;GNlqa)DZO1&!Lp1Tu`uB)5+^oU zTb&N%gp~7k9MIK0w={Z|g8m(Hw$mdG(My#3CHssmfu* z<=T_14Kc|m??An2nhL^9iUcI)$mu!R!!n$-^&Lt&zGRBD2Y75?v{HX|Se-kxI)}<9 z329@ZH6H}+;o^ly#Q|kFHX!FYRkix3gs(SqdFapZ=CCW3pQV0oSlu&M^=LIcd0|AH zzI=tvgEf}0a2F8bG{ z`s4{a7d2#UI3e~wo%;4Ie!DL-9?tHkTObzi`aPgJp|r*5SZ)cLg?f#coZJOro5n^b zW_r;RNHJRu8xN1)#^vqi6N2at18o98T~|yeKv!A)v(hcH-+n_STUHEJ`Tm^@y2i#g za)PAm+dQ6^AGVlko!8ptaUVob<9z9eT+fXL-D}$H65JR58!6~~0WR2^G6f~^Tz5d6 zZ$=Lp_Is|_5Kr3`uS47#5GxO#k0VAl2>do{grO4VII{JDTd378HOdf{dehVMQ%z65V@pI?=1~g`UaYL-A*q2@KcQMR6YZbIUpn!1^0LZU0L8e+O?xRrxtSd=?E~# zokyrteXmDZS>vS$&KGS?ql;F30T!kN<;DZ1(xaGZXQ!_Ctc&xzez>svBG<9UT)oet z=maPc4r*;`@(m~Y`};TN2}mn9+A!>sU#20Ffi^OoINOYMVVJkqx)C($IMWv1c)hJ6 zSJP0aMkPqeB`H7yx3wO8+wl;h1YIR*7{8Z0!d~02m@tP1|OfHo%qpxMYU1}w(K1A zHJ_8I&+Zl>1qQY%5)3GtPVhNcyVNHxeRH(AovPeD7+$3%)O786#p={Auc4tMA%qA1 z$N3*7yoo^{=g`1FSz-stTvjLFKs^4&d^;^NPd5Xc?5#|@$G7ExwSVZ4*2Pb=v!sv5 z1CAMO#6~bgRVuLsx>ZaT^7d$(+JNIL5_%chJwrn|)z%?lQJ+72sI51_U5{m9#=XKs zir$Y`4RFBr7cXc&gNL^O^joKHt4%EHiGcYAJf1;(Qj7VaJ&v~%%LD|H*d|0FbN0+8 zeZMEC0Xs`^S=pCgOWUgIcNgYNDg2pl7~-k*{<9Rh*m7>Bd%C*6dg+PpuS2Up-+oCM zl9S@hOgvLexFF}IjCqN3AG}$YKk`p%yPH><2{)rC&7S{vayePi5n_Tzwyo3gf~Sp1FSlJb7#G7G%| z(S(C+0sKHqu{4q}NjyoP$ZuuD&CPAVs-oWo8tsPMa%6kjsY2cWpqaCM{=EdN-F^GM zuU{X8W$!$A@Il2^O(CRhGK@?(PoVjSX8-lxnrAsw(BRJ0k1@ z&nj<-L?US9SS)53#?a7^s;b3e(cOp&27}FJ)7^?#TU$enxK*H!Nv9}EI-QnfSro-+ zG^(nqrfHg{dF%xjXz=9o`K_%jQ512mJv=-_BfFnpMN#bQ>uXoB?Knf97ROqU;!aVN zVzG$nlg(zYfECpM00Fj1L_t*1kJQKy{m+(*jEAaLDwUwIq}7sCmo!vx(E!Q*!omXb z#$vHXqk)WH>4n*c<^`=$-X9ncK36a{8Vyv6MwFr`xYVF^#yV*2+lu#c?Q4`{vQ#RC z2}P@=X`1MhZR@ZgZf+DqWrgz*g>`YBfVIQ=vQB>~Gm!9bGGNK;OtJ~XK{H5#q z?Ch*d(!IUC=M*8dV4CLU=4PQ#upjXe)t$@bI+IR4GCT7^xWB(|H%q-<9~&F{8b9WT z2F}yxd4H2(UILJ4x2to&@%kHX>t6(F7P73m9vm@wZS0tC+FT%ZN+y%AJat{S-hz3= zDp7 z_xJbrf0M~4*{MKBEG z0$ULb!!QiPFvJtQ(Znze!!QiPFwBdBtq6u;7=~dOhGE*{KbCy=tK8`2s{jB107*qo IM6N<$g5@Pa{r~^~ literal 0 HcmV?d00001 diff --git a/docs/rts/umn/en-us_image_0129631902.png b/docs/rts/umn/en-us_image_0129631902.png new file mode 100644 index 0000000000000000000000000000000000000000..b5affa27b7d7e4f4f554369c390cffd303d2efeb GIT binary patch literal 18009 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 literal 0 HcmV?d00001 diff --git a/docs/rts/umn/en-us_image_0129684031.png b/docs/rts/umn/en-us_image_0129684031.png new file mode 100644 index 0000000000000000000000000000000000000000..018ab599db63ebb3bd7461d8cc40ebdd0377099c GIT binary patch literal 14930 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 CV(8=m literal 0 HcmV?d00001 diff --git a/docs/rts/umn/en-us_image_0162741682.png b/docs/rts/umn/en-us_image_0162741682.png new file mode 100644 index 0000000000000000000000000000000000000000..dab7742ac0d8a5e62f885fc8e801d6b247b8e12a GIT binary patch literal 12562 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 literal 0 HcmV?d00001 diff --git a/docs/rts/umn/en-us_image_0162983502.png b/docs/rts/umn/en-us_image_0162983502.png new file mode 100644 index 0000000000000000000000000000000000000000..40bf6b5aa5d7f7068dec6a1cfb58acf02c3eb6b7 GIT binary patch literal 35037 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 A_5c6? literal 0 HcmV?d00001 diff --git a/docs/rts/umn/en-us_image_0165712169.png b/docs/rts/umn/en-us_image_0165712169.png new file mode 100644 index 0000000000000000000000000000000000000000..ee71393548abae2c727f85dff5edf79e0a95c4fc GIT binary patch literal 9018 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 literal 0 HcmV?d00001 diff --git a/docs/rts/umn/en-us_image_0165732878.png b/docs/rts/umn/en-us_image_0165732878.png new file mode 100644 index 0000000000000000000000000000000000000000..504f9ad35fe7920910ce7c9262a5ca55eef91957 GIT binary patch literal 24785 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 literal 0 HcmV?d00001 diff --git a/docs/rts/umn/en-us_image_0210486176.jpg b/docs/rts/umn/en-us_image_0210486176.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2d380380e6374d982c8b27cfc51bd941f6610f2 GIT binary patch literal 740 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ECr+Na zbot8FYu9hwy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&A3Fhjfr_ZgbM1cClyVqsxs zVF&q(k*OSrnFU!`6%E;h90S=C3x$=88aYIqCNA7~kW<+>=!0ld(M2vX6_bamA3Qk(@Ik;M!Qd`Cc-ajG_-Gy?-; zsHcl#NX4AwKmWl%GJ#=cFZZ9nzrSB!AAjf09UdN@o(NL`lc(R`-``*VKP@34;oy|t zU%x%SUAup1<|mV*h@hE%6rUAo>4!6|D>Z>jX}7o?Gzkp?t{S_5Ymb9yt>t zcYN=WmQIk1dUq=KRd3=_W(ETF&rej=*>TKne0Y8R{}sPHS@!=|x-sF$??Aiv-%}TT zJ^iBSoKdRdw)sbA%&&MY+51#*rP!+b-m^QWdc6H}hB1jl?#h1~sho>0mW>zhPm7i5 zpMcdf + +

RTS

+

Resource Template Service (RTS) helps you simplify cloud computing resource management and automate O&M. You can compile a template file and define a collection of cloud computing resources, dependencies between resources, and resource configurations based on the template specifications defined in the RTS service. Then you can automatically create and configure all resources in the template using the orchestration engine to simplify deployment and O&M. The RTS service supports most APIs of the native OpenStack Heat component and templates in the HOT (Heat Orchestration Template) format.

+
Figure 1 Resource template
+

You can use the RTS service with methods in Table 1.

+ +
+ + + + + + + + + + + + + +
Table 1 Methods of using RTS

Method

+

Description

+

Management console

+

The management console is a web-based visualized user interface, which is helpful for beginners to learn.

+

Heat client

+

The Heat client is a subproject of OpenStack Client, functioning as a command line client targeted for Heat. You can use this client to access cloud services by running commands.

+

For details, see Heat Client.

+

API

+

The API (Application Programming Interface) management mode is based on HTTPS requests. If you need to integrate RTS into a third-party system for secondary development, use APIs to access the RTS service.

+

For details, see the Resource Template Service API Reference.

+
+
+

Basic Concepts

  • Templates

    An RTS template is a user-readable, easy-to-write file that describes how to deploy a set of resources and install the required software. Templates specify the resources to use, the attributes to set, and the parameters required for automatic deployment of a specific application. Template files can be in the YAML or JSON format.

    +
  • Resources

    Resources are objects that are orchestrated by Heat. Currently, multiple cloud services are supported, such as Elastic Cloud Server (ECS), Elastic Volume Service (EVS), Elastic Load Balance (ELB), Cloud Eye, Relational Database Service (RDS), Scalable File Service (SFS), and Virtual Private Cloud (VPC).

    +
  • Stacks

    A stack is a collection of resources, which may include multiple ECSs, networks, and EVS disks. You can use a template to create a stack that includes a set of resources to accommodate the specified application framework or components included in the templates. A stack is actually a running instance of a template, namely, you can deploy, update, and delete a collection of resources by creating, updating, and deleting stacks.

    +
  • Regions and AZs

    A region is a geographic area where resources used by your RTS are located.

    +

    An availability zone (AZ) is the physical location where resources use independent power supplies and networks. AZs are isolated from each other. An AZ can provide an economical, low-latency network connection for other AZs in the same region. A region can have multiple AZs. AZs are physically isolated from each other and communicate with each other over an internal network.

    +
+
+

Product Functions

  • Stack management: A stack is a cloud application based on a template. Stack management allows you to create, update, and delete stacks and manage resources, events, and templates in the stack.
  • Resource orchestration: You only need to create a resource configuration template in the JSON or YAML format. RTS analyzes resource dependencies based on your template and orchestrates resources on clouds in the sequence of resources, for example, if A depends on B and B depends on C, RTS will create C first, then B, and finally create A.
+
+
+
+ +
+ diff --git a/docs/rts/umn/en-us_topic_0068576463.html b/docs/rts/umn/en-us_topic_0068576463.html new file mode 100644 index 000000000..245188511 --- /dev/null +++ b/docs/rts/umn/en-us_topic_0068576463.html @@ -0,0 +1,21 @@ + + +

Preparing a Template or a Template Package

+
+ + diff --git a/docs/rts/umn/en-us_topic_0078604095.html b/docs/rts/umn/en-us_topic_0078604095.html new file mode 100644 index 000000000..cd9fb5d6e --- /dev/null +++ b/docs/rts/umn/en-us_topic_0078604095.html @@ -0,0 +1,15 @@ + + +

FAQ

+
+ + diff --git a/docs/rts/umn/en-us_topic_0110305013.html b/docs/rts/umn/en-us_topic_0110305013.html new file mode 100644 index 000000000..177e66f55 --- /dev/null +++ b/docs/rts/umn/en-us_topic_0110305013.html @@ -0,0 +1,14 @@ + + +

Auditing

+

Cloud Trace Service (CTS) is a log audit intended for cloud security. It allows you to collect, store, and query cloud resource operation records and use these records for security analysis, compliance auditing, resource tracking, and fault locating.

+
+ + diff --git a/docs/rts/umn/en-us_topic_0110305014.html b/docs/rts/umn/en-us_topic_0110305014.html new file mode 100644 index 000000000..c718a1f11 --- /dev/null +++ b/docs/rts/umn/en-us_topic_0110305014.html @@ -0,0 +1,114 @@ + + +

Key Operations Recorded by CTS

+

Table 1 lists the RTS operations that will be recorded by CTS.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 RTS operations recorded by CTS

Operation

+

Resource Type

+

Trace Name

+

Creating a configuration

+

software_configs

+

createSoftwareConfigs

+

Deleting a Configuration

+

software_configs

+

deleteSoftwareConfigs

+

Creating a deployment

+

software_deployments

+

createSoftwareDeployments

+

Deleting a deployment

+

software_deployments

+

deleteSoftwareDeployments

+

Updating a deployment

+

software_deployments

+

updateSoftwareDeployments

+

Managing a stack, for example, canceling stack update or checking stack resources

+

stacks

+

createStacksActions

+

Sending a signal to resources in a stack

+

stacks

+

createStacksResourcesSignal

+

Creating a stack

+

stacks

+

createStacks

+

Deleting a stack

+

stacks

+

deleteStacks

+

Updating a stack

+

stacks

+

updateStacks

+

Previewing a stack

+

stacks

+

createStacksPreview

+

Marking a resource as unhealthy

+

stacks

+

patchStacksResource

+

Validating a template

+

validate

+

createValidate

+
+
+
+
+ +
+ diff --git a/docs/rts/umn/en-us_topic_0110305015.html b/docs/rts/umn/en-us_topic_0110305015.html new file mode 100644 index 000000000..d9a7574d4 --- /dev/null +++ b/docs/rts/umn/en-us_topic_0110305015.html @@ -0,0 +1,17 @@ + + +

Viewing CTS Traces

+
  1. Log in to the management console.
  2. Click in the upper left corner to select a region and a project.
  3. Click Service List and choose Management & Deployment > Cloud Trace Service.
  4. Choose Trace List in the navigation pane on the left.
  5. On the displayed page, you can query traces by setting the filtering criteria. The following filters are available:
    • Trace Source, Resource Type, and Search By

      Select the filter from the drop-down list.

      +

      When you select Trace name for Search By, you also need to select a specific trace name. When you select Resource ID for Search By, you also need to select or enter a specific resource ID. When you select Resource name for Search By, you also need to select or enter a specific resource name.

      +
    • Operator: Select a user who performs operations.
    • Trace Status: Available options include All trace statuses, normal, warning, and incident. You can only select one of them.
    • Time range: You can specify the time period to query traces.
    +
  6. Click on the left of the required trace to expand its details.
    Figure 1 Trace details
    +
  7. Locate a trace and click View Trace in the Operation column. A dialog box is displayed, showing the trace structure details.
    Figure 2 Viewing trace
    +

    For details about the key fields in the CTS trace structure, see the Cloud Trace Service User Guide.

    +
+
+
+ +
+ diff --git a/docs/rts/umn/en-us_topic_0130750896.html b/docs/rts/umn/en-us_topic_0130750896.html new file mode 100644 index 000000000..d54495032 --- /dev/null +++ b/docs/rts/umn/en-us_topic_0130750896.html @@ -0,0 +1,114 @@ + + +

Change History

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

Released On

+

Description

+

2019-05-30

+

Modified the following content:

+

Optimized the whole document.

+

2018-09-30

+

Modified the following content:

+

Added parameter backup_restore and updated parameter descriptions in OS::Cinder::Volume.

+

2018-08-30

+

Added the following content:

+

How to Obtain the flavor Value of Resource OSE::RDS::Instance?

+

Modified the following content:

+ +

2018-05-30

+

Added the following content:

+

Auditing

+

Modified the following content:

+

Optimized descriptions in Creating a stack, Updating a Stack, and Deleting a Stack.

+

2018-03-30

+

Added the following content:

+ +

Modified the following content:

+

Supported the function of configuring allowed_values for parameters in Parameters.

+

2018-01-30

+

Added the following content:

+

OS::Heat::SoftwareComponent

+

Modified the following content:

+
  • Added three supported HOT template versions in Template Version.
  • Supported the function of configuring custom_constraint for parameters in Parameters.
+

2017-12-30

+

Modified the following content:

+

Optimized descriptions in RTS, OS::Heat::AutoScalingGroup, OS::Heat::WaitCondition, and OS::Nova::Server.

+

2017-11-30

+

Added the following content:

+

OS::Heat::SoftwareDeployment

+

Modified the following content:

+

Supported the function of compiling a template online during stack creation in Creating a stack.

+

2017-10-30

+

Modified the following content:

+

Optimized the description in OS::Cinder::VolumeAttachment.

+

2017-09-30

+

Modified the following content:

+

Modified stack-related UI styles and strings in Creating a stack.

+

2017-08-30

+

Added the following content:

+ +

Modified the following content:

+ +

2017-07-30

+

Added the following content:

+

Creating Resources Using a Template (Using the Console)

+

Modified the following content:

+

Added the project description in RTS.

+

2017-02-22

+

Added the following content:

+

Example Templates

+

Modified the following content:

+

Updated the template version in the HOT syntax of some resources in Resource Type Reference.

+

2016-10-08

+

This issue is the first official release.

+
+
+
+ diff --git a/docs/rts/umn/en-us_topic_0162985073.html b/docs/rts/umn/en-us_topic_0162985073.html new file mode 100644 index 000000000..a1cbd1f5d --- /dev/null +++ b/docs/rts/umn/en-us_topic_0162985073.html @@ -0,0 +1,22 @@ + + +

Operation Guide

+

RTS helps you create and configure a collection of resources using a template and makes it easy to manage these resources.

+

Compile a Template

To create and manage a resource stack, you need to compile a template, and then RTS creates and configures a collection of resources based on the template.

+

During template compilation, you need to define and describe the required resources. For cloud resource types supported, you can log in to the RTS console and click Resource Types in the left pane to view cloud resource types that are supported. For more details, see Supported Resources.

+

For template syntax, see the following references:

+ +

We provide common templates in Example Templates for your reference. These templates contain ECSs. If these templates meet your business scenarios, you can directly use them or modify some parameters.

+
+

Creating a Stack Using a Template

If you have created a template, log in to the RTS console, click Create Stack, upload a template file or manually enter template content, and perform subsequent operations as needed. Then, the system orchestrates cloud resources defined in the template and dependencies between them.

+

Before uploading a template, you need to package the template according to the required rules.

+
+

The references are as follows:

+ +
+

Managing Stacks Using the Console

Except for creating stacks, you can also view all resources in your stack or update, re-create, or delete your stack based on your service requirements on the RTS console.

+

The references are as follows:

+ +
+
+ diff --git a/docs/rts/umn/public_sys-resources/ExpandCollapse.js b/docs/rts/umn/public_sys-resources/ExpandCollapse.js new file mode 100644 index 000000000..116ddaabf --- /dev/null +++ b/docs/rts/umn/public_sys-resources/ExpandCollapse.js @@ -0,0 +1 @@ +var expandClassName="dropdownexpand";var collapseClassName="dropdowncollapse";var collapseTableClassName="dropdowncollapsetable";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(a.substring(a.lastIndexOf("#")+1))}}catch(c){}}; \ No newline at end of file diff --git a/docs/rts/umn/public_sys-resources/caution_3.0-en-us.png b/docs/rts/umn/public_sys-resources/caution_3.0-en-us.png new file mode 100644 index 0000000000000000000000000000000000000000..60f60762138fe7d98fa081415cf26a4943897779 GIT binary patch literal 2752 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: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/docs/rts/umn/public_sys-resources/commonltr_print.css b/docs/rts/umn/public_sys-resources/commonltr_print.css new file mode 100644 index 000000000..a59823141 --- /dev/null +++ b/docs/rts/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/docs/rts/umn/public_sys-resources/commonrtl.css b/docs/rts/umn/public_sys-resources/commonrtl.css new file mode 100644 index 000000000..f261da752 --- /dev/null +++ b/docs/rts/umn/public_sys-resources/commonrtl.css @@ -0,0 +1,2 @@ +/*! Copyright (c) Huawei Technologies Co., Ltd. 2020-2022. All rights reserved. */.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/docs/rts/umn/public_sys-resources/danger_3.0-en-us.png b/docs/rts/umn/public_sys-resources/danger_3.0-en-us.png new file mode 100644 index 0000000000000000000000000000000000000000..47a9c723532a0ac410285e5152684262127922bf GIT binary patch literal 2771 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 literal 0 HcmV?d00001 diff --git a/docs/rts/umn/public_sys-resources/icon-arrowdn.gif b/docs/rts/umn/public_sys-resources/icon-arrowdn.gif new file mode 100644 index 0000000000000000000000000000000000000000..379428032932289326e52c2772bd90ba3d88b906 GIT binary patch literal 1887 zcmZ?wbhEHbCgqow z*eU^C3h_d20o>TUVm+{T^pf*)^(zt!^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^ z7NqJ2r55Lx7A2Jm>Ih`8X1|p zSh~8p7&*iAy5uL9=BDPA!1Sgd^t#~G3rY&P1wfl!Qj0RnQd8WD@^clyUbf1_?G{Iz z=0WwQ;C71>PQCg-$LND17Ac}(Lcr7mV#1RxkONQnsd>QEUIa|mjQ{`r{qy_R&mZ5v zef{$J)5j0*-@SeF`qj%9&!0Vg^7zri2lwyYy>t84%^TORUA=Po(!~qs&z(JU`qar2 z$B!L7a`@1}1N-;w-Lrew&K=vgZQZhY)5ZeMTG_VdAT{+S(zE> zX{jm6Nr?&Zaj`McQIQehVWA3>*p!%p5Wn0u7E$th{n6D>ft^YU5&dnB%c=(a~-RV>2EO25SIA CZ-yWM literal 0 HcmV?d00001 diff --git a/docs/rts/umn/public_sys-resources/icon-arrowrt.gif b/docs/rts/umn/public_sys-resources/icon-arrowrt.gif new file mode 100644 index 0000000000000000000000000000000000000000..6aaaa11c23e919c4798d7dcd2b1ae98dd35dd316 GIT binary patch literal 1890 zcmZ?wbhEHb7yetOgf{ zR2HP_2c;J0mlh?b0+lO+tSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu08>u$h8JcxGNo zetEGbSiP^Wm1kaYNn&1ds;7&s63_&_%*+%k11Cod14Ab>6ALqQLqk^=3j-5FHzP|& zBUd9gQwvj9m|mCsATTyHM;rzL?XHK6w zdE)r7qel)OI(T6JzP)>P@7lRz`?jrHHgDRvVg0(bYgVsXxnlXUrArnsTDV~Tyt#8` z&zd=7`n0K2CQq6;p}()Ur@O1OqrI)QrMaoGp}wxRrn;)KqP(oMq`0WCAU`iRCp#-M zBRwrOB{?ZEAwDiPCORrIB0MZKBseHAz~9f;$J@)(!`;o*#o5Wx!QRf+#@fo#!raW% z#MsEtKwnQ+M_Wr%LtRZ(MOjHvL0(Q)Mp{ZzLR?H#L|8~rfS-?-hntI&gPo0)g_((w zfkE*n3y@@B&;b#k`jUY|nSq%>!ec`MLnAA%oR7zc2TpB#@>)|YCO&lN;uMU!b7Eqm H1A{dHTIz>f literal 0 HcmV?d00001 diff --git a/docs/rts/umn/public_sys-resources/icon-caution.gif b/docs/rts/umn/public_sys-resources/icon-caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..079c79b263f4b48089f3b3256154c73e7699593f GIT binary patch literal 1086 zcmW+#YfRQ<6hA3LZMyP?V}KhnEtF{Q4vGxS52AozEVM85nq$#%tv8gRF!3GhgM?_) zd5Luv3SKrXFTGCpn$y>EMGZQ&sWI^~+e%qWysRPK%BSD+f4-fabAGq;|Cf|4nO{(o zMH%#n$oXf^sdM5SJ4e1UbEeM389O82RCB6M#VI=_KP%=$orn{5LVlIau{svV?3jS$ z$Q-F7am0>L02|Q2!ZN1G^Z2J`V#a3VX;G<~iYc3tSAnLeiI}hnc~O{UH5OwwCTPT} zks65+8-W$70S3`f30dfY7}$UY7M95y@-?2QvMPChphYF3!YbtLLIs*E%B)Oq4^fy^ z5+zoGJ>&tI*hU=i4-s$()c}KNsKh9AfEd_-1{V3`d>b_$i;xcz{y>Y0S(uP3>_P>a zLM((Fku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf}M1C4=)Odu8AxQWG zEh;Aearj(=d;4Z^LLYN*6+asU?Nbl3^Q%D|{s@6Xj}(aZHwkoj-~bw*1FnSd;0aX! zUW<-TPD&b;6s;@zw7K~4mF9cDuK&BQ;b_N-Cj%R=CnEjde9%~1kk}vYY^@mTTNm%F z?mbrf*~d#iX;?ITDf(MHQdK;&p(ek&e9qe?*&A0E)mG(1s`J*pn^#ttId4vCXjV$j zj464u)2F9Q$V#0!dHk4(FDB#D&wP^f0*q1)G?4!%Xe>;ROD~Oee-}xfJUd+aa_0AK zFP$vgR2te>+%}b$hVw&Ni`yT>F5LNRM@_utk68Piwi5??BLBpCcb8mx|3c*1x!xZJ zKU!7(#h8s(^x)5*w=Z0K{=a9#qeoHU|0&%MiU0rr literal 0 HcmV?d00001 diff --git a/docs/rts/umn/public_sys-resources/icon-danger.gif b/docs/rts/umn/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..079c79b263f4b48089f3b3256154c73e7699593f GIT binary patch literal 1086 zcmW+#YfRQ<6hA3LZMyP?V}KhnEtF{Q4vGxS52AozEVM85nq$#%tv8gRF!3GhgM?_) zd5Luv3SKrXFTGCpn$y>EMGZQ&sWI^~+e%qWysRPK%BSD+f4-fabAGq;|Cf|4nO{(o zMH%#n$oXf^sdM5SJ4e1UbEeM389O82RCB6M#VI=_KP%=$orn{5LVlIau{svV?3jS$ z$Q-F7am0>L02|Q2!ZN1G^Z2J`V#a3VX;G<~iYc3tSAnLeiI}hnc~O{UH5OwwCTPT} zks65+8-W$70S3`f30dfY7}$UY7M95y@-?2QvMPChphYF3!YbtLLIs*E%B)Oq4^fy^ z5+zoGJ>&tI*hU=i4-s$()c}KNsKh9AfEd_-1{V3`d>b_$i;xcz{y>Y0S(uP3>_P>a zLM((Fku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf}M1C4=)Odu8AxQWG zEh;Aearj(=d;4Z^LLYN*6+asU?Nbl3^Q%D|{s@6Xj}(aZHwkoj-~bw*1FnSd;0aX! zUW<-TPD&b;6s;@zw7K~4mF9cDuK&BQ;b_N-Cj%R=CnEjde9%~1kk}vYY^@mTTNm%F z?mbrf*~d#iX;?ITDf(MHQdK;&p(ek&e9qe?*&A0E)mG(1s`J*pn^#ttId4vCXjV$j zj464u)2F9Q$V#0!dHk4(FDB#D&wP^f0*q1)G?4!%Xe>;ROD~Oee-}xfJUd+aa_0AK zFP$vgR2te>+%}b$hVw&Ni`yT>F5LNRM@_utk68Piwi5??BLBpCcb8mx|3c*1x!xZJ zKU!7(#h8s(^x)5*w=Z0K{=a9#qeoHU|0&%MiU0rr literal 0 HcmV?d00001 diff --git a/docs/rts/umn/public_sys-resources/icon-huawei.gif b/docs/rts/umn/public_sys-resources/icon-huawei.gif new file mode 100644 index 0000000000000000000000000000000000000000..a31d60f895af919d33855217ca02daf4093136d7 GIT binary patch literal 2767 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 GE&l)<3Z_>8 literal 0 HcmV?d00001 diff --git a/docs/rts/umn/public_sys-resources/icon-notice.gif b/docs/rts/umn/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..409070650a49518feb1624c624d814c3bfa63d2e GIT binary patch literal 962 zcmb7D&r8&C5S<{wSd_qn6)U)w5LOaRh!N}_*49lD)S!dZp@M<3gPIX|@UR9-fz+X3 zAaT9)OY{xZtO-;RC85Vab;JEUNIMS5f^r$7-e%-XK`j{0+N$CsgpRd6B1wp z8dw-cH^rU^H4`&7qgabf)l^K`l!66{q9$U(CKRO5%W5pfY)s&YQ6n`HBR0ZTum%`N zgC%I8hQ+`JG_WvCAt-W$sIn@BKCDG1qQWW^a=`*c7G+i@s0S(ZDv1&+K_2`7O-#cM z=m!ZX1Z#kSG+3e)Jg^wpfCd(Yb5TZ)U=a!DwsG z)Z`|1ejMK4ap%CHj;%+>T6=D++5I=uBbQ$fZ48cf{hV1}9&Njl-I}i7e0#6Hdug@s zsr-57_=gLr&9Ros$k}}M>tJ77=hEJ}iPaZ%8|P+gUbS|Oj}5I{|5nZZc)C1$e*Rj` d`09hYXJ4M@PhCx)dHK8WZo1*|*q+^V@*ncduk8Q; literal 0 HcmV?d00001 diff --git a/docs/rts/umn/public_sys-resources/icon-tip.gif b/docs/rts/umn/public_sys-resources/icon-tip.gif new file mode 100644 index 0000000000000000000000000000000000000000..c47bae05c9fd17c02a851d96cfac67bf194498d8 GIT binary patch literal 879 zcmchWKWmj?48@OdDOZPr)a61!OE4yGD)salg#|^Ix$qIEF#uk)V>D{95e^!2r`i+9t# zTMu5YtUcd+@#gp0tDE;9ug>oLIzL$6dOx4-t#2PKExu1KulwoYeD?Os#mVO%AMWih HO|EMGZQ&sWI^~+e%qWysRPK%BSD+f4-fabAGq;|Cf|4nO{(o zMH%#n$oXf^sdM5SJ4e1UbEeM389O82RCB6M#VI=_KP%=$orn{5LVlIau{svV?3jS$ z$Q-F7am0>L02|Q2!ZN1G^Z2J`V#a3VX;G<~iYc3tSAnLeiI}hnc~O{UH5OwwCTPT} zks65+8-W$70S3`f30dfY7}$UY7M95y@-?2QvMPChphYF3!YbtLLIs*E%B)Oq4^fy^ z5+zoGJ>&tI*hU=i4-s$()c}KNsKh9AfEd_-1{V3`d>b_$i;xcz{y>Y0S(uP3>_P>a zLM((Fku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf}M1C4=)Odu8AxQWG zEh;Aearj(=d;4Z^LLYN*6+asU?Nbl3^Q%D|{s@6Xj}(aZHwkoj-~bw*1FnSd;0aX! zUW<-TPD&b;6s;@zw7K~4mF9cDuK&BQ;b_N-Cj%R=CnEjde9%~1kk}vYY^@mTTNm%F z?mbrf*~d#iX;?ITDf(MHQdK;&p(ek&e9qe?*&A0E)mG(1s`J*pn^#ttId4vCXjV$j zj464u)2F9Q$V#0!dHk4(FDB#D&wP^f0*q1)G?4!%Xe>;ROD~Oee-}xfJUd+aa_0AK zFP$vgR2te>+%}b$hVw&Ni`yT>F5LNRM@_utk68Piwi5??BLBpCcb8mx|3c*1x!xZJ zKU!7(#h8s(^x)5*w=Z0K{=a9#qeoHU|0&%MiU0rr literal 0 HcmV?d00001 diff --git a/docs/rts/umn/public_sys-resources/note_3.0-en-us.png b/docs/rts/umn/public_sys-resources/note_3.0-en-us.png new file mode 100644 index 0000000000000000000000000000000000000000..57a0e1f53377b28fd80ceb393b035f8d9b8b392a GIT binary patch literal 1080 zcmV-81jqY{P)pI>PbXFRA}Dqnq7z+RTRg6r`*v5D@IBmL~4s5$SN3-f`YICkrqS^ z3O*?4J{4psT?>Nv;P$DA4|YKmeJd1v=!+{-P(e)MT23E4 zfpM5g?!;YNyXOywggfWv-aG#}pA%7499KRz`7Lmw98Q!I<#3`LPLvbnaH1TQ5UMEG zlVk_b1{y%CK&5Na8Kh~iV1CQyHSIUD=$Ui|Y1(mW{t2nlnW!hpqTT3)%#9tQ2@Hwc z4!jG@4brq%Pm%+`OlEvYXy4{GY5awd{We?gCpulWuT{Z9`oN)jk~9ZtI#ba@Tm#IC$eXI#i?GB7 z@C|Siuxi7{ffK+jzyrW_z5t&id2Xi{7fGOZ7RUNhF z=`q(YYu4B2zr}fA1-My6UW~A&C(H`Z0J{sqLLYb>ST?)$UTJH~j4 z)U5D`kx~@HyTBjADBwh`9UcOHGnaO3gx+o=^sFTdqcDs&7cD!S1Y1R9DJQENmMBXi zUX68u7SqPL=oS0?tDydiCJNY=lMCxo@cxg;Iw&H0tZv&cB5#jSkGc8v45{4-xAi@+ zH#c^6Llb3aTk2cp0#8`%*2*ZSb3DivIwje71|rV*JnwHI2e{V0 z?L}VtT_k|}D>qFKHz^_)cUMxtxkDBWXzz2D1oirfKkqs5Z>m~O`i+$JJR1>-NN>fsG-Q5hHbmeou}1??2@ zp;^{uvz{qy3k557pH|h^|K(Paf~;?wS^K(J)S`9Ki+p;|vZBS3*BostG+QG&8PgN& z=@C2h$ubuxBJTs&=XH#%UFPZrh=oAMNN{DPG_uReuDWcPESRPGOKD;{Otwcu3X@*QY`k0+@}-e yxT4{IZgHXpLI!Q!9RCwC$n{8}UWfaGMW8J;IUE8&LY1fUhGLTVa3!QBW+ZA*L=y*M3rfr5il?z?dJZieJ#47>M$@*mD4$1ecadv1qsU1#wR$;qu4Bmh4yS`Hi)ReG=4*#e zajgEV5YlLPaKTMvrW)|6L6Y@JtlU|tX}9u@d<^;|8a!TJ`kRn8mKIZX-z)%<^+`jn z738I}>P{CwooQ#@mc8ItdHsQ6rsk%O$iLY)*x7Zcj%}lwEK@`-=;otzSyX+&p9{kzQYbgSF@Q=2Qy+?#VW0=Vy|cYT&lQ@%;A2YQ{hH z9%ov+34{hBa~SnWOw39F;7p5`9$z4G?cJ)An*I*rb~&khdI=d8h1SkK)If-j5C2TB z8p4%r<<^31tR|Tw4Xs1QHMjMk20}yD8f4p%dXd_$me9Z-SWPlj8%nUOe;>LpUUAI& z1+$nxI~Q3>q`9q!{1-nPlEMa4o@e_SGSdvCrzn))J%_ut?ipfIn4e4CD=Pq4zT@D? zqk$|@wV{L*qfBG7mtFghv-Lntl$pcnz~kwNI)BUSUuvgmQEXp5=UThz?DmmjlsW$V z@)3#dyh6UbBYa%QD%n4gom-Glu20@0My{Xs3VRpaU9=0QxbJP-J)Pz^`?kOW30Tn z@ufYqb@gL4$<)8N0%S?kG%v#(IqvH7UvcW1v+a@N8!}9Baks0-uUUYP1beE1+)Q)S zUobczB2ql)J>S90pM1~e2X4k70q-59;@Rj(Ixc6Ok_Z$V@dbE+GNTrV;HlFQ=lRMeN%CX^J*|inqrfX$fdWuECU& zYE~#M%8xCgqI||*N`--7Xw)BgEZ#bB0-qYhW>q--LhLmBU*r0E*5+4PP+l2n2}rtV z_qXh+#jl32SrvAyo2R)OD=o_BoyYIMW>x6y_Tety7r)3^eF8`TK$3KP{`eA2F}YpN zxa|~0YP$+*PB&3e-M~W&UFbFHknL5q%yVT?GB=Ox3?p^VEh7*N@$03nevU0%RA*Qe zy8Bd~e78Ejsl=~x+vYF$e)B!#In3BC3Kw>)rNi4F>6}lnndnzTghB(1f9&nZP({}9 z<_Y#X?@5R5*rUdbm zZ9zPQB)-@t_#f`t1VTsxAtZr72uUD>BoIOp2q6gsLP&yt3mvdY+y=oIIs7M?<}pwN SX0_=60000=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/docs/rts/umn/public_sys-resources/warning_3.0-en-us.png b/docs/rts/umn/public_sys-resources/warning_3.0-en-us.png new file mode 100644 index 0000000000000000000000000000000000000000..def5c3565da51684d78479f45904c0360844c243 GIT binary patch literal 3164 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 + +

Service Overview

+
+ + diff --git a/docs/rts/umn/rts_01_0003.html b/docs/rts/umn/rts_01_0003.html new file mode 100644 index 000000000..ceb51637a --- /dev/null +++ b/docs/rts/umn/rts_01_0003.html @@ -0,0 +1,17 @@ + + +

Advantages

+

RTS allows you to model and configure cloud computing resources in a unified way. With RTS, you only need to create a template that describes the required resources and dependencies between those resources. Then, RTS automatically creates and configures all resources in the template using an orchestration engine, simplifying management of cloud resources. RTS has the following advantages:

+

Providing Template Examples

RTS provides common template examples, and you only need to set values of several parameters such as region and stack name.

+
+

Flexibly Combining Multiple Cloud Services

RTS supports many core cloud services, such as ECS, EVS, VPC, ELB, SFS, RDS, AS, and Cloud Eye. You can flexibly combine cloud services using templates to meet automatic O&M requirements in different O&M scenarios.

+
+

Allowing Batch Operations and Simplifying Resource Management

By defining multiple resource types and resource dependencies in a template, you can deploy all services in a template in batches, which simplifies deployment and saves your time cost. You can also dynamically adjust the stack template based on service requirements. If you do not need a group of resources, you can delete them by one click.

+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_01_0004.html b/docs/rts/umn/rts_01_0004.html new file mode 100644 index 000000000..e00474b07 --- /dev/null +++ b/docs/rts/umn/rts_01_0004.html @@ -0,0 +1,514 @@ + + +

Supported Resources

+

RTS supports 44 types of resources, including compute, storage, and network resources. Table 1 describes resource types supported by RTS. You can also log in to the RTS management console and view those resource types on the Resource Types page.

+

For details about resource types, see Resource Type Reference.

+

OSE is the abbreviation of OpenStack Extension. In Table 1, OSE indicates an extended resource type except for default resource types of OpenStack Heat, or a user-defined resource type.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Resource types supported by RTS

Resource Type

+

Description

+

Supported by RTS

+

Supported by Heat

+

Dependent Service

+

OS::Cinder::Volume

+

Resource for providing Cinder volumes

+

Yes

+

Yes

+

EVS

+

OS::Cinder::VolumeAttachment

+

Resoure for associating volumes with instances

+

Yes

+

Yes

+

EVS

+

OS::Heat::AutoScalingGroup

+

Auto Scaling (AS) group that can scale any resources

+

Yes

+

Yes

+

RTS

+

OS::Heat::CloudConfig

+

Configuration resource for representing cloud-init cloud-config

+

Yes

+

Yes

+

RTS

+

OS::Heat::MultipartMime

+

Resource that assembles a collection of software configurations as a multi-part mime

+

Yes

+

Yes

+

RTS

+

OS::Heat::RandomString

+

Resource for generating a random string

+

Yes

+

Yes

+

RTS

+

OS::Heat::ResourceGroup

+

Creating one or more identically configured nested resources

+

Yes

+

Yes

+

RTS

+

OS::Heat::ScalingPolicy

+

Resource for creating OS::Heat::AutoScalingGroup

+

Yes

+

Yes

+

RTS

+

OS::Heat::SoftwareComponent

+

Resource for describing and storing a software component

+

Yes

+

Yes

+

RTS

+

OS::Heat::SoftwareConfig

+

Resource for describing and storing a software configuration

+

Yes

+

Yes

+

RTS

+

OS::Heat::SoftwareDeployment

+

Resource for describing and storing a software deployment

+

Yes

+

Yes

+

RTS

+

OS::Heat::StructuredConfig

+

Resource that has the same logic with OS::Heat::SoftwareConfig

+

Yes

+

Yes

+

RTS

+

OS::Heat::WaitCondition

+

Resource for handling signals received by WaitConditionHandle

+

Yes

+

Yes

+

RTS

+

OS::Heat::WaitConditionHandle

+

Resource for creating instance signals

+

Yes

+

Yes

+

RTS

+

OS::Neutron::FloatingIP

+

Resource for creating a floating IP address for Neutron

+

Yes

+

Yes

+

VPC

+

OS::Neutron::FloatingIPAssociation

+

Resource for associating floating IP addresses and ports

+

Yes

+

Yes

+

VPC

+

OS::Neutron::Net

+

Resource for creating Neutron networks

+

Yes

+

Yes

+

VPC

+

OS::Neutron::Port

+

Resource for creating Neutron network ports

+

Yes

+

Yes

+

VPC

+

OS::Neutron::Router

+

Resource for implementing Neutron routers

+

Yes

+

Yes

+

VPC

+

OS::Neutron::RouterInterface

+

Resource for creating Neutron router interfaces

+

Yes

+

Yes

+

VPC

+

OS::Neutron::SecurityGroup

+

Resource for creating Neutron security groups

+

Yes

+

Yes

+

VPC

+

OS::Neutron::Subnet

+

Resource for creating Neutron subnets

+

Yes

+

Yes

+

VPC

+

OS::Nova::KeyPair

+

Resource for creating Nova key pairs

+

Yes

+

Yes

+

ECS

+

OS::Nova::Server

+

Resource for creating Nova instances

+

Yes

+

Yes

+

ECS

+

OS::Nova::ServerGroup

+

Resource for creating a Nova server group

+

Yes

+

Yes

+

ECS

+

OSE::AS::ScalingConfig

+

Resource for creating an AS configuration

+

Yes

+

No

+

AS

+

OSE::AS::ScalingGroup

+

Resource for creating an AS group

+

Yes

+

No

+

AS

+

OSE::AS::ScalingPolicy

+

Resource for creating an AS policy

+

Yes

+

No

+

AS

+

OSE::CES::Alarm

+

Resource for creating a Cloud Eye alarm

+

Yes

+

No

+

Cloud Eye

+

OSE::ELB::LoadBalancer

+

Resource for creating load balancers

+

Yes

+

No

+

ELB

+

OSE::ELB::Listener

+

Resource for creating classic load balancer listeners

+

Yes

+

No

+

ELB

+

OSE::ELB::HealthCheck

+

Resource for creating health checks for classic load balancers

+

Yes

+

No

+

ELB

+

OSE::ELB::Member

+

Resource for creating backend servers for classic load balancers

+

Yes

+

No

+

ELB

+

OSE::ELB::Certificate

+

Resource for creating certificates for classic load balancers

+

Yes

+

No

+

ELB

+

OS::Neutron::LBaaS::HealthMonitor

+

Resource for handling enhanced load balancer listeners

+

Yes

+

No

+

ELB

+

OS::Neutron::LBaaS::Listener

+

Resource for creating enhanced load balancer listeners

+

Yes

+

No

+

ELB

+

OS::Neutron::LBaaS::LoadBalancer

+

Resource for creating enhanced load balancers

+

Yes

+

No

+

ELB

+

OS::Neutron::LBaaS::Pool

+

Resource for creating backend server groups for enhanced load balancers

+

Yes

+

No

+

ELB

+

OS::Neutron::LBaaS::PoolMember

+

Resource for creating backend servers for enhanced load balancers

+

Yes

+

No

+

ELB

+

OSE::RDS::Instance

+

Resource for creating an RDS DB instance

+

Yes

+

No

+

RDS

+

OSE::VPC::Vpc

+

Resource for creating a VPC

+

Yes

+

No

+

VPC

+

OSE::VPC::Subnet

+

Resource for creating a VPC subnet

+

Yes

+

No

+

VPC

+

OSE::SFS::Share

+

Resource for creating a file share

+

Yes

+

No

+

SFS

+

OSE::SFS::ShareAccessRule

+

Resource for creating rules for accessing file shares

+

Yes

+

No

+

SFS

+
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_01_0006.html b/docs/rts/umn/rts_01_0006.html new file mode 100644 index 000000000..d1b3348ca --- /dev/null +++ b/docs/rts/umn/rts_01_0006.html @@ -0,0 +1,14 @@ + + +

Constraints

+

Limitations

  • RTS does not support snapshot-related APIs and the following operations: suspend, restore, discard, and adopt.
  • The Availability Zone (AZ) attribute cannot be updated in a stack life cycle.
  • Names of resources must be unique in the same nesting level.
+
+

Specification Limitations

  • Each tenant can create a maximum of 100 stacks.
  • A maximum of 1000 resources can be created in a stack.
  • Each stack contains a maximum of 1000 operation logs.
  • A maximum of seven stacks can be nested together.
  • The maximum size of a decompressed template file is 512 KB.
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_01_0007.html b/docs/rts/umn/rts_01_0007.html new file mode 100644 index 000000000..2d3b3a291 --- /dev/null +++ b/docs/rts/umn/rts_01_0007.html @@ -0,0 +1,111 @@ + + +

Heat Client

+

Overview

The Heat client is a subproject of OpenStack Client, functioning as a command line client targeted for Heat. You can use this client to access cloud services by running commands.

+

RTS supports Heat 1.5.1.

+

To use the Heat client, you need to install and configure OpenStack Client first. For details, see Installing OpenStack Client and Configuration.

+
+
+

Installing OpenStack Client

To install OpenStack Client, you need to install and run the python-openstackclient plug-in and ensure that the plug-in is running properly.

+

OpenStack Client can be used on all OSs as long as python-openstackclient is running properly. Operation methods vary depending on the OS you use. The 64-bit Ubuntu 16.04 OS is recommended. This section describes how to install and configure OpenStack Client by using the 64-bit Ubuntu 16.04 OS as an example.

+

To install OpenStack Client, perform the following operations as user root:

+
  1. Run the following commands to update the OS:

    apt-get update

    +

    apt-get upgrade

    +
  2. Install Python.

    Install Python and pip based on the type of the OS. Python 2.7 is supported.

    +

    Ubuntu 16.04 includes Python 2.7. If Python is not installed, perform the following steps to install it:

    +

    Run the following command to install Python:

    +

    apt-get install python

    +

    Run the following command to install Setuptools:

    +

    apt-get install python-setuptools

    +

    Run the following command to install pip:

    +

    apt-get install python-pip

    +

    If Ubuntu supports Setuptools and pip of earlier versions, you can install them offline.

    +

    Run the following command to install Dev:

    +

    apt-get install python-dev

    +
  3. Install python-openstackclient and its dependent components.

    The following python-openstackclient versions are supported by default:

    +
    • python-openstackclient: 3.2.1
    • python-novaclient: 6.0.2
    • python-glanceclient: 2.5.0
    • python-keystoneclient: 3.5.1
    • python-neutronclient: 6.0.1
    • python-cinderclient: 1.9.0
    • python-heatclient: 1.5.1
    • python-designateclient: 2.3.0
    • openstacksdk: 0.9.5
    • cliff: 2.2.0
    • os-client-config: 1.21.1
    • osc-lib: 1.1.0
    +

    Run the following command to install python-openstackclient using pip:

    +

    pip install python-openstackclient==3.2.1

    +

    After the installation is complete, run the following command to verify the installation:

    +

    openstack -h

    +

    Check whether help information is displayed. The installation is successful if help information is displayed.

    +

    Other components can be installed in sequence using the same command.

    +
+
+

Configuration

You can configure OpenStack Client either as user root or as a common user.

+
  1. Switch to the directory where OpenStack Client is installed and create an environment variable file, for example, novarc.
  2. Use a text editor to edit the environment variable file and enter the username, password, region, IAM IP address, and port number.

    The following is an example:

    +
    export OS_USERNAME="user_name" 
    +export OS_USER_DOMAIN_NAME=user_domain_name 
    +export OS_PASSWORD=******* 
    +export TENANT_ID=********
    +
    +# Only change these for a different region
    +export OS_TENANT_NAME=az1 
    +export OS_PROJECT_NAME=az1 
    +export OS_AUTH_URL=https://iam.az1.domainname.com:443/v3
    +
    +# No changes needed beyond this point
    +export NOVA_ENDPOINT_TYPE=publicURL 
    +export OS_ENDPOINT_TYPE=publicURL 
    +export CINDER_ENDPOINT_TYPE=publicURL 
    +export OS_VOLUME_API_VERSION=2 
    +export OS_IDENTITY_API_VERSION=3 
    +export OS_IMAGE_API_VERSION=2
    +

    Environment variables to be configured include the username, password, IAM URL, and port number. Table 1 describes the required environment variables.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Environment variables

    Parameter

    +

    Description

    +

    OS_USERNAME

    +

    Specifies the username for logging in to the management console.

    +

    OS_USER_DOMAIN_NAME

    +

    Specifies the enterprise account for logging in to the management console.

    +

    OS_PASSWORD

    +

    Specifies the password for logging in to the management console.

    +

    TENANT_ID

    +

    Specifies the project ID provided in the project list on the My Credentials page.

    +

    OS_TENANT_NAME

    +

    Specifies the project name provided in the project list on the My Credentials page.

    +

    OS_PROJECT_NAME

    +

    The value is the same as the OS_TENANT_NAME value.

    +

    OS_AUTH_URL

    +

    The parameter value is in the format of https://IAM URL:Port number/API version, for example, https://iam.example.com:443/v3.

    + +
    +
    +
  3. Run the following command to set environment variables:

    source novarc

    +
+

The Heat client becomes available after OpenStackClient is installed and configured. For more information, see Creating Resources Using a Template (Using the Heat Client).

+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_01_0008.html b/docs/rts/umn/rts_01_0008.html new file mode 100644 index 000000000..5589ca812 --- /dev/null +++ b/docs/rts/umn/rts_01_0008.html @@ -0,0 +1,13 @@ + + +

User Permissions

+

The cloud system provides two types of user permissions by default, user management and resource management.

+
  • User management refers to management of users, user groups, and user group permissions.
  • Resource management refers to control of operations on cloud service resources.
+

For details, see Permissions.

+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0001.html b/docs/rts/umn/rts_02_0001.html new file mode 100644 index 000000000..109767eb3 --- /dev/null +++ b/docs/rts/umn/rts_02_0001.html @@ -0,0 +1,13 @@ + + +

Getting Started

+
+ + diff --git a/docs/rts/umn/rts_02_0002.html b/docs/rts/umn/rts_02_0002.html new file mode 100644 index 000000000..3485eb9e0 --- /dev/null +++ b/docs/rts/umn/rts_02_0002.html @@ -0,0 +1,63 @@ + + +

Creating Resources Using a Template (Using the Heat Client)

+

After the Heat client is installed and configured, you can use this client to create an ECS.

+

The required operations are as follows:

+
  1. Compile a Template: A template is a collection of resources and a blueprint for resource orchestration. Before creating a resource, compile a template according to syntax requirements.
  2. Create Resources: To create an ECS, run commands on the Heat client to create an ECS stack.
  3. View Resources: To view resources, run commands on the Heat client to view all resource stacks and details of a specified resource stack.
  4. Delete Resources: To delete resources, run commands on the Heat client to delete the resource stack if the stack is no longer used.
+

Compile a Template

Create a template and name it server_instance.yaml. The template content is as follows:

+
heat_template_version: 2014-10-16
+description: Create a simple ECS instance.
+parameters:
+  name:
+    type: string
+    description: Specifies the ECS name.
+  image: 
+    type: string 
+    description: Specifies the image used for creating ECS. The value can be the name or ID of the image.
+  flavor: 
+    type: string 
+    description: Specifies the flavor used for creating ECS.
+  key: 
+    type: string 
+    description: Specifies the key pair used for creating ECS. The value can be the name of the key pair. 
+  network_id: 
+    type: string 
+    description: Specifies the network used for creating ECS. The value can be the name or ID of the network.
+  availability_zone:
+    type: string
+    description: Specifies the name of the AZ to which the ECS belong.
+
+resources:
+  nova_serer:
+    type: OS::Nova::Server
+    properties:
+      name: { get_param: name }
+      image: { get_param: image } 
+      flavor: { get_param: flavor } 
+      key_name: { get_param: key } 
+      networks: 
+        - network: { get_param: network_id }
+      availability_zone: { get_param: availability_zone } 
+

This YAML file contains four first-level fields:

+
  • heat_template_version: indicates the template version. This field is mandatory.
  • description: provides a description for the template. This field is optional.
  • parameters: defines template parameters. In this example template, this field defines the ECS name, image name or ID, key pair, specifications, VPC, and AZ. All of these can be used by function get_param in resources.
  • resources: defines resources to be created by the template. In this example, the resources is an ECS.
  • type: defines the resource. You need to enter parameters in properties when creating a resource. For details, see Create Resources.
+
+

Create Resources

Run the following command on the Heat client to create a resource stack:

+

heat stack-create -f server_instance.yaml -P 'name=ecs_name;image=Redhat-6.9;flavor=m1.medium;key=keypair_name;network_id=external-network3;availability_zone=az_name' ecsStack

+

In this command,

+
  • server_instance.yaml: indicates the name of the template file.
  • ecsStack: indicates the name of the resource stack to be created. The value can be user-defined.
  • Other variables are values of the parameters defined in the template.
+
+

View Resources

Perform the following operations to check whether the resource stack is created:
  • Run the following command to query all stacks and check whether the new stack is included:

    heat stack-list

    +
  • (Optional) Run the following command to view details of the new stack:

    heat stack-show ecsStack

    +
+
+
+

Delete Resources

If you do not need a resource stack any longer, run the following command to delete it:

+

heat stack-delete ecsStack

+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0007.html b/docs/rts/umn/rts_02_0007.html new file mode 100644 index 000000000..717faecac --- /dev/null +++ b/docs/rts/umn/rts_02_0007.html @@ -0,0 +1,93 @@ + + +

Creating Resources Using a Template (Using the Console)

+

With RTS, you can orchestrate a stack that contains a collection of resources using a template and maintain these resources by managing stacks on the console. This section describes how to orchestrate a complex application with RTS by creating an example Elastic Cloud Server (ECS). After the operations in this section are complete, you can view a created ECS on the ECS console.

+

The required operations are as follows:

+
  1. Create a Key Pair: Create a key pair for logging in to an ECS through SSH. If you already have a key pair, skip this step.
  2. Create an ECS Stack: Compile a template for creating an ECS.
+

Create a Key Pair

To create an ECS using RTS, you need to create a key pair first for identity authentication during SSH login.

+

If you already have a key pair, skip this step.

+
+
  1. Log in to the management console.
  2. Click in the upper left corner to select the desired region and project.
  3. Under Computing, click Elastic Cloud Server.
  4. In the navigation tree on the left, choose Key Pairs and click Create Key Pair.
  5. Enter a key pair name and click OK.

    A key pair name consists of two parts: KeyPair and four random digits. You can enter an easy-to-remember name, for example, KeyPair-xxxx_ecs.

    +
  6. Manually or automatically download the private key file. The file name is a 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 stack, provide the name of your desired key pair. Each time you log in to the ECS using SSH, provide the private key.

    +
    +
+
+

Create an ECS Stack

  1. Log in to the management console.
  2. Click in the upper left corner to select the desired region and project.
  3. Under Management & Deployment, click Resource Template Service.
  4. Click Create Stack.
    Figure 1 Create Stack
    +
  5. Confirm the desired region and project.

    If the region or project is incorrect, click the drop-down list for correction.

    +
  6. Select Manually specify to enter the template content.

    The details of an example ECS template are as follows:

    +
    heat_template_version: 2014-10-16
    +
    +description: Create a simple ECS instance.
    +
    +parameters:
    +  name:
    +    type: string
    +    label: ECS Name
    +    description: Specifies the ECS name.
    +  image:
    +    type: string
    +    label: Image Name or ID
    +    description: Specifies the image used for creating ECS. The value can be the name or ID of the image.
    +    constraints:
    +      - custom_constraint: glance.image
    +  key_name:
    +    type: string
    +    label: Key Pair
    +    description: Specifies the key pair used for creating ECS. The value can be the name of the key pair.
    +    constraints:
    +      - custom_constraint: nova.keypair
    +  flavor:
    +    type: string
    +    label: Flavor Name
    +    description: Specifies the flavor used for creating ECS.
    +    constraints:
    +      - custom_constraint: nova.flavor
    +  networks:
    +    type: string
    +    label: Network Name or ID
    +    description: Specifies the network used for creating ECS. The value can be the name or ID of the network.
    +    constraints:
    +      - custom_constraint: neutron.network
    +  availability_zone:
    +    type: string
    +    label: AZ Name
    +    description: Specifies the name of the AZ to which the ECS belong.
    +
    +parameter_groups:
    +  - label: ECS
    +    parameters:
    +      - name
    +      - image
    +      - key_name
    +      - flavor
    +      - networks
    +      - availability_zone
    +
    +resources:
    +  nova_serer:
    +    type: OS::Nova::Server
    +    properties:
    +      name: { get_param: name } 
    +      image: { get_param: image }
    +      flavor: { get_param: flavor }
    +      key_name: { get_param: key_name }
    +      networks:
    +        - network: { get_param: networks }
    +      availability_zone: { get_param: availability_zone }
    +

    This YAML file contains five first-level fields:

    +
    • heat_template_version: indicates the template version.
    • description: provides a description for the template.
    • parameters: defines template parameters. In this example template, this field defines the ECS name, image name or ID, key pair, specifications, VPC, and AZ. All of these can be used by function get_param in resources.
    • parameter_groups: indicates the parameter groups and the parameter sequence.
    • resources: defines resources to be created by the template. In this example, the resources is an ECS. type defines the resource type. Function get_param in properties directly uses parameters defined in parameters.
    +

    For more information about resource templates, see Template Structure.

    +
    +

    Enter and verify template content and click Next.

    +
  7. Specify details. Enter the stack name, ECS name, image, key pair, specifications, VPC, and AZ. Click Next.
    Figure 2 Specifying details
    +
  8. Confirm the information and create Next.

    It takes some time to complete the creation. After the stack is created, click Stack Management in the left pane to view the stack status. You can also access the ECS console to view the created ECS.

    +
+

For more information about stack management and templates, see Stack Management and Example Templates.

+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0008.html b/docs/rts/umn/rts_02_0008.html new file mode 100644 index 000000000..61990dfbb --- /dev/null +++ b/docs/rts/umn/rts_02_0008.html @@ -0,0 +1,25 @@ + + +

Template Syntax

+
+ + diff --git a/docs/rts/umn/rts_02_0009.html b/docs/rts/umn/rts_02_0009.html new file mode 100644 index 000000000..6f6cc8767 --- /dev/null +++ b/docs/rts/umn/rts_02_0009.html @@ -0,0 +1,59 @@ + + +

Template Structure

+

Templates are blueprints for describing infrastructure and architecture and can be used to create stacks. The compiler defines resource requirements and configuration details in the template and describes the dependency between resources.

+

A template must be in the YAML format and consists of the following parts:

+
heat_template_version: xxxx-xx-xx
+# Indicates the template version. This field is mandatory.
+description:
+# Provides template information, template application scenarios, and architecture. This field is optional.
+parameter_groups:
+# Indicates the parameter groups and parameter sequence. This field is optional.
+parameters:
+# Indicates the parameters to be input. Using parameters improves template flexibility and reusability. This field is optional.
+resources:
+# Indicates user-defined resources (such as VMs, networks, and volumes), dependencies among resources, and configuration details. This field is optional.
+outputs:
+# Indicates outputs of the created resources. This field is optional.
+conditions:
+# Indicates the conditions that stack creation time and update time must meet. This field is optional.
+

The following is an example template for creating an ECS.

+
heat_template_version: 2013-05-23
+
+description: Simple template to deploy a single compute instance
+
+parameters:
+  key_name:
+    type: string
+    label: Key Name
+    description: Name of key-pair to be used for compute instance
+  image_id:
+    type: string
+    label: Image ID
+    description: Image to be used for compute instance
+  instance_type:
+    type: string
+    label: Instance Type
+    description: Type of instance (flavor) to be used
+  net_id:
+    type: string
+    label: Network UUID
+    description: The network to be used
+
+resources:
+  my_instance:
+    type: OS::Nova::Server
+    properties:
+      key_name: { get_param: key_name }
+      image: { get_param: image_id }
+      flavor: { get_param: instance_type }
+      networks: [ { network: { get_param: net_id } } ]
+

Description:

+
  • heat_template_version: indicates the HOT template version. The value is a specified version. For details, see Template Version.
  • description: describes resources to be created using the template. This field is optional and can be user-defined.
  • parameters: defines some parameters, which are used in function get_param to define resource attributes. This field is optional.
  • resources: defines all resources to be created by RTS and dependencies between these resources. This field is the core of the template. type: indicates the resource type.
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0010.html b/docs/rts/umn/rts_02_0010.html new file mode 100644 index 000000000..6c13b32e4 --- /dev/null +++ b/docs/rts/umn/rts_02_0010.html @@ -0,0 +1,23 @@ + + +

Template Version

+

The heat_template_version field indicates the template version. Each HOT template includes the heat_template_version field that specifies the template version. Different HOT template versions support different internal functions. RTS supports the following HOT template versions:

+
  • heat_template_version 2013-05-23:

    The heat_template_version 2013-05-23 template supports the following internal functions:

    +

    get_attr, get_file, get_param, get_resource, list_join, resource_facade, str_replace, Fn::Base64, Fn::GetAZs, Fn::Join, Fn::MemberListToMap, Fn::Replace, Fn::ResourceFacade, Fn::Select, Fn::Split, and Ref

    +
+
  • heat_template_version 2014-10-16:

    The heat_template_version 2014-10-16 template supports the following internal functions:

    +

    get_attr, get_file, get_param, get_resource, list_join, resource_facade, str_replace, and Fn::Select

    +
  • heat_template_version 2015-04-30:

    The heat_template_version 2015-04-30 template supports the following internal functions:

    +

    get_attr, get_file, get_param, get_resource, list_join, repeat, digest, resource_facade, str_replace, and Fn::Select

    +
  • heat_template_version 2015-10-15:

    The heat_template_version 2015-10-15 template supports the following internal functions:

    +

    get_attr, get_file, get_param, get_resource, list_join, repeat, digest, resource_facade, str_replace, and str_split

    +
  • heat_template_version 2016-04-08:

    The heat_template_version 2016-04-08 template supports the following internal functions:

    +

    digest, get_attr, get_file, get_param, get_resource, list_join, map_merge, repeat, resource_facade, str_replace, and str_split

    +
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0011.html b/docs/rts/umn/rts_02_0011.html new file mode 100644 index 000000000..c2bdecd28 --- /dev/null +++ b/docs/rts/umn/rts_02_0011.html @@ -0,0 +1,14 @@ + + +

Template Description

+

Template description is specified in the description field. This field is used to further describe resources that can be deployed using the current template. If the description cannot be displayed in one line, it can go over several lines.

+
description: >
+  This is how you can provide a longer description
+  of your template that goes over several lines.
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0012.html b/docs/rts/umn/rts_02_0012.html new file mode 100644 index 000000000..0480e91bc --- /dev/null +++ b/docs/rts/umn/rts_02_0012.html @@ -0,0 +1,71 @@ + + +

Parameters

+

Parameters

Parameters are specified in the parameters field. Using parameters improves template flexibility and reusability. Some parameters in the template can be replaced as needed during stack creation.

+

You can use defined parameters in resources and outputs fields by invoking internal function get_param.

+

The following provides an example:

+
parameters:
+  name:
+    type: string
+    label:
+    description: 
+    default: Parameter default value
+

Description:

+
  • type: indicates the value type of a parameter, including string and number.
  • label: indicates the name of the parameter label displayed on the console.
  • description: indicates an explanation of this parameter.
  • default: indicates the default value of the parameter.
+
+

Parameter Groups

A parameter group is specified in the parameter_groups field. This field is used to group entered parameters and specify their sequence. This field is optional.

+

The following provides an example:

+
heat_template_version: 2014-10-16
+description: Create a serious of random strings
+parameters:
+  name:
+    type: string
+    default: random1
+  length:
+    type: number
+    default: 4
+  length1:
+    type: number
+    default: 5
+  length2:
+    type: number
+    default: 4
+parameter_groups:
+  - label: length
+    parameters:
+      - length
+      - length2
+      - length1
+resources:
+  random1:
+    type: OS::Heat::RandomString
+    properties:
+      length: 5
+  random2:
+    type: OS::Heat::RandomString
+    properties:
+      length: 5
+

The parameter group includes three parameters: length, length1, and length2. Set label to length and define these parameters in the Parameters area. After a template is uploaded, parameters are classified into two types: length Parameters and Other Parameters on the Specify Details page.

+
Figure 1 Parameter information
+
+

Parameter Constraints

When compiling a template, you can configure custom_constraint to obtain the list of values on the Specify Details page. You only need to select a value from the drop-downlist, reducing configuration time.

+

The custom_constraint attribute currently supports the following types:

+
  • glance.image
  • cinder.volume
  • neutron.network
  • neutron.router
  • neutron.subnet
  • nova.flavor
  • nova.keypair
+

For example, custom_constraint is configured for parameters image, key_name, flavor, and networks in the template for creating an ECS. The list of values of four parameters on the Specify Details page. For details, see Creating Resources Using a Template (Using the Console).

+
+

Valid Parameter Values

Valid-value constraints can be applied to numeric or string-type parameters, which specify a set of parameter values that a parameter may have. During the deployment, user-supplied values must match an element in the list of valid values.

+

The syntax is as follows:

+
allowed_values: [<value 1>, <value 2>, ...]
+

Or the following format:

+
allowed_values:
+- <value 1>
+- <value 2>
+  - ...
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0013.html b/docs/rts/umn/rts_02_0013.html new file mode 100644 index 000000000..15fcfc04c --- /dev/null +++ b/docs/rts/umn/rts_02_0013.html @@ -0,0 +1,58 @@ + + +

Resources

+

Resources are specified in the resources field. This field includes user-defined resources (such as VMs, networks, and volumes) and dependencies between them. Each resource has a unique name. Different resources must be placed in different paragraphs. The format is as following:

+
resources:
+  <resource ID>:
+    type: <resource type>
+    properties:
+      <property name>: <property value>
+    metadata:
+      <resource specific metadata>
+    depends_on: <resource ID or list of ID>
+    update_policy: <update policy>
+    deletion_policy: <deletion policy>
+

Syntax

resource ID

+

Indicates the resource ID, which must be unique in the template. You can use this resource ID to create other fields of a template.

+

type

+

Indicates the type of the resource which is being declared. For example, OS::Nova::Server indicates an ECS instance. For resource types supported by RTS and their details, see Supported Resources.

+

properties

+

The resource attribute is in the key-value format and is an additional option for a resource. For example, you must specify a flavor name for each ECS instance.

+

An example is provided as follows:

+
resources:
+  my_instance:
+    type: OS::Nova::Server
+    properties:
+      flavor: m1.small
+

If no attribute needs to be declared for a resource, resource attributes can be ignored.

+

depends_on

+

In the template, you can set depends_on to specify that a specific resource is created after the other resource is created. For example, after depends_on is set for a resource, this resource can only be created after the resource specified in depends_on is created.

+

As shown in the following code segment, WebServer is created only after DatabaseServer is created.

+
heat_template_version: 2013-05-23
+resources:
+  WebServer:
+    type: OS::Nova::Server
+    depends_on: DatabaseServer
+  DatabaseServer:
+    type: OS::Nova::Server
+    properties:
+      flavor: m1.small
+      image: CentOS 7.6 64bit
+

update_policy and deletion_policy

+

In the template, you can set update_policy or deletion_policy to declare that a resource is retained when the resource stack is updated or deleted. For example, if you want to retain the ECS instance when deleting the stack, you can declare as the following code segment shows:

+
resources:
+  ecs_instance:
+    type: OS::Nova::Server
+    properties:
+      flavor: m1.small
+      image: CentOS 7.6 64bit
+    deletion_policy: Retain
+

In this example, if a stack using the template is deleted, the ecs_instance resource is retained.

+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0014.html b/docs/rts/umn/rts_02_0014.html new file mode 100644 index 000000000..1c129c49b --- /dev/null +++ b/docs/rts/umn/rts_02_0014.html @@ -0,0 +1,26 @@ + + +

Outputs

+

Outputs are specified in the outputs field. This field is used to display the output of created resources. This field is optional. For example, the following code segment defines the IP address of an ECS instance. You can view the IP address from the response of a stack querying request.

+
outputs:
+  instance_ip:
+    description: The IP address of the deployed instance
+    value: { get_attr: [my_instance, first_address] }
+

Syntax

outputs consists of three parts: output item, description, and value. If multiple output items are declared, use commas (,) to separate them. The following is an example code segment.

+
outputs:  
+  ECSName:  
+    description: The Name of the ECS instance newly created. 
+    value: { get_attr: [server, name] }
+  floating_ip:  
+    description: The floating ip address of the server.  
+    value: { get_attr: [floating_ip, floating_ip_address] }
+

In this command,

+
  • ECSName and floating_ip are both output items, which are unique in the template.
  • description: describes the meaning of ECSName. This field is optional.
  • value: indicates the attribute value returned when the stack querying API is invoked, or the output value viewed on the management console. The value value can be obtained using internal functions, such as get_attr in this example.
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0015.html b/docs/rts/umn/rts_02_0015.html new file mode 100644 index 000000000..fcc1ea478 --- /dev/null +++ b/docs/rts/umn/rts_02_0015.html @@ -0,0 +1,40 @@ + + +

Conditions

+

Conditions are specified in the conditions field. This field indicates the conditions that must be met during stack creation and update. You can define one or more conditions based on the parameters entered during stack creation and update.

+

Conditions can be associated with resources, resource attributes, and outputs. For example, you can create resources, set different attribute values, and provide stack outputs based on conditions.

+

Syntax

The syntax of conditions is as follows:

+
conditions:
+  <condition name1>: {expression1}
+  <condition name2>: {expression2}
+  ...
+

condition name

+

Indicates the condition name, which is unique in the template.

+

expression

+

Indicates an expression that is expected to return True or False. Generally, conditional functions can be used as expressions, such as EQUALS, NOT, and AND.

+

The following provides an example:

+
parameters:
+  env_type:
+    default: test
+    type: string
+conditions:
+  create_prod_res: {equals : [{get_param: env_type}, "prod"]}
+resources:
+  volume:
+    type: OS::Cinder::Volume
+    condition: create_prod_res
+    properties:
+      size: 1
+outputs:
+  vol_size:
+    value: {get_attr: [my_volume, size]}
+    condition: create_prod_res
+

volume in resources and vol_size in outputs are both associated with the create_prod_res condition. It can be judged according to the definition of the create_prod_res condition that, volume is created and vol_size is output only when env_type is set to prod.

+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0016.html b/docs/rts/umn/rts_02_0016.html new file mode 100644 index 000000000..48fbc0d1e --- /dev/null +++ b/docs/rts/umn/rts_02_0016.html @@ -0,0 +1,12 @@ + + +

Internal Function

+

Internal functions are used in a template to implement specific functions. For example, internal functions can be used to obtain external input parameters and attribute information about specified resources. Internal functions can only be used in the resources or outputs field.

+

Internal functions include get_attr, get_file, get_param, and get_resource. The internal functions supported by different template versions are different. For details, see Template Version. For syntax and examples of internal functions, see OpenStack Official Website.

+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0017.html b/docs/rts/umn/rts_02_0017.html new file mode 100644 index 000000000..15f69f5ba --- /dev/null +++ b/docs/rts/umn/rts_02_0017.html @@ -0,0 +1,19 @@ + + +

Stack Management

+
+ + diff --git a/docs/rts/umn/rts_02_0018.html b/docs/rts/umn/rts_02_0018.html new file mode 100644 index 000000000..f0f55a4f4 --- /dev/null +++ b/docs/rts/umn/rts_02_0018.html @@ -0,0 +1,41 @@ + + +

Scenarios

+
  • To perform operations on a stack using the Heat client, you only need to compile a template file.
  • To perform operations on a stack using the RTS console, you need to not only compile a template file, but also package the file in the required format if you create a stack by uploading a template. However, packaging the template file is not required if you choose to compile a template online. Compiling a template online is suitable if only one template is required. Uploading a template fits a wider range of templates: a single template or nested templates.
+ +
+ + + + + + + + + + + + + + +
Table 1 Scenario description

Method

+

How to Prepare a Template

+

Heat client

+

Use a text editor (like Notepad++) to compile a template and save it in the YAML format.

+

Management console

+

Entering template content

+

Compile a template using a text editor and copy template content to the text box when creating a stack.

+

Uploading a file

+

Compile a template using a text editor and then pack it in the format provided in Template Package Structure. Example Template Packages provides examples for your reference.

+
+
+

Template files can be in the YAML or JSON format.

+

You can compile a template by following instructions in Template Syntax. If you are not familiar with how to compile a template, you can refer to our examples.

+
+
+ + diff --git a/docs/rts/umn/rts_02_0020.html b/docs/rts/umn/rts_02_0020.html new file mode 100644 index 000000000..e21d3119a --- /dev/null +++ b/docs/rts/umn/rts_02_0020.html @@ -0,0 +1,73 @@ + + +

Template Package Structure

+

You need to prepare a .zip package. For the package structure, see Figure 1.

+
Figure 1 Package structure
+
  1. Resources Directory

    This directory is used to store the files referenced by template files in the root directory. You can save the template files, configuration files, and script files used by the template in this directory. Templates of a nested stack must be placed in this directory. Do not change the name and structure of the directory.

    +
    Figure 2 Structure of Resources directory
    +
  2. File logo.png

    The default file name logo is recommended, and there are no restrictions on the logo file name. However, if the file name is different from the default logo.png file, you need to ensure that the logo file name in the package is consistent with the Logo value in file manifest.yaml.

    +

    File logo.png is not supported and will be supported in later versions.

    +
    +
  3. File manifest.yaml

    File manifest. yaml describes basic information of the package. The default file format is recommended. The following is an example file:

    +
    Format: Heat.HOT/1.0
    +Type: Application
    +FullName: Reserved
    +Name: Auto Scaling Group
    +Description: "Heat template to deploy a stack."
    +Author: RTS
    +Tags:
    +  - hot-based
    +Logo: logo.png
    +

    The file name is fixed and cannot be user-defined.

    +
    +
  4. random.yaml and template.yaml

    random.yaml and template.yaml are two example templates. You can define your own template based on these example templates. random.yaml is a template file that can be used to create random strings. This file can be used to create two random strings. template.yaml is a nested template file, which contains a nested template (random1.yaml). The sub-template is in the Resources/HotFiles directory.

    +

    The following is an example manifest.yaml file:

    +
    heat_template_version: 2014-10-16
    +description: Create a serious of random string
    +
    +parameters:
    +  length:
    +    type: number
    +    default: 4
    +
    +resources:
    +  random1:
    +    type: OS::Heat::RandomString
    +    properties:
    +      length: {get_param: length}
    +  random2:
    +    type: OS::Heat::RandomString
    +    properties:
    +      length: {get_param: length}
    +
    +

    The following is an example template.yaml file:

    +
    heat_template_version: 2014-10-16
    +description: Create a serious of random string
    +
    +parameters:
    +  length:
    +    type: number
    +    default: 4
    +
    +resources:
    +  random1:
    +    type: OS::Heat::RandomString
    +    properties:
    +      length: {get_param: length}
    +  random2:
    +    type: OS::Heat::RandomString
    +    properties:
    +      length: {get_param: length}
    +  random3:
    +    type: random1.yaml
    +
+
  1. A valid package name contains a maximum of 32 characters, including letters, digits, hyphens (-), and underscores (_). The name must start with a letter and end with .zip.
  2. The structure of directory Resources/HotFiles is fixed and cannot be changed.
  3. When you use a .zip package, all template files in the root directory are displayed on the console, and you can select any template to create a stack.
  4. If necessary, you can add a file named environment.yaml to the root directory configured on the console.
  5. The logo file and the manifest.yaml file are mandatory and must be stored in the root directory.
  6. If file get_file: abc.txt is used in the template, this file must be placed in directory Resources/HotFiles.
  7. Other restrictions are as follows:
    • The maximum size of a template file is 100 KB.
    • The maximum size of a .zip package cannot exceed 80 KB.
    • The maximum nesting depth is restricted to seven.
    • The maximum number of files is 50.
    +
+
+
+ + diff --git a/docs/rts/umn/rts_02_0021.html b/docs/rts/umn/rts_02_0021.html new file mode 100644 index 000000000..f464aaf16 --- /dev/null +++ b/docs/rts/umn/rts_02_0021.html @@ -0,0 +1,16 @@ + + +

Template File Packaging

+

After you have prepared all template files and completed the required configuration, you can use compression software to package them into .zip files. The following is an example of using WinRAR to package a template package.

+
  1. Select all files, right-click, and choose Add to archive.
    Figure 1 Packaging template files
    +
  2. Select the .zip format.
    Figure 2 Package type
    +
  3. Produce a package.
    Figure 3 Compression format
    +
+

A template package is prepared. The size of a .zip template package cannot exceed 80 KB. A template package can contain one or more template files.

+
+ + diff --git a/docs/rts/umn/rts_02_0022.html b/docs/rts/umn/rts_02_0022.html new file mode 100644 index 000000000..2d9f8a1c5 --- /dev/null +++ b/docs/rts/umn/rts_02_0022.html @@ -0,0 +1,12 @@ + + +

Example Template Packages

+

The following are example template packages:

+ +
+ + diff --git a/docs/rts/umn/rts_02_0023.html b/docs/rts/umn/rts_02_0023.html new file mode 100644 index 000000000..fad53d32c --- /dev/null +++ b/docs/rts/umn/rts_02_0023.html @@ -0,0 +1,31 @@ + + +

Creating a stack

+

With RTS, you can create a collection of cloud resources using a template. These resources are defined as a stack. This section uses creating a random string as an example to describe how to create a stack on the RTS console.

+

Prerequisite

You have prepared a stack template.

+
+

Procedure

  1. Log in to the management console.
  2. Click in the upper left corner to select the desired region and project.
  3. Under Management & Deployment, click Resource Template Service.
  4. Click Create Stack in the upper right corner.

    The process of creating a stack is displayed.

    +
  5. Upload a template.
    • For a single template, you can create a stack by entering template content online.
      1. Template Source: Select Manually specify.
      2. Template Content: Enter template content online or copy content of an existing template to the text box.

        The template must comply with the JSON or YAML format and uses the UTF-8 encoding format.

        +
        +
      3. Click Next to check syntax.

        If the syntax check succeeds, the Specify Details page is displayed. If the syntax check fails, modify the template as prompted.

        +
      +
    • For a single or nested template, you can create a stack by uploading a template package.
      Figure 1 Uploading a template file
      +
      1. Template Source: Select Upload template.
      2. Stack Template: Click , select the prepared template package, and click Upload.
      3. Main File: Select a template file as the main file based on the resources you want to create. A template package may contain multiple template files.
      4. After selecting a main file, click Next to check the syntax.

        If the syntax check succeeds, the Specify Details page is displayed. If the syntax check fails, modify the template as prompted.

        +
      +
    +
  6. On the Specify Details page, enter a stack name, set parameters based on the required resource information, and click Next.

    The stack name:

    +
    • Contains 1 to 255 characters.
    • Starts with a letter.
    • Can contain digits, hyphens (-), dots (.), and underlines (_).
    +
    +
  7. Confirm that stack configurations are correct and click Submit.

    It takes some time to complete the creation.

    +
+
+

Result

You can view the stack creation result in the stack list or details or query events.

+

You can click Events on the Specify Details page to view each operation occurring during stack creation. All operations are displayed in the time sequence, and the latest operation is in the first row.

+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0029.html b/docs/rts/umn/rts_02_0029.html new file mode 100644 index 000000000..d0e5b9b5f --- /dev/null +++ b/docs/rts/umn/rts_02_0029.html @@ -0,0 +1,16 @@ + + +

Viewing Details of a Stack

+
  1. Log in to the management console.
  2. Click in the upper left corner to select the desired region and project.
  3. Under Management & Deployment, click Resource Template Service.
  4. In the stack list, locate the target stack and click its name.

    The stack details page is displayed.

    +
  5. View stack information, such as the name, ID, stack description, creation time, and status.

    If Parameter and Output are not empty, you can click View Details to see more information.

    +
  6. You can also click Resources, Events, and Template to view stack details.
    • Resources: displays information about each resource included in the stack.

      You can move your mouse to view resource details. If the created resources are nested, you can view the resources in the topology.

      +
      Figure 1 Viewing stack details
      +
    • Events: displays each event that occurred in the stack life cycle. Any operation on the stack is recorded in Events, including creation, deletion, and update.
    • Template: displays information of the template used in the stack.
    +
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0030.html b/docs/rts/umn/rts_02_0030.html new file mode 100644 index 000000000..f40298539 --- /dev/null +++ b/docs/rts/umn/rts_02_0030.html @@ -0,0 +1,19 @@ + + +

Updating a Stack

+

If the existing stack cannot meet your service requirements, you can use the update function to modify the stack. The procedure for updating a stack is the same as that for creating a stack.

+
  1. Log in to the management console.
  2. Click in the upper left corner to select the desired region and project.
  3. Under Management & Deployment, click Resource Template Service.
  4. In the stack list, locate the target stack and click Update in the Operation column.

    The process of updating a stack is displayed.

    +
  5. Upload a template.

    You can modify the template content or upload a new template file to update the stack. Note that you can replace the template content with another template or upload a new template package to rebuild the stack.

    +
  6. Configure parameters based on the template that you use.

    Updating the stack name is not supported.

    +
    +
  7. Confirm that stack configurations are correct and click Submit.

    It takes some time to complete the update.

    +
+

Result

Go back to the stack list and check whether stack status changes to Update complete. You can also view the updated template and resource information on the stack details page and the entire life cycle of the stack on the Events page.

+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0035.html b/docs/rts/umn/rts_02_0035.html new file mode 100644 index 000000000..0008f35fe --- /dev/null +++ b/docs/rts/umn/rts_02_0035.html @@ -0,0 +1,14 @@ + + +

Deleting a Stack

+

If you no longer use a stack, you can delete it.

+
  1. Log in to the management console.
  2. Click in the upper left corner to select the desired region and project.
  3. Under Management & Deployment, click Resource Template Service.
  4. In the stack list, select the target stack and click Delete in the Operation column.

    Deleting a stack deletes all resources in the stack. Exercise caution when performing this operation.

    +
    +
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0036.html b/docs/rts/umn/rts_02_0036.html new file mode 100644 index 000000000..defb426ff --- /dev/null +++ b/docs/rts/umn/rts_02_0036.html @@ -0,0 +1,97 @@ + + +

Resource Type Reference

+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0037.html b/docs/rts/umn/rts_02_0037.html new file mode 100644 index 000000000..1c888c6a4 --- /dev/null +++ b/docs/rts/umn/rts_02_0037.html @@ -0,0 +1,26 @@ + + +

Example Templates

+

This section introduces typical example templates.

+
+ + diff --git a/docs/rts/umn/rts_02_0046.html b/docs/rts/umn/rts_02_0046.html new file mode 100644 index 000000000..9f30117fc --- /dev/null +++ b/docs/rts/umn/rts_02_0046.html @@ -0,0 +1,214 @@ + + +

OS::Cinder::Volume

+

A resource that implements Cinder volumes.

+

Cinder volume is a storage in the form of block devices. It can be used, for example, for providing storage to instance. Volume supports creation from snapshot, backup or image. Also volume can be created only by size.

+

Optional Properties

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

Name

+

Description

+

availability_zone

+

The availability zone in which the volume will be created.

+

String value expected.

+

Updates cause replacement.

+

backup_id

+

If specified, the volume to create from the backup.

+

The parameter backup_restore can specify how to restore the backup.

+

String value expected.

+

Can be updated without replacement.

+

backup_restore

+

The method of restoring a backup during the creation of a volume. The value is heat or vbs. The default value is heat.

+
  • When specified as heat, the native recovery method is used, which is to restore a volume from backup.
  • When specified as vbs, after the volume is created, the API of the VBS service is called for recovery.
+

String value expected.

+

Updates cause replacement.

+

description

+

A description of the volume.

+

String value expected.

+

Can be updated without replacement.

+

image

+

If specified, the name or ID of the image to create the volume from.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type glance.image

+
NOTE:

image, imageRef, snapshot_id and source_volid cannot appear at the same time, otherwise the stack will fail to create.

+
+

imageRef

+

The ID of the image to create the volume from.

+

String value expected.

+

Updates cause replacement.

+

metadata

+

Key/value pairs to associate with the volume.

+

Map value expected.

+

Can be updated without replacement.

+

name

+

A name used to distinguish the volume.

+

String value expected.

+

Can be updated without replacement.

+

size

+

The size of the volume in GB. On update only increase in size is supported.

+
  • This parameter is ignored when backup_id is specified and backup_restore is set to heat.
  • This parameter is not required when source_volid or snapshot_id is specified.
+

Integer value expected.

+

Can be updated without replacement.

+

The value must be at least 1.

+

snapshot_id

+

If specified, the snapshot to create the volume from.

+

String value expected.

+

Updates cause replacement.

+

source_volid

+

If specified, the volume to use as source.

+

String value expected.

+

Updates cause replacement.

+

volume_type

+

If specified, the type of volume to use, mapping to a specific backend.

+

String value expected.

+

Can be updated without replacement.

+

multiattach

+

Whether allow the volume to be attached more than once.

+

Boolean value expected.

+

Updates cause replacement.

+

Defaults to "False".

+
+
+
+

Attributes

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

Name

+

Description

+

availability_zone

+

The availability zone in which the volume is located.

+

bootable

+

Boolean indicating if the volume can be booted or not.

+

created_at

+

The timestamp indicating volume creation.

+

display_description

+

Description of the volume.

+

display_name

+

Name of the volume.

+

metadata

+

Key/value pairs associated with the volume.

+

metadata_values

+

Key/value pairs associated with the volume in raw dict form.

+

multiattach

+

Boolean indicating whether allow the volume to be attached more than once.

+

size

+

The size of the volume in GB.

+

snapshot_id

+

The snapshot the volume was created from, if any.

+

source_volid

+

The volume used as source, if any.

+

status

+

The current status of the volume.

+

volume_type

+

The type of the volume mapping to a backend, if any.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Cinder::Volume
+    properties:
+      availability_zone: String
+      backup_id: String
+      description: String
+      image: String
+      metadata: {...}
+      name: String
+      size: Integer
+      volume_type: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0047.html b/docs/rts/umn/rts_02_0047.html new file mode 100644 index 000000000..867c265c1 --- /dev/null +++ b/docs/rts/umn/rts_02_0047.html @@ -0,0 +1,70 @@ + + +

OS::Cinder::VolumeAttachment

+

Resource for associating volume to instance.

+

Resource for associating existing volume to instance. Also, the location where the volume is exposed on the instance can be specified.

+

Do not attach multiple volumes to one VM at the same time in the template.

+
+

Required Properties

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

Name

+

Description

+

instance_uuid

+

The ID of the server to which the volume attaches.

+

String value expected.

+

Can be updated without replacement.

+

volume_id

+

The ID of the volume to be attached.

+

String value expected.

+

Can be updated without replacement.

+

Value must be of type cinder.volume

+
+
+
+

Optional Properties

+
+ + + + + + + +

Name

+

Description

+

mountpoint

+

The location where the volume is exposed on the instance. This assignment may not be honored and it is advised that the path /dev/disk/by-id/virtio- be used instead.

+

String value expected.

+

Can be updated without replacement.

+

Detailed information about resource.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Cinder::VolumeAttachment
+    properties:
+      instance_uuid: String
+      mountpoint: String
+      volume_id: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0048.html b/docs/rts/umn/rts_02_0048.html new file mode 100644 index 000000000..7fd2b2082 --- /dev/null +++ b/docs/rts/umn/rts_02_0048.html @@ -0,0 +1,133 @@ + + +

OS::Heat::AutoScalingGroup

+

An autoscaling group that can scale arbitrary resources.

+

An autoscaling group allows the creation of a desired count of similar resources, which are defined with the resource property in HOT format. If there is a need to create many of the same resources (e.g. one hundred sets of Server, WaitCondition and WaitConditionHandle or even Neutron Nets), AutoScalingGroup is a convenient and easy way to do that.

+
  • During the scaling process, you are not allowed to create members. Otherwise, the scaling action fails.
  • Cross-AZ automatic scaling is not supported.
+
+

Required Properties

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

Name

+

Description

+

max_size

+

Maximum number of resources in the group.

+

Integer value expected.

+

Can be updated without replacement.

+

The value must be at least 0.

+

min_size

+

Minimum number of resources in the group.

+

Integer value expected.

+

Can be updated without replacement.

+

The value must be at least 0.

+

resource

+

Resource definition for the resources in the group, in HOT format. The value of this property is the definition of a resource just as if it had been declared in the template itself.

+

Map value expected.

+

Can be updated without replacement.

+
+
+
+

Optional Properties

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

Name

+

Description

+

cooldown

+

Cooldown period, in seconds.

+

Integer value expected.

+

Can be updated without replacement.

+

desired_capacity

+

Desired initial number of resources.

+

Integer value expected.

+

Can be updated without replacement.

+

rolling_updates

+

Policy for rolling updates for this scaling group.

+

Map value expected.

+

Can be updated without replacement.

+

Defaults to "{max_batch_size: 1, min_in_service: 0, pause_time: 0}".

+

Map properties:

+
  • max_batch_size

    The maximum number of resources to replace at once.

    +

    Integer value expected.

    +

    Can be updated without replacement.

    +

    Defaults to "1".

    +

    The value must be at least 1.

    +
  • min_in_service

    The minimum number of resources in service while rolling updates are being executed.

    +

    Integer value expected.

    +

    Can be updated without replacement.

    +

    Defaults to "0".

    +

    The value must be at least 0.

    +
  • pause_time

    The number of seconds to wait between batches of updates.

    +

    Number value expected.

    +

    Can be updated without replacement.

    +

    Defaults to "0".

    +

    The value must be at least 0.

    +
+
+
+
+

Attributes

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

Name

+

Description

+

outputs

+

A map of resource names to the specified attribute of each individual resource that is part of the AutoScalingGroup. This map specifies output parameters that are available once the AutoScalingGroup has been instantiated.

+

outputs_list

+

A list of the specified attribute of each individual resource that is part of the AutoScalingGroup. This list of attributes is available as an output once the AutoScalingGroup has been instantiated. Detailed information about resource.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Heat::AutoScalingGroup
+    properties:
+      cooldown: Integer
+      desired_capacity: Integer
+      max_size: Integer
+      min_size: Integer
+      resource: {...}
+      rolling_updates: {"max_batch_size": Integer, "pause_time": Number, "min_in_service": Integer}
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0049.html b/docs/rts/umn/rts_02_0049.html new file mode 100644 index 000000000..a59cee712 --- /dev/null +++ b/docs/rts/umn/rts_02_0049.html @@ -0,0 +1,40 @@ + + +

OS::Heat::CloudConfig

+

A configuration resource for representing cloud-init cloud-config.

+

This resource allows cloud-config YAML to be defined and stored by the config API. Any intrinsic functions called in the config will be resolved before storing the result.

+

This resource will generally be referenced by OS::Nova::Server user_data, or OS::Heat::MultipartMime parts config. Since cloud-config is boot-only configuration, any changes to the definition will result in the replacement of all servers which reference it.

+

Optional Properties

+
+ + + + + + + +

Name

+

Description

+

cloud_config

+

Map representing the cloud-config data structure which will be formatted as YAML.

+

Map value expected.

+

Updates cause replacement.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Heat::CloudConfig
+    properties:
+      cloud_config: {...}
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0050.html b/docs/rts/umn/rts_02_0050.html new file mode 100644 index 000000000..1e93eb324 --- /dev/null +++ b/docs/rts/umn/rts_02_0050.html @@ -0,0 +1,62 @@ + + +

OS::Heat::MultipartMime

+

Assembles a collection of software configurations as a multi-part mime.

+

Parts in the message can be populated with inline configuration or references to other config resources. If the referenced resource is itself a valid multi-part mime message, that will be broken into parts and those parts appended to this message.

+

The resulting multi-part mime message will be stored by the configs API and can be referenced in properties such as OS::Nova::Server user_data.

+

This resource is generally used to build a list of cloud-init configuration elements including scripts and cloud-config. Since cloud-init is boot-only configuration, any changes to the definition will result in the replacement of all servers which reference it.

+

Optional Properties

+
+ + + + + + + +

Name

+

Description

+

parts

+

Parts belonging to this message.

+

List value expected.

+

Updates cause replacement.

+

Defaults to "[]".

+

List contents:

+
  • *

    Map value expected.

    +

    Updates cause replacement.

    +

    Map properties:

    +
    • config

      Content of part to attach, either inline or by referencing the ID of another software config resource.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • filename

      Optional filename to associate with part.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • subtype

      Optional subtype to specify with the type.\

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • Type

      Whether the part content is text or multipart.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Defaults to "text".

      +

      Allowed values: text, multipart

      +
    +
+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Heat::MultipartMime
+    properties:
+      parts: [{"filename": String, "subtype": String, "config": String, "type": String}, {"filename": String, "subtype": String, "config": String, "type": String}, ...]
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0051.html b/docs/rts/umn/rts_02_0051.html new file mode 100644 index 000000000..816db5422 --- /dev/null +++ b/docs/rts/umn/rts_02_0051.html @@ -0,0 +1,121 @@ + + +

OS::Heat::RandomString

+

A resource which generates a random string.

+

This is useful for configuring passwords and secrets on services. Random string can be generated from specified character sequences, which means that all characters will be randomly chosen from specified sequences, or with some classes, e.g. letterdigits, which means that all character will be randomly chosen from union of ascii letters and digits. Output string will be randomly generated string with specified length (or with length of 32, if length property doesnt specified).

+

Optional Properties

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

Name

+

Description

+

character_classes

+

A list of character class and their constraints to generate the random string from.

+

List value expected.

+

Updates cause replacement.

+

Defaults to "[{class: lettersdigits, min: 1}]".

+

List contents:

+
  • *

    Map value expected.

    +

    Updates cause replacement.

    +

    Map properties:

    +
    • class

      A character class and its corresponding min constraint to generate the random string from.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Defaults to "lettersdigits".

      +

      Allowed values: lettersdigits, letters, lowercase, uppercase, digits, hexdigits, octdigits

      +
    • min

      The minimum number of characters from this character class that will be in the generated string.

      +

      Integer value expected.

      +

      Updates cause replacement.

      +

      Defaults to "1".

      +

      The value must be in the range 1 to 512, include 1 and 512.

      +
    +
+

character_sequences

+

A list of character sequences and their constraints to generate the random string from.

+

List value expected.

+

Updates cause replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Updates cause replacement.

    +

    Map properties:

    +
    • min

      The minimum number of characters from this sequence that will be in the generated string.

      +

      Integer value expected.

      +

      Updates cause replacement.

      +

      Defaults to "1".

      +

      The value must be in the range 1 to 512, include 1 and 512.

      +
    • sequence

      A character sequence and its corresponding min constraint to generate the random string from.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    +
+

length

+

Length of the string to generate.

+

Integer value expected.

+

Updates cause replacement.

+

Defaults to "32".

+

The value must be in the range 1 to 512, include 1 and 512.

+

salt

+

Value which can be set or changed on stack update to trigger the resource for replacement with a new random string. The salt value itself is ignored by the random generator.

+

String value expected.

+

Updates cause replacement.

+

sequence

+

Sequence of characters to build the random string from.

+

String value expected.

+

Updates cause replacement.

+

Allowed values: lettersdigits, letters, lowercase, uppercase, digits, hexdigits, octdigits

+
+
+
+

Attributes

+
+ + + + + + + +

Name

+

Description

+

value

+

The random string generated by this resource. This value is also available by referencing the resource.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Heat::RandomString
+    properties:
+      character_classes: [{"class": String, "min": Integer}, {"class": String, "min": Integer}, ...]
+      character_sequences: [{"min": Integer, "sequence": String}, {"min": Integer, "sequence": String}, ...]
+      length: Integer
+      salt: String
+      sequence: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0052.html b/docs/rts/umn/rts_02_0052.html new file mode 100644 index 000000000..e694b7d3e --- /dev/null +++ b/docs/rts/umn/rts_02_0052.html @@ -0,0 +1,118 @@ + + +

OS::Heat::ResourceGroup

+

Creates one or more identically configured nested resources.

+

In addition to the refs attribute, this resource implements synthetic attributes that mirror those of the resources in the group. When getting an attribute from this resource, however, a list of attribute values for each resource in the group is returned. To get attribute values for a single resource in the group, synthetic attributes of the form resource.{resource index}.{attribute name} can be used. The resource ID of a particular resource in the group can be obtained via the synthetic attribute resource.{resource index}. Note, that if you get attribute without {resource index}, e.g. [resource, {attribute_name}], you will get a list of this attributes value for all resources in group.

+

While each resource in the group will be identically configured, this resource does allow for some index-based customization of the properties of the resources in the group. For example:

+
resources:
+  my_indexed_group:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: 3
+      resource_def:
+        type: OS::Nova::Server
+        properties:
+          # create a unique name for each server
+          # using its index in the group
+          name: my_server_%index%
+          image: CentOS 6.5
+          flavor: 4GB Performance
+

would result in a group of three servers having the same image and flavor, but names of my_server_0, my_server_1, and my_server_2. The variable used for substitution can be customized by using the index_var property.

+

Required Properties

+
+ + + + + + + +

Name

+

Description

+

resource_def

+

Resource definition for the resources in the group. The value of this property is the definition of a resource just as if it had been declared in the template itself.

+

Map value expected.

+

Can be updated without replacement.

+

Map properties:

+
  • metadata

    Supplied metadata for the resources in the group.

    +

    Map value expected.

    +

    Can be updated without replacement.

    +
  • properties

    Property values for the resources in the group.

    +

    Map value expected.

    +

    Can be updated without replacement.

    +
  • type

    The type of the resources in the group.

    +

    String value expected.

    +

    Can be updated without replacement.

    +
+
+
+
+

Optional Properties

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

Name

+

Description

+

count

+

The number of resources to create.

+

Integer value expected.

+

Can be updated without replacement.

+

Defaults to "1".

+

The value must be at least 0.

+

index_var

+

A variable that this resource will use to replace with the current index of a given resource in the group. Can be used, for example, to customize the name property of grouped servers in order to differentiate them when listed with nova client.

+

String value expected.

+

Updates cause replacement.

+

Defaults to "%index%".

+

The length must be at least 3.

+
+
+
+

Attributes

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

Name

+

Description

+

attributes

+

A map of resource names to the specified attribute of each individual resource. Requires heat_template_version: 2014-10-16.

+

refs

+

A list of resource IDs for the resources in the group.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: Integer
+      index_var: String
+      removal_policies: [{"resource_list": [Value, Value, ...]}, {"resource_list": [Value, Value, ...]}, ...]
+      resource_def: {"type": String, "properties": {...}, "metadata": {...}}
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0053.html b/docs/rts/umn/rts_02_0053.html new file mode 100644 index 000000000..f1651405f --- /dev/null +++ b/docs/rts/umn/rts_02_0053.html @@ -0,0 +1,100 @@ + + +

OS::Heat::ScalingPolicy

+

A resource to manage scaling of OS::Heat::AutoScalingGroup.

+

Resource to manage scaling for OS::Heat::AutoScalingGroup, i.e. define which metric should be scaled and scaling adjustment, set cooldown etc.

+

Required Properties

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

Name

+

Description

+

adjustment_type

+

Type of adjustment (absolute or percentage).

+

String value expected.

+

Can be updated without replacement.

+

Allowed values: change_in_capacity, exact_capacity, percent_change_in_capacity

+

auto_scaling_group_id

+

AutoScaling group ID to apply policy to.

+

String value expected.

+

Updates cause replacement.

+

scaling_adjustment

+

Size of adjustment.

+

Number value expected.

+

Can be updated without replacement.

+
+
+
+

Optional Properties

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

Name

+

Description

+

cooldown

+

Cooldown period, in seconds.

+

Number value expected.

+

Can be updated without replacement.

+

min_adjustment_step

+

Minimum number of resources that are added or removed when the AutoScaling group scales up or down. This can be used only when specifying percent_change_in_capacity for the adjustment_type property.

+

Integer value expected.

+

Can be updated without replacement.

+

The value must be at least 0.

+
+
+
+

Attributes

+
+ + + + + + + +

Name

+

Description

+

alarm_url

+

A signed url to handle the alarm.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Heat::ScalingPolicy
+    properties:
+      adjustment_type: String
+      auto_scaling_group_id: String
+      cooldown: Number
+      min_adjustment_step: Integer
+      scaling_adjustment: Number
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0054.html b/docs/rts/umn/rts_02_0054.html new file mode 100644 index 000000000..eeba0d549 --- /dev/null +++ b/docs/rts/umn/rts_02_0054.html @@ -0,0 +1,159 @@ + + +

OS::Heat::SoftwareComponent

+

A resource for describing and storing a software component.

+

This resource is similar to OS::Heat::SoftwareConfig. In contrast to SoftwareConfig which allows for storing only one configuration (e.g. one script), SoftwareComponent allows for storing multiple configurations to address handling of all lifecycle hooks (CREATE, UPDATE, DELETE) for a software component in one place.

+

This resource is backed by the persistence layer and the API of the SoftwareConfig resource, and only adds handling for the additional configs property and attribute.

+

Required Properties

+
+ + + + + + + +

Name

+

Description

+

configs

+

The list of configurations for the different lifecycle actions of the represented software component.

+

List value expected.

+

Updates cause replacement.

+

The length must be at least 1.

+

List contents:

+
  • *

    Map value expected.

    +

    Updates cause replacement.

    +

    Map properties:

    +
    • actions

      Lifecycle actions to which the configuration applies. The string values provided for this property can include the standard resource actions CREATE, DELETE, and UPDATE supported by Heat.

      +

      List value expected.

      +

      Updates cause replacement.

      +

      Defaults to "[CREATE, UPDATE]".

      +

      The length must be at least 1.

      +

      List contents:

      +

      *

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • config

      Configuration script or manifest which specifies what actual configuration is performed.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • tool

      The configuration tool used to actually apply the configuration on a server. This string property has to be understood by in-instance tools running inside deployed servers.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    +
+
+
+
+

Optional Properties

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

Name

+

Description

+

inputs

+

Schema representing the inputs that this software config is expecting.

+

List value expected.

+

Updates cause replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Updates cause replacement.

    +

    Map properties:

    +
    • default

      Default value for the input if none is specified.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • description

      Description of the input.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • name

      Name of the input.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • replace_on_change

      Replace the deployment instead of updating it when the input value changes.

      +

      Boolean value expected.

      +

      Updates cause replacement.

      +

      Defaults to "False".

      +
    • type

      Type of the value of the input.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Defaults to "String".

      +

      Allowed values: String, Number, CommaDelimitedList, Json, Boolean

      +
    +
+

options

+

Map containing options specific to the configuration management tool used by this resource.

+

Map value expected.

+

Updates cause replacement.

+

outputs

+

Schema representing the outputs that this software config will produce.

+

List value expected.

+

Updates cause replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Updates cause replacement.

    +

    Map properties:

    +
    • description

      Description of the output.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • error_output

      Denotes that the deployment is in an error state if this output has a value.

      +

      Boolean value expected.

      +

      Updates cause replacement.

      +

      Defaults to "False".

      +
    • name

      Name of the output.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • type

      Type of the value of the output.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Defaults to "String".

      +

      Allowed values: String, Number, CommaDelimitedList, Json, Boolean

      +
    +
+
+
+
+

Attributes

+
+ + + + + + + +

Name

+

Description

+

config

+

The config value of the software config.

+

The config is generally read from a script file and often contains some parameter substitutions. The config value is the script content that actually runs in the virtual machine.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Heat::SoftwareComponent
+    properties:
+      configs: [{"config": String, "tool": String, "actions": [String, String, ...]}, {"config": String, "tool": String, "actions": [String, String, ...]}, ...]
+      inputs: [{"type": String, "default": String, "name": String, "replace_on_change": Boolean, "description": String}, {"type": String, "default": String, "name": String, "replace_on_change": Boolean, "description": String}, ...]
+      options: {...}
+      outputs: [{"type": String, "name": String, "error_output": Boolean, "description": String}, {"type": String, "name": String, "error_output": Boolean, "description": String}, ...]
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0055.html b/docs/rts/umn/rts_02_0055.html new file mode 100644 index 000000000..79a2b49e5 --- /dev/null +++ b/docs/rts/umn/rts_02_0055.html @@ -0,0 +1,139 @@ + + +

OS::Heat::SoftwareConfig

+

A resource for describing and storing software configuration.

+

The software_configs API which backs this resource creates immutable configs, so any change to the template resource definition will result in a new config being created, and the old one being deleted.

+

Configs can be defined in the same template which uses them, or they can be created in one stack, and passed to another stack via a parameter.

+

A config resource can be referenced in other resource properties which are config-aware. This includes the properties OS::Nova::Server user_data, OS::Heat::SoftwareDeployment config and OS::Heat::MultipartMime parts config.

+

Along with the config script itself, this resource can define schemas for inputs and outputs which the config script is expected to consume and produce. Inputs and outputs are optional and will map to concepts which are specific to the configuration tool being used.

+

If the software configuration function is used, the cloud-init tool must be installed on images.

+
+

Optional Properties

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

Name

+

Description

+

config

+

Configuration script or manifest which specifies what actual configuration is performed.

+

String value expected.

+

Updates cause replacement.

+

group

+

Namespace to group this software config by when delivered to a server. This may imply what configuration tool is going to perform the configuration.

+

String value expected.

+

Updates cause replacement.

+

Defaults to "Heat::Ungrouped".

+

inputs

+

Schema representing the inputs that this software config is expecting.

+

List value expected.

+

Updates cause replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Updates cause replacement.

    +

    Map properties:

    +
    • default

      Default value for the input if none is specified.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • description

      Description of the input.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • name

      Name of the input.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • replace_on_change

      Replace the deployment instead of updating it when the input value changes.

      +

      Boolean value expected.

      +

      Updates cause replacement.

      +

      Defaults to "False".

      +
    • type

      Type of the value of the input.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Defaults to "String".

      +

      Allowed values: String, Number, CommaDelimitedList, Json, Boolean

      +
    +
+

options

+

Map containing options specific to the configuration management tool used by this resource.

+

Map value expected.

+

Updates cause replacement.

+

outputs

+

Schema representing the outputs that this software config will produce.

+

List value expected.

+

Updates cause replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Updates cause replacement.

    +

    Map properties:

    +
    • description

      Description of the output.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • error_output

      Denotes that the deployment is in an error state if this output has a value.

      +

      Boolean value expected.

      +

      Updates cause replacement.

      +

      Defaults to "False".

      +
    • name

      Name of the output.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • type

      Type of the value of the output.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Defaults to "String".

      +

      Allowed values: String, Number, CommaDelimitedList, Json, Boolean

      +
    +
+
+
+
+

Attributes

+
+ + + + + + + +

Name

+

Description

+

config

+

The config value of the software config.

+

The config is generally read from a script file and often contains some parameter substitutions. The config value is the script content that actually runs in the virtual machine.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      config: String
+      group: String
+      inputs: [{"type": String, "default": String, "name": String, "replace_on_change": Boolean, "description": String}, {"type": String, "default": String, "name": String, "replace_on_change": Boolean, "description": String}, ...]
+      options: {...}
+      outputs: [{"type": String, "name": String, "error_output": Boolean, "description": String}, {"type": String, "name": String, "error_output": Boolean, "description": String}, ...]
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0056.html b/docs/rts/umn/rts_02_0056.html new file mode 100644 index 000000000..832b5216f --- /dev/null +++ b/docs/rts/umn/rts_02_0056.html @@ -0,0 +1,116 @@ + + +

OS::Heat::SoftwareDeployment

+

This resource associates a server with some configuration.

+

The configuration is to be deployed to that server.

+

A deployment allows input values to be specified which map to the inputs schema defined in the config resource. These input values are interpreted by the configuration tool in a tool-specific manner.

+

Whenever this resource goes to an IN_PROGRESS state, it creates an ephemeral config that includes the inputs values plus a number of extra inputs which have names prefixed with deploy_. The extra inputs relate to the current state of the stack, along with the information and credentials required to signal back the deployment results.

+

Unless signal_transport=NO_SIGNAL, this resource will remain in an IN_PROGRESS state until the server signals it with the output values for that deployment. Those output values are then available as resource attributes, along with the default attributes deploy_stdout, deploy_stderr and deploy_status_code.

+

Specifying actions other than the default CREATE and UPDATE will result in the deployment being triggered in those actions. For example this would allow cleanup configuration to be performed during action DELETE. A config could be designed to only work with some specific actions, or a config can read the value of the deploy_action input to allow conditional logic to perform different configuration for different actions.

+

If the software deployment function is used, the cloud-init, heat-config, os-collect-config, os-refresh-config, os-apply-config, and heat-config-script tools must be installed on images.

+
+

Optional Properties

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

Name

+

Description

+

actions

+

Which lifecycle actions of the deployment resource will result in this deployment being triggered.

+

List value expected.

+

Can be updated without replacement.

+

Defaults to "[CREATE, UPDATE]".

+

Allowed values: CREATE, UPDATE, DELETE

+

config

+

ID of software configuration resource to execute when applying to the server.

+

String value expected.

+

Can be updated without replacement.

+

input_values

+

Input values to apply to the software configuration on this server.

+

Map value expected.

+

Can be updated without replacement.

+

server

+

ID of resource to apply configuration to. Normally this should be a Nova server ID.

+

String value expected.

+

Updates cause replacement.

+

name

+

Name of the derived config associated with this deployment. This is used to apply a sort order to the list of configurations currently deployed to a server.

+

String value expected.

+

Can be updated without replacement.

+

signal_transport

+

How the server should signal to heat with the deployment output values.

+
  • TEMP_URL_SIGNAL will create a Swift TempURL to be signaled via HTTP PUT.
  • NO_SIGNAL will result in the resource going to the COMPLETE state without waiting for any signal.
+

String value expected.

+

Updates cause replacement.

+

Defaults to "TEMP_URL_SIGNAL".

+

Allowed values: TEMP_URL_SIGNAL, NO_SIGNAL

+
+
+
+

Attributes

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

Name

+

Description

+

deploy_status_code

+

Returned status code from the configuration execution.

+

deploy_stderr

+

Captured stderr from the configuration execution.

+

deploy_stdout

+

Captured stdout from the configuration execution.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      actions: [Value, Value, ...]
+      config: String
+      input_values: {...}
+      name: String
+      server: String
+      signal_transport: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0058.html b/docs/rts/umn/rts_02_0058.html new file mode 100644 index 000000000..5b97239ae --- /dev/null +++ b/docs/rts/umn/rts_02_0058.html @@ -0,0 +1,135 @@ + + +

OS::Heat::StructuredConfig

+

A resource which has same logic with OS::Heat::SoftwareConfig.

+

This resource is like OS::Heat::SoftwareConfig except that the config property is represented by a Map rather than a String.

+

This is useful for configuration tools which use YAML or JSON as their configuration syntax. The resulting configuration is transferred, stored and returned by the software_configs API as parsed JSON.

+

Optional Properties

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

Name

+

Description

+

config

+

Map representing the configuration data structure which will be serialized to JSON format.

+

Map value expected.

+

Updates cause replacement.

+

group

+

Namespace to group this software config by when delivered to a server. This may imply what configuration tool is going to perform the configuration.

+

String value expected.

+

Updates cause replacement.

+

Defaults to "Heat::Ungrouped".

+

inputs

+

Schema representing the inputs that this software config is expecting.

+

List value expected.

+

Updates cause replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Updates cause replacement.

    +

    Map properties:

    +
    • default

      Default value for the input if none is specified.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • description

      Description of the input.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • name

      Name of the input.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • replace_on_change

      Replace the deployment instead of updating it when the input value changes.

      +

      Boolean value expected.

      +

      Updates cause replacement.

      +

      Defaults to "False".

      +
    • type

      Type of the value of the input.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Defaults to "String".

      +

      Allowed values: String, Number, CommaDelimitedList, Json, Boolean

      +
    +
+

options

+

Map containing options specific to the configuration management tool used by this resource.

+

Map value expected.

+

Updates cause replacement.

+

outputs

+

Schema representing the outputs that this software config will produce.

+

List value expected.

+

Updates cause replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Updates cause replacement.

    +

    Map properties:

    +
    • description

      Description of the output.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • error_output

      Denotes that the deployment is in an error state if this output has a value.

      +

      Boolean value expected.

      +

      Updates cause replacement.

      +

      Defaults to "False".

      +
    • name

      Name of the output.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • type

      Type of the value of the output.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Defaults to "String".

      +

      Allowed values: String, Number, CommaDelimitedList, Json, Boolean

      +
    +
+
+
+
+

Attributes

+
+ + + + + + + +

Name

+

Description

+

config

+

The config value of the software config.

+

The config is generally read from a script file and often contains some parameter substitutions. The config value is the script content that actually runs in the virtual machine.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Heat::StructuredConfig
+    properties:
+      config: {...}
+      group: String
+      inputs: [{"type": String, "default": String, "name": String, "replace_on_change": Boolean, "description": String}, {"type": String, "default": String, "name": String, "replace_on_change": Boolean, "description": String}, ...]
+      options: {...}
+      outputs: [{"type": String, "name": String, "error_output": Boolean, "description": String}, {"type": String, "name": String, "error_output": Boolean, "description": String}, ...]
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0061.html b/docs/rts/umn/rts_02_0061.html new file mode 100644 index 000000000..f21e3420e --- /dev/null +++ b/docs/rts/umn/rts_02_0061.html @@ -0,0 +1,85 @@ + + +

OS::Heat::WaitCondition

+

Resource for handling signals received by WaitConditionHandle.

+

Resource takes WaitConditionHandle and starts to create. Resource is in CREATE_IN_PROGRESS status until WaitConditionHandle doesnt receive sufficient number of successful signals (this number can be specified with count property) and successfully creates after that, or fails due to timeout.

+

Required Properties

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

Name

+

Description

+

handle

+

A reference to the wait condition handle used to signal this wait condition.

+

String value expected.

+

Updates cause replacement.

+

timeout

+

The number of seconds to wait for the correct number of signals to arrive.

+

Number value expected.

+

Updates cause replacement.

+

The value must be in the range 1 to 43200, include 1 and 43200.

+
+
+
+

Optional Properties

+
+ + + + + + + +

Name

+

Description

+

count

+

The number of success signals that must be received before the stack creation process continues.

+

Integer value expected.

+

Can be updated without replacement.

+

Defaults to "1".

+

The value must be at least 1.

+
+
+
+

Attributes

+
+ + + + + + + +

Name

+

Description

+

data

+

JSON string containing data associated with wait condition signals sent to the handle.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Heat::WaitCondition
+    properties:
+      count: Integer
+      handle: String
+      timeout: Number
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0062.html b/docs/rts/umn/rts_02_0062.html new file mode 100644 index 000000000..54164e6ee --- /dev/null +++ b/docs/rts/umn/rts_02_0062.html @@ -0,0 +1,69 @@ + + +

OS::Heat::WaitConditionHandle

+

Resource for managing instance signals.

+

The main points of this resource are:

+
  • have no dependencies (so the instance can reference it).
  • create credentials to allow for signaling from the instance.
  • handle signals from the instance, validate and store result.
+

Optional Properties

+
+ + + + + + + +

Name

+

Description

+

signal_transport

+

How the client will signal the wait condition.

+
  • TOKEN_SIGNAL will allow and HTTP POST to a Heat API endpoint with the provided keystone token.
  • NO_SIGNAL will result in the resource going to a signalled state without waiting for any signal.
+

String value expected.

+

Updates cause replacement.

+

Defaults to "TOKEN_SIGNAL".

+

Allowed values: TOKEN_SIGNAL, NO_SIGNAL

+
+
+
+

Attributes

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

Name

+

Description

+

curl_cli

+

Convenience attribute, provides curl CLI command prefix, which can be used for signaling handle completion or failure when signal_transport is set to TOKEN_SIGNAL. You can signal success by adding –data-binary {"status": "SUCCESS"} , or signal failure by adding –data-binary {"status": "FAILURE"}. This attribute is set to None for all other signal transports.

+

endpoint

+

Endpoint/url which can be used for signaling handle when signal_transport is set to TOKEN_SIGNAL. None for all other signal transports.

+

token

+

Token for stack-user which can be used for signaling handle when signal_transport is set to TOKEN_SIGNAL. None for all other signal transports.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Heat::WaitConditionHandle
+    properties:
+      signal_transport: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0063.html b/docs/rts/umn/rts_02_0063.html new file mode 100644 index 000000000..ce58135c0 --- /dev/null +++ b/docs/rts/umn/rts_02_0063.html @@ -0,0 +1,112 @@ + + +

OS::Neutron::FloatingIP

+

A resource for managing Neutron floating IP addresses.

+

Floating IP addresses can change their association between routers by action of the user. One of the most common use cases for floating IP addresses is to provide public IP addresses to a private cloud, where there are a limited number of IP addresses available. Another is for a cloud system user to have a "static" IP address that can be reassigned when an instance is upgraded or moved.

+

Optional Properties

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

Name

+

Description

+

floating_network

+

Network to allocate floating IP from.

+

String value expected.

+

Updates cause replacement.

+

fixed_ip_address

+

IP address to use if the port has multiple addresses.

+

String value expected.

+

Can be updated without replacement.

+

port_id

+

ID of an existing port with at least one IP address to associate with this floating IP. The port must be associated to a Nova instance.

+

String value expected.

+

Can be updated without replacement.

+

value_specs

+

Extra parameters to include in the "floatingip" object in the creation request. Parameters are often specific to installed hardware or extensions.

+

Map value expected.

+

Updates cause replacement.

+

Defaults to "{}".

+
+
+
+

Attributes

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

Name

+

Description

+

fixed_ip_address

+

IP address of the associated port, if specified.

+

floating_ip_address

+

The allocated address of this IP.

+

floating_network_id

+

ID of the network in which this IP is allocated.

+

The network ID used during floating IP address assignment is a fixed external network ID. You can use GET /v2.0/networks?router:external=True or neutron net-external-list to obtain the external network information.

+

port_id

+

ID of the port associated with this IP.

+

router_id

+

ID of the router used as gateway, set when associated with a port.

+

show

+

Detailed information about resource.

+

tenant_id

+

The tenant owning this floating IP.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Neutron::FloatingIP
+    properties:
+      fixed_ip_address: String
+      floating_ip_address: String
+      floating_network: String
+      port_id: String
+      value_specs: {...}
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0064.html b/docs/rts/umn/rts_02_0064.html new file mode 100644 index 000000000..66e9cbead --- /dev/null +++ b/docs/rts/umn/rts_02_0064.html @@ -0,0 +1,66 @@ + + +

OS::Neutron::FloatingIPAssociation

+

A resource for associating floating IP addresses and ports.

+

This resource allows associating a floating IP to a port with at least one IP address to associate with this floating IP.

+

Required Properties

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

Name

+

Description

+

floatingip_id

+

ID of the floating IP to associate.

+

String value expected.

+

Can be updated without replacement.

+

port_id

+

ID of an existing port with at least one IP address to associate with this floating IP. The port must be associated to a Nova instance.

+

String value expected.

+

Can be updated without replacement.

+
+
+
+

Optional Properties

+
+ + + + + + + +

Name

+

Description

+

fixed_ip_address

+

IP address to use if the port has multiple addresses.

+

String value expected.

+

Can be updated without replacement.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Neutron::FloatingIPAssociation
+    properties:
+      fixed_ip_address: String
+      floatingip_id: String
+      port_id: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0065.html b/docs/rts/umn/rts_02_0065.html new file mode 100644 index 000000000..b5043a9a2 --- /dev/null +++ b/docs/rts/umn/rts_02_0065.html @@ -0,0 +1,123 @@ + + +

OS::Neutron::Net

+

A resource for managing Neutron net.

+

A network is a virtual isolated layer-2 broadcast domain which is typically reserved to the tenant who created it, unless the network has been explicitly configured to be shared.

+

Optional Properties

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

Name

+

Description

+

admin_state_up

+

A boolean value specifying the administrative status of the network.

+

Boolean value expected.

+

Can be updated without replacement.

+

Defaults to "True".

+

dhcp_agent_ids

+

The IDs of the DHCP agent to schedule the network. Note that the default policy setting in Neutron restricts usage of this property to administrative users only.

+

List value expected.

+

Can be updated without replacement.

+

name

+

A string specifying a symbolic name for the network, which is not required to be unique.

+

String value expected.

+

Can be updated without replacement.

+

shared

+

Whether this network should be shared across all tenants. Note that the default policy setting restricts usage of this attribute to administrative users only.

+

Boolean value expected.

+

Can be updated without replacement.

+

Defaults to "False".

+

tenant_id

+

The ID of the tenant which will own the network. Only administrative users can set the tenant identifier; this cannot be changed using authorization policies.

+

String value expected.

+

Updates cause replacement.

+

value_specs

+

Extra parameters to include in the request. Parameters are often specific to installed hardware or extensions.

+

Map value expected.

+

Can be updated without replacement.

+

Defaults to "{}".

+
+
+
+

Attributes

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

Name

+

Description

+

admin_state_up

+

The administrative status of the network.

+

name

+

The name of the network.

+

show

+

Detailed information about resource.

+

status

+

The status of the network.

+

subnets

+

Subnets of this network.

+

tenant_id

+

The tenant owning this network.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Neutron::Net
+    properties:
+      admin_state_up: Boolean
+      dhcp_agent_ids: [Value, Value, ...]
+      name: String
+      shared: Boolean
+      tenant_id: String
+      value_specs: {...}
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0066.html b/docs/rts/umn/rts_02_0066.html new file mode 100644 index 000000000..04849d674 --- /dev/null +++ b/docs/rts/umn/rts_02_0066.html @@ -0,0 +1,244 @@ + + +

OS::Neutron::Port

+

A resource for managing Neutron ports.

+

A port represents a virtual switch port on a logical network switch. Virtual instances attach their interfaces into ports. The logical port also defines the MAC address and the IP address(es) to be assigned to the interfaces plugged into them. When IP addresses are associated to a port, this also implies the port is associated with a subnet, as the IP address was taken from the allocation pool for a specific subnet.

+

Required Properties

+
+ + + + + + + +

Name

+

Description

+

network

+

Network this port belongs to. If you plan to use current port to assign Floating IP, you should specify fixed_ips with subnet. Note if this changes to a different network update, the port will be replaced.

+

String value expected.

+

Updates cause replacement.

+
+
+
+

Optional Properties

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

Name

+

Description

+

admin_state_up

+

The administrative state of this port.

+

Boolean value expected.

+

Can be updated without replacement.

+

Defaults to "True".

+

allowed_address_pairs

+

Additional MAC/IP address pairs allowed to pass through the port.

+

List value expected.

+

Can be updated without replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Can be updated without replacement.

    +

    Map properties:

    +
    • ip_address

      IP address to allow through this port.

      +

      String value expected.

      +

      Can be updated without replacement.

      +
    • mac_address

      MAC address to allow through this port.

      +

      String value expected.

      +

      Can be updated without replacement.

      +
    +
+

device_id

+

Device ID of this port.

+

String value expected.

+

Can be updated without replacement.

+

device_owner

+

Name of the network owning the port. The value is typically network:floatingip or network:router_interface or network:dhcp.

+

String value expected.

+

Can be updated without replacement.

+

fixed_ips

+

Desired IP addresses for this port.

+

List value expected.

+

Can be updated without replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Can be updated without replacement.

    +

    Map properties:

    +
    • subnet

      Subnet in which to allocate the IP address for this port.

      +

      String value expected.

      +

      Can be updated without replacement.

      +
    • subnet_id

      String value expected.

      +

      Can be updated without replacement.

      +
    • ip_address

      IP address desired in the subnet for this port.

      +

      String value expected.

      +

      Can be updated without replacement.

      +
    +
+

mac_address

+

MAC address to give to this port.

+

String value expected.

+

Updates cause replacement.

+

name

+

A symbolic name for this port.

+

String value expected.

+

Can be updated without replacement.

+

network_id

+

Network ID this port belongs to.

+

String value expected.

+

Updates cause replacement.

+

security_groups

+

Security group IDs to associate with this port.

+

List value expected.

+

Can be updated without replacement.

+

value_specs

+

Extra parameters to include in the request.

+

Map value expected.

+

Can be updated without replacement.

+

Defaults to "{}".

+

replacement_policy

+

Policy on how to respond to a stack-update for this resource. REPLACE_ALWAYS will replace the port regardless of any property changes. AUTO will update the existing port for any changed update-allowed property.

+

String value expected.

+

Can be updated without replacement.

+

Defaults to "AUTO".

+

Allowed values: AUTO, REPLACE_ALWAYS

+
+
+
+

Attributes

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

Name

+

Description

+

admin_state_up

+

The administrative state of this port.

+

allowed_address_pairs

+

Additional MAC/IP address pairs allowed to pass through a port.

+

device_id

+

Unique identifier for the device.

+

device_owner

+

Name of the network owning the port.

+

fixed_ips

+

Fixed IP addresses.

+

mac_address

+

MAC address of the port.

+

name

+

Friendly name of the port.

+

network_id

+

Unique identifier for the network owning the port.

+

security_groups

+

A list of security groups for the port.

+

show

+

Detailed information about resource.

+

status

+

The status of the port.

+

subnets

+

A list of all subnet attributes for the port.

+

tenant_id

+

Tenant owning the port.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Neutron::Port
+    properties:
+      admin_state_up: Boolean
+      allowed_address_pairs: [{"mac_address": String, "ip_address": String}, {"mac_address": String, "ip_address": String}, ...]
+      device_id: String
+      device_owner: String
+      fixed_ips: [{"subnet_id": String, "ip_address": String, "subnet": String}, {"subnet_id": String, "ip_address": String, "subnet": String}, ...]
+      mac_address: String
+      name: String
+      network: String
+      network_id: String
+      security_groups: [Value, Value, ...]
+      value_specs: {...}
+      replacement_policy: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0067.html b/docs/rts/umn/rts_02_0067.html new file mode 100644 index 000000000..5ab8b6417 --- /dev/null +++ b/docs/rts/umn/rts_02_0067.html @@ -0,0 +1,123 @@ + + +

OS::Neutron::Router

+

A resource that implements Neutron router.

+

Router is a physical or virtual network device that passes network traffic between different networks.

+

Optional Properties

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

Name

+

Description

+

admin_state_up

+

The administrative state of the router.

+

Boolean value expected.

+

Can be updated without replacement.

+

Defaults to "True".

+

external_gateway_info

+

External network gateway configuration for a router.

+

You can use GET /v2.0/networks?router:external=True or neutron net-external-list to query the network information.

+

Map value expected.

+

Can be updated without replacement.

+

Map properties:

+
  • enable_snat

    Enables Source NAT on the router gateway. NOTE: The default policy setting in Neutron restricts usage of this property to administrative users only.

    +

    Boolean value expected.

    +

    Can be updated without replacement.

    +
  • network

    ID or name of the external network for the gateway.

    +

    String value expected.

    +

    Can be updated without replacement.

    +
+

l3_agent_ids

+

ID list of the L3 agent. User can specify multi-agents for highly available router. NOTE: The default policy setting in Neutron restricts usage of this property to administrative users only.

+

String value expected.

+

Can be updated without replacement.

+

name

+

The name of the router.

+

String value expected.

+

Can be updated without replacement.

+

value_specs

+

Extra parameters to include in the creation request.

+

Map value expected.

+

Can be updated without replacement.

+

Defaults to "{}".

+
+
+
+

Attributes

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

Name

+

Description

+

admin_state_up

+

Administrative state of the router.

+

external_gateway_info

+

Gateway network for the router.

+

name

+

Friendly name of the router.

+

show

+

Detailed information about resource.

+

status

+

The status of the router.

+

tenant_id

+

Tenant owning the router.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Neutron::Router
+    properties:
+      admin_state_up: Boolean
+      external_gateway_info: {"network": String, "enable_snat": Boolean}
+      l3_agent_ids: String
+      name: String
+      value_specs: {...}
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0069.html b/docs/rts/umn/rts_02_0069.html new file mode 100644 index 000000000..efca9e112 --- /dev/null +++ b/docs/rts/umn/rts_02_0069.html @@ -0,0 +1,78 @@ + + +

OS::Neutron::RouterInterface

+

A resource for managing Neutron router interfaces.

+

Router interfaces associate routers with existing subnets or ports.

+

Required Properties

+
+ + + + + + + +

Name

+

Description

+

router_id

+

The router id.

+

String value expected.

+

Updates cause replacement.

+
+
+
+

Optional Properties

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

Name

+

Description

+

port_id

+

The port id, either subnet or port_id should be specified.

+

String value expected.

+

Updates cause replacement.

+

subnet

+

The subnet, either subnet or port should be specified.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type neutron.subnet

+

subnet_id

+

String value expected.

+

Updates cause replacement.

+
NOTE:

In the template,

+
  • subnet and subnet_id cannot appear at the same time, otherwise the stack will fail to create.
  • At least one of the following properties must be specified: port_id, subnet (or subnet_id).

    +
+
+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Neutron::RouterInterface
+    properties:
+      port_id: String
+      router_id: String
+      subnet: String
+      subnet_id: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0070.html b/docs/rts/umn/rts_02_0070.html new file mode 100644 index 000000000..edcd5808b --- /dev/null +++ b/docs/rts/umn/rts_02_0070.html @@ -0,0 +1,94 @@ + + +

OS::Neutron::SecurityGroup

+

A resource for managing Neutron security groups.

+

Security groups are sets of IP filter rules that are applied to an instances networking. They are project specific, and project members can edit the default rules for their group and add new rules sets. All projects have a "default" security group, which is applied to instances that have no other security group defined.

+

Optional Properties

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

Name

+

Description

+

description

+

Description of the security group.

+

String value expected.

+

Can be updated without replacement.

+

name

+

A string specifying a symbolic name for the security group, which is not required to be unique.

+

String value expected.

+

Can be updated without replacement.

+

rules

+

List of security group rules.

+

List value expected.

+

Can be updated without replacement.

+

Defaults to "[]".

+

List contents:

+
  • *

    Map value expected.

    +

    Can be updated without replacement.

    +

    Map properties:

    +
    • direction

      The direction in which the security group rule is applied. For a compute instance, an ingress security group rule matches traffic that is incoming (ingress) for that instance. An egress rule is applied to traffic leaving the instance.

      +

      String value expected.

      +

      Can be updated without replacement.

      +

      Defaults to "ingress".

      +

      Allowed values: ingress, egress

      +
    • ethertype

      Ethertype of the traffic.

      +

      String value expected.

      +

      Can be updated without replacement.

      +

      Defaults to "IPv4".

      +

      Allowed values: IPv4, IPv6

      +
    • port_range_max

      The maximum port number in the range that is matched by the security group rule. The port_range_min attribute constrains the port_range_max attribute. If the protocol is ICMP, this value must be an ICMP type.

      +

      Integer value expected.

      +

      Can be updated without replacement.

      +

      The value must be in the range 0 to 65535, include 1 and 65535.

      +
    • port_range_min

      The minimum port number in the range that is matched by the security group rule. If the protocol is TCP or UDP, this value must be less than or equal to the value of the port_range_max attribute. If the protocol is ICMP, this value must be an ICMP type.

      +

      Integer value expected.

      +

      Can be updated without replacement.

      +

      The value must be in the range 0 to 65535, include 1 and 65535.

      +
    • protocol

      The protocol that is matched by the security group rule. Valid values include tcp, udp, and icmp.

      +

      String value expected.

      +

      Can be updated without replacement.

      +
    • remote_group_id

      The remote group ID to be associated with this security group rule. If no value is specified then this rule will use this security group for the remote_group_id. The remote mode parameter must be set to "remote_group_id".

      +

      String value expected.

      +

      Can be updated without replacement.

      +
    • remote_ip_prefix

      The remote IP prefix (CIDR) to be associated with this security group rule.

      +

      String value expected.

      +

      Can be updated without replacement.

      +
    • remote_mode

      Whether to specify a remote group or a remote IP prefix.

      +

      String value expected.

      +

      Can be updated without replacement.

      +

      Defaults to "remote_ip_prefix".

      +

      Allowed values: remote_ip_prefix, remote_group_id

      +
    +
+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Neutron::SecurityGroup
+    properties:
+      description: String
+      name: String
+      rules: [{"remote_group_id": String, "port_range_max": Integer, "remote_ip_prefix": String, "protocol": String, "port_range_min": Integer, "ethertype": String, "direction": String, "remote_mode": String}, {"remote_group_id": String, "port_range_max": Integer, "remote_ip_prefix": String, "protocol": String, "port_range_min": Integer, "ethertype": String, "direction": String, "remote_mode": String}, ...]
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0071.html b/docs/rts/umn/rts_02_0071.html new file mode 100644 index 000000000..f9855915f --- /dev/null +++ b/docs/rts/umn/rts_02_0071.html @@ -0,0 +1,246 @@ + + +

OS::Neutron::Subnet

+

The resource is not allowed to be updated.

+

A resource for managing Neutron subnets.

+

A subnet represents an IP address block that can be used for assigning IP addresses to virtual instances. Each subnet must have a CIDR and must be associated with a network. IP addresses can be either selected from the whole subnet CIDR, or from "allocation pools" that can be specified by the user.

+

A network can only have one subnet.

+
+

Required Properties

+
+ + + + + + + +

Name

+

Description

+

cidr

+

The CIDR.

+

String value expected.

+

Updates cause replacement.

+
+
+
+

Optional Properties

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

Name

+

Description

+

allocation_pools

+

The start and end addresses for the allocation pools.

+

List value expected.

+

Can be updated without replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Can be updated without replacement.

    +

    Map properties:

    +
    • end

      End address for the allocation pool.

      +

      String value expected.

      +

      Can be updated without replacement.

      +

      Value must be of type ip_addr

      +
    • start

      Start address for the allocation pool.

      +

      String value expected.

      +

      Can be updated without replacement.

      +

      Value must be of type ip_addr

      +
    +
+

dns_nameservers

+

A specified set of DNS name servers to be used.

+

List value expected.

+

Can be updated without replacement.

+

Defaults to "[]".

+

enable_dhcp

+

Set to true if DHCP is enabled and false if DHCP is disabled.

+

Boolean value expected.

+

Can be updated without replacement.

+

Defaults to "True".

+

gateway_ip

+

The gateway IP address. Set to any of [ null | ~ | "" ] to create/update a subnet without a gateway. If omitted when creation, neutron will assign the first free IP address within the subnet to the gateway automatically. If remove this from template when update, the old gateway IP address will be detached.

+

String value expected.

+

Can be updated without replacement.

+

host_routes

+

A list of host route dictionaries for the subnet.

+

List value expected.

+

Can be updated without replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Can be updated without replacement.

    +

    Map properties:

    +
    • destination

      The destination for static route.

      +

      String value expected.

      +

      Can be updated without replacement.

      +

      Value must be of type net_cidr

      +
    • nexthop

      The next hop for the destination.

      +

      String value expected.

      +

      Can be updated without replacement.

      +

      Value must be of type ip_addr

      +
    +
+

ip_version

+

The IP version, which is 4 or 6.

+

Integer value expected.

+

Updates cause replacement.

+

Defaults to "4".

+

Allowed values: 4, 6

+
NOTE:

Do not update this attribute. Otherwise, the network update will fail.

+
+

name

+

The name of the subnet.

+

String value expected.

+

Can be updated without replacement.

+

network

+

The name of the attached network.

+

String value expected.

+

Updates cause replacement.

+

network_id

+

The ID of the attached network.

+

String value expected.

+

Updates cause replacement.

+
NOTE:

In the template, network and network_id cannot appear at the same time, otherwise the stack will fail to create.

+
+

tenant_id

+

The ID of the tenant who owns the network. Only administrative users can specify a tenant ID other than their own.

+

String value expected.

+

Updates cause replacement.

+
NOTE:

Do not update this attribute. Otherwise, the network update will fail.

+
+

value_specs

+

Extra parameters to include in the request.

+

Map value expected.

+

Can be updated without replacement.

+

Defaults to "{}".

+
+
+
+

Attributes

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

Name

+

Description

+

allocation_pools

+

Ip allocation pools and their ranges.

+

cidr

+

CIDR block notation for this subnet.

+

dns_nameservers

+

List of dns nameservers.

+

enable_dhcp

+

true if DHCP is enabled for this subnet; false otherwise.

+

gateway_ip

+

Ip of the subnets gateway.

+

host_routes

+

Additional routes for this subnet.

+

ip_version

+

Ip version for the subnet.

+

name

+

Friendly name of the subnet.

+

network_id

+

Parent network of the subnet.

+

show

+

Detailed information about resource.

+

tenant_id

+

Tenant owning the subnet.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Neutron::Subnet
+    properties:
+      allocation_pools: [{"start": String, "end": String}, {"start": String, "end": String}, ...]
+      cidr: String
+      dns_nameservers: [Value, Value, ...]
+      enable_dhcp: Boolean
+      gateway_ip: String
+      host_routes: [{"destination": String, "nexthop": String}, {"destination": String, "nexthop": String}, ...]
+      ip_version: Integer
+      name: String
+      network: String
+      network_id: String
+      tenant_id: String
+      value_specs: {...}
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0072.html b/docs/rts/umn/rts_02_0072.html new file mode 100644 index 000000000..ced8e2d5e --- /dev/null +++ b/docs/rts/umn/rts_02_0072.html @@ -0,0 +1,93 @@ + + +

OS::Nova::KeyPair

+

A resource for creating Nova key pairs.

+

A keypair is an SSH key that can be injected into a server on launch.

+

Note that if a new key is generated setting save_private_key to True results in the system saving the private key which can then be retrieved via the private_key attribute of this resource.

+

Setting the public_key property means that the private_key attribute of this resource will always return an empty string regardless of the save_private_key setting since there will be no private key data to save.

+

The Server template does not support key pair update. If the key pair is updated, Servers will be rebuilt.

+
+

Required Properties

+
+ + + + + + + +

Name

+

Description

+

name

+

The name of the key pair.

+

String value expected.

+

Updates cause replacement.

+

The length must be in the range 1 to 255, include 1 and 255.

+
+
+
+

Optional Properties

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

Name

+

Description

+

public_key

+

The optional public key. This allows users to supply the public key from a pre-existing key pair. If not supplied, a new key pair will be generated.

+

String value expected.

+

Updates cause replacement.

+

save_private_key

+

True if the system should remember a generated private key; False otherwise.

+

Boolean value expected.

+

Updates cause replacement.

+

Defaults to "False".

+
+
+
+

Attributes

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

Name

+

Description

+

private_key

+

The private key if it has been saved.

+

public_key

+

The public key.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Nova::KeyPair
+    properties:
+      name: String
+      public_key: String
+      save_private_key: Boolean
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0073.html b/docs/rts/umn/rts_02_0073.html new file mode 100644 index 000000000..109a4f7fa --- /dev/null +++ b/docs/rts/umn/rts_02_0073.html @@ -0,0 +1,406 @@ + + +

OS::Nova::Server

+

A resource for managing Nova instances.

+

A Server resource manages the running virtual machine instance within an OpenStack cloud.

+

Required Properties

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

Name

+

Description

+

flavor

+

The ID or name of the flavor to boot onto.

+

String value expected.

+

Can be updated without replacement.

+

Value must be of type nova.flavor

+
NOTE:

The Server flavor does not support the replace parameter (When updating the stack, resources need to be deleted and rebuilt).

+
+

networks

+

An ordered list of NICs to be added to this server, with information about connected networks, fixed IP addresses, port, and others.

+

List value expected.

+

Can be updated without replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Can be updated without replacement.

    +

    Map properties:

    +
    • fixed_ip

      Fixed IP address to specify for the port created on the requested network.

      +

      String value expected.

      +

      Can be updated without replacement.

      +

      Value must be of type ip_addr

      +
    • port

      ID of an existing port to associate with this server.

      +

      String value expected.

      +

      Can be updated without replacement.

      +

      Value must be of type neutron.port

      +
    • network

      Name or ID of network to create a port on.

      +

      String value expected.

      +

      Can be updated without replacement.

      +

      Value must be of type neutron.network

      +
    • uuid

      ID of network to create a port on.

      +

      String value expected.

      +

      Can be updated without replacement.

      +
    +
+
NOTE:
  • When creating a VM that has multiple NICs, ensure that all subnets used by the NICs are in the same VPC.
  • When changing the subnets of NICs on a VM, ensure that the new subnets must be in the same VPC as the original ones.
+
+
+
+
+

Optional Properties

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

Name

+

Description

+

admin_pass

+

The administrator password for the server.

+

String value expected.

+

Can be updated without replacement.

+
NOTE:

This parameter is invalid in the current version.

+

For Linux ECSs, if you need to inject passwords, you can only use user_data for injection. For Windows ECSs, if you need to inject passwords, you can only use the metadata admin_pass to inject.

+
+

availability_zone

+

Name of the availability zone for server placement. Obtain the value from Regions and Endpoints.

+

String value expected.

+

Updates cause replacement.

+
NOTE:

Do not update this attribute. Otherwise, the ECS update will fail.

+
+

block_device_mapping

+

Block device mappings for this server.

+

List value expected.

+

Updates cause replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Updates cause replacement.

    +

    Map properties:

    +
    • delete_on_termination

      Indicate whether the volume should be deleted when the server is terminated.

      +

      Boolean value expected.

      +

      Updates cause replacement.

      +
    • device_name

      A device name where the volume will be attached in the system at /dev/device_name. This value is typically vda.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • snapshot_id

      The ID of the snapshot to create a volume from.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Value must be of type cinder.snapshot

      +
    • volume_id

      The ID of the volume to boot from. Only one of volume_id or snapshot_id should be provided.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Value must be of type cinder.volume

      +
    • volume_size

      The size of the volume, in GB. It is safe to leave this blank and have the Compute service infer the size.

      +

      Integer value expected.

      +

      Updates cause replacement.

      +
    +
+
NOTE:

Do not update this attribute. Otherwise, the VM update will fail.

+

If the template contains information about disks attached to Servers, you are not allowed to update the disks. Otherwise, Servers will be rebuilt.

+
+

block_device_mapping_v2

+

Block device mappings v2 for this server.

+

List value expected.

+

Updates cause replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Updates cause replacement.

    +

    Map properties:

    +
    • boot_index

      Integer used for ordering the boot disks.

      +

      Integer value expected.

      +

      Updates cause replacement.

      +
    • delete_on_termination

      Indicate whether the volume should be deleted when the server is terminated.

      +

      Boolean value expected.

      +

      Updates cause replacement.

      +
    • device_name

      A device name where the volume will be attached in the system at /dev/device_name. This value is typically vda.

      +

      String value expected.

      +

      Updates cause replacement.

      +
    • device_type

      Device type: at the moment we can make distinction only between disk and cdrom.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Allowed values: cdrom, disk

      +
    • disk_bus

      Bus of the device: hypervisor driver chooses a suitable default if omitted.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Allowed values: ide, lame_bus, scsi, usb, virtio

      +
    • snapshot_id

      The ID of the snapshot to create a volume from.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Value must be of type cinder.snapshot

      +
    • swap_size

      The size of the swap, in MB.

      +

      Integer value expected.

      +

      Updates cause replacement.

      +
    • volume_id

      The volume_id can be boot or non-boot device to the server.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Value must be of type cinder.volume

      +
    • volume_size

      Size of the block device in GB. If it is omitted, hypervisor driver calculates size.

      +

      Integer value expected.

      +

      Updates cause replacement.

      +
    • image_id

      The ID of the image to create a volume from.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Value must be of type glance.image

      +
    +
+
NOTE:

Do not update this attribute. Otherwise, the VM update will fail.

+

If the template contains information about disks attached to Servers, you are not allowed to update the disks. Otherwise, Servers will be rebuilt.

+
+

config_drive

+

If True, enable config drive on the server.

+

Boolean value expected.

+

Updates cause replacement.

+
NOTE:

Do not update this attribute. Otherwise, the VM update will fail.

+
+

diskConfig

+

Control how the disk is partitioned when the server is created.

+

String value expected.

+

Updates cause replacement.

+

Allowed values: AUTO, MANUAL

+
NOTE:

Do not update this attribute. Otherwise, the VM update will fail.

+
+

flavor_update_policy

+

Policy on how to apply a flavor update; either by requesting a server resize or by replacing the entire server.

+

String value expected.

+

Can be updated without replacement.

+

Defaults to "RESIZE".

+

Allowed values: RESIZE

+

image

+

The ID or name of the image to boot with.

+

String value expected.

+

Can be updated without replacement.

+

Value must be of type glance.image

+
NOTE:

If you use the system volume to create an ECS, this parameter is not required. If you do not use a volume to create an ECS, you must set imageRef to a valid UUID. Otherwise, the API will return error code 400.

+
+

image_update_policy

+

Policy on how to apply an image-id update; either by requesting a server rebuild or by replacing the entire server.

+

String value expected.

+

Can be updated without replacement.

+

Defaults to "REBUILD".

+

Allowed values: REBUILD

+

key_name

+

Name of keypair to inject into the server.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type nova.keypair

+
NOTE:

Do not update this attribute. Otherwise, the VM update will fail.

+
+

metadata

+

Arbitrary key/value metadata to store for this server. Both keys and values must be 255 characters or less. Non-string values will be serialized to JSON (and the serialized string must be 255 characters or less).

+

Map value expected.

+

Can be updated without replacement.

+

name

+

Server name.

+

String value expected.

+

Can be updated without replacement.

+

personality

+

A map of files to create/overwrite on the server upon boot. Keys are file names and values are the file contents.

+

Map value expected.

+

Updates cause replacement.

+

Defaults to "{}".

+
NOTE:

Do not update this attribute. Otherwise, the VM update will fail.

+
+

reservation_id

+

A UUID for the set of servers being requested.

+

String value expected.

+

Updates cause replacement.

+
NOTE:

Do not update this attribute. Otherwise, the VM update will fail.

+
+

scheduler_hints

+

Arbitrary key-value pairs specified by the client to help boot a server.

+

Map value expected.

+

Updates cause replacement.

+
NOTE:

Do not update this attribute. Otherwise, the VM update will fail.

+
+

security_groups

+

List of security group names or IDs. Cannot be used if neutron ports are associated with this server; assign security groups to the ports instead.

+

List value expected.

+

Updates cause replacement.

+

Defaults to "[]".

+
NOTE:

Do not update this attribute. Otherwise, the VM update will fail.

+
+

software_config_transport

+

How the server should receive the metadata required for software configuration.

+

POLL_TEMP_URL will create and populate a Swift TempURL with metadata for polling.

+

String value expected.

+

Can be updated without replacement.

+

Defaults to "POLL_TEMP_URL".

+

tags

+

Server tags.

+

List value expected.

+

Can be updated without replacement.

+

List contents:

+
  • *

    String value expected.

    +

    Can be updated without replacement.

    +
+

user_data

+

User data script to be executed by cloud-init.

+

String value expected.

+

Can be updated without replacement.

+

Defaults to "".

+
NOTE:

You are not advised to update user_data. Otherwise, VMs may be rebuilt.

+
+

user_data_format

+

How the user_data should be formatted for the server.

+
  • For HEAT_CFNTOOLS, the user_data is bundled as part of the heat-cfntools cloud-init boot configuration data.
  • For RAW the user_data is passed to Nova unmodified.
  • For SOFTWARE_CONFIG user_data is bundled as part of the software config data, and metadata is derived from any associated SoftwareDeployment resources.
+

String value expected.

+

Updates cause replacement.

+

Defaults to "HEAT_CFNTOOLS".

+

Allowed values: HEAT_CFNTOOLS, RAW, SOFTWARE_CONFIG

+
+
+
+

Attributes

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

Name

+

Description

+

accessIPv4

+

The manually assigned alternative public IPv4 address of the server.

+

accessIPv6

+

The manually assigned alternative public IPv6 address of the server.

+

addresses

+

A dict of all network addresses with corresponding port_id. Each network will have two keys in dict, they are network name and network id. The port ID may be obtained through the following expression: "{get_attr: [<server>, addresses, <network name_or_id>, 0, port]}".

+

first_address

+

Convenience attribute to fetch the first assigned network address, or an empty string if nothing has been assigned at this time. Result may not be predictable if the server has addresses from more than one network.

+

instance_name

+

Name of the instance.

+

name

+

Name of the server.

+

networks

+

A dict of assigned network addresses of the form: {"public": [ip1, ip2...], "private": [ip3, ip4], "public_uuid": [ip1, ip2...], "private_uuid": [ip3, ip4]}. Each network will have two keys in dict, they are network name and network id.

+

show

+

Detailed information about resource.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Nova::Server
+    properties:
+      admin_pass: String
+      availability_zone: String
+      block_device_mapping: [{"snapshot_id": String, "volume_id": String, "delete_on_termination": Boolean, "volume_size": Integer, "device_name": String}, {"snapshot_id": String, "volume_id": String, "delete_on_termination": Boolean, "volume_size": Integer, "device_name": String}, ...]
+      block_device_mapping_v2: [{"disk_bus": String, "swap_size": Integer, "device_name": String, "device_type": String, "delete_on_termination": Boolean, "volume_id": String, "snapshot_id": String, "boot_index": Integer, "image_id": String, "volume_size": Integer}, {"disk_bus": String, "swap_size": Integer, "device_name": String, "device_type": String, "delete_on_termination": Boolean, "volume_id": String, "snapshot_id": String, "boot_index": Integer, "image_id": String, "volume_size": Integer}, ...]
+      config_drive: Boolean
+      diskConfig: String
+      flavor: String
+      flavor_update_policy: String
+      image: String
+      image_update_policy: String
+      key_name: String
+      metadata: {...}
+      name: String
+      networks: [{"network": String, "uuid": String, "fixed_ip": String, "port": String, "floating_ip": String, "subnet": String, "port_extra_properties": {"qos_policy": String, "mac_address": String, "binding:vnic_type": String, "admin_state_up": Boolean, "port_security_enabled": Boolean, "allowed_address_pairs": [{"mac_address": String, "ip_address": String}, {"mac_address": String, "ip_address": String}, ...], "value_specs": {...}}}, {"network": String, "uuid": String, "fixed_ip": String, "port": String, "floating_ip": String, "subnet": String, "port_extra_properties": {"qos_policy": String, "mac_address": String, "binding:vnic_type": String, "admin_state_up": Boolean, "port_security_enabled": Boolean, "allowed_address_pairs": [{"mac_address": String, "ip_address": String}, {"mac_address": String, "ip_address": String}, ...], "value_specs": {...}}}, ...]
+      personality: {...}
+      reservation_id: String
+      scheduler_hints: {...}
+      security_groups: [Value, Value, ...]
+      software_config_transport: String
+      user_data: String
+      user_data_format: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0074.html b/docs/rts/umn/rts_02_0074.html new file mode 100644 index 000000000..42c2fb3e0 --- /dev/null +++ b/docs/rts/umn/rts_02_0074.html @@ -0,0 +1,65 @@ + + +

OS::Nova::ServerGroup

+

A resource for managing a Nova server group.

+

Server groups allow you to make sure instances are on the same hypervisor host or on a different one.

+

Optional Properties

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

Name

+

Description

+

name

+

Server Group name.

+

String value expected.

+

Updates cause replacement.

+

policies

+

A list of string policies to apply. Defaults to anti-affinity.

+

List value expected.

+

Updates cause replacement.

+

Defaults to "['anti-affinity']".

+

Allowed values: anti-affinity, affinity

+
+
+
+

Attributes

+
+ + + + + + + +

Name

+

Description

+

show

+

Detailed information about resource.

+
+
+
+

HOT Syntax

heat_template_version: 2015-04-30
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Nova::ServerGroup
+    properties:
+      name: String
+      policies: [String, String, ...]
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0075.html b/docs/rts/umn/rts_02_0075.html new file mode 100644 index 000000000..03ecaea4e --- /dev/null +++ b/docs/rts/umn/rts_02_0075.html @@ -0,0 +1,155 @@ + + +

OSE::AS::ScalingConfig

+

A resource for managing autoscaling configuration.

+

Required Properties

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

Name

+

Description

+

scaling_configuration_name

+

Autoscaling configuration name.

+

String value expected.

+

Updates cause replacement.

+

It is allowed to start with numbers, letters, _, and - characters. It is allowed to include numbers, letters, _, and - characters, and the string length is 1 to 64.

+

instance_config

+

Instance configuration.

+

Map value expected.

+

Updates cause replacement.

+

Map properties:

+
  • instance_id

    Cloud server ID, if instance_id is specified, it will use this existing instance as a bus dtemplate to create an autoscaling configuration. The flavorRef, imageRef, and disk fields do not take effect at this time. The flavorRef, imageRef, and disk fields are required when the instance_id field is not passed in.

    +

    String value expected.

    +

    Updates cause replacement.

    +
  • flavorRef

    Cloud server specification ID, which defines the cloud server CPUs and memory size.

    +

    String value expected.

    +

    Updates cause replacement.

    +
  • imageRef

    Image ID.

    +

    String value expected.

    +

    Updates cause replacement.

    +
  • disk

    Disk group information, system disk must be selected, data disk is optional.

    +

    List value expected.

    +

    Updates cause replacement.

    +

    List contents:

    +
    • *

      Map value expected.

      +

      Updates cause replacement.

      +

      Map properties:

      +

      - size

      +

      Disk size, in GB.

      +

      Integer value expected.

      +

      Updates cause replacement.

      +

      The size of system disk is range from 140 to 32768, include 140 and 32768.

      +

      The size of data disk is range from 10 to 32768, include 10 and 32768.

      +

      - volume_type

      +

      The type of volume.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Allowed values: SSD, SATA, SAS, uh-l1 (Ultra-high I/O (Latency optimized)).

      +

      - disk_type

      +

      Disk type, system disk or data disk.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Allowed values: SYS, DATA

      +
    +
  • key_name

    SSH key name to logon server, which mutually exclusive with adminPass.

    +

    String value expected.

    +

    Updates cause replacement.

    +
  • adminPass

    Initial password for administrator account.

    +

    String value expected.

    +

    Updates cause replacement.

    +

    The length is range from 8 to 26. The password can only contain letters, numbers, and special characters, namely "!@$%^-_=+[{}]:,./?". It must contain at least three of the four characters. The password can not contain user name or the reverse of it.

    +
  • personality

    File inject content.

    +

    List value expected.

    +

    Updates cause replacement.

    +

    Only support the injection of text files, the maximum is five. The maximum size of each file is 1KB.

    +

    List contents:

    +
    • *

      Map value expected.

      +

      Updates cause replacement.

      +

      Map properties:

      +

      - path

      +

      Path of the injected file.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      - content

      +

      Content of the injected file.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      The content must be encoded by base64.

      +
    +
  • public_ip

    Elastic IP information.

    +

    Map value expected.

    +

    Updates cause replacement.

    +

    Map properties:

    +
    • eip

      Elastic IP configuration parameters.

      +

      Map value expected.

      +

      Updates cause replacement.

      +

      Map properties:

      +

      - ip_type

      +

      The type of IP.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Allowed values: 5_bgp, 5_lxbgp, 5_telcom, 5_union

      +

      - bandwidth

      +

      IP address bandwidth.

      +

      Map value expected.

      +

      Updates cause replacement.

      +

      Map properties:

      +

      - size

      +

      The size of bandwidth.

      +

      Integer value expected.

      +

      Updates cause replacement.

      +

      Range from 1 to 300, include 1 and 300.

      +

      - share_type

      +

      The share type of bandwidth.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Allowed values: PER

      +

      - charging_mode

      +

      The charging mode of bandwidth.

      +

      String value expected.

      +

      Updates cause replacement.

      +

      Allowed values: bandwidth, traffic

      +
    +
  • user_data

    Cloud-init user data.

    +

    String value expected.

    +

    Updates cause replacement.

    +
  • metadata

    Metadata for creating cloud server.

    +

    Map value expected.

    +

    Updates cause replacement.

    +
+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OSE::AS::ScalingConfig
+    properties:
+      scaling_configuration_name: String
+      instance_config:
+      key_name: String
+      flavorRef: String
+      imageRef: String
+      disk: [{"disk_type": String, "size":  Integer, "volume_type": String}, {"disk_type": String, "size": Integer,  "volume_type": String},…]
+      personality: [{"path": String, "content":  String}, {"path": String, "content": String},…]
+      public_ip: {"eip": {"ip_type": String,  "bandwidth": {"size": Integer, "share_type": String, "charging_mode": String}}}
+      user_data: String
+      metadata: {…}
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0076.html b/docs/rts/umn/rts_02_0076.html new file mode 100644 index 000000000..f8333bf5b --- /dev/null +++ b/docs/rts/umn/rts_02_0076.html @@ -0,0 +1,228 @@ + + +

OSE::AS::ScalingGroup

+

A resource for managing autoscaling group.

+

Required Properties

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

Name

+

Description

+

scaling_group_name

+

Autoscaling group name.

+

String value expected.

+

Can be updated without replacement.

+

It is allowed to start with numbers, letters, _, and - characters. It is allowed to include numbers, letters, _, and - characters, and the string length is 1 to 64.

+

scaling_configuration_id

+

AS configuration ID.

+

String value expected.

+

Can be updated without replacement.

+

networks

+

An ordered list of networks used to create instances, which are in same VPC defined in the vpc_id parameter.

+

List value expected.

+

Can be updated without replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Can be updated without replacement.

    +

    Map properties:

    +
    • id

      The ID of network.

      +

      String value expected.

      +

      Can be updated without replacement.

      +
    +
+

security_groups

+

An ordered list of security groups used to create instances.

+

List value expected.

+

Can be updated without replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Can be updated without replacement.

    +

    Map properties:

    +
    • id

      The ID of security group.

      +

      String value expected.

      +

      Can be updated without replacement.

      +
    +
+

vpc_id

+

Virtual private cloud ID.

+

String value expected.

+

Updates cause replacement.

+
+
+
+

Optional Properties

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

Name

+

Description

+

desire_instance_number

+

Desired instance number allowed in autoscaling group.

+

Integer value expected.

+

Can be updated without replacement.

+

min_instance_number

+

The minimum instance number allowed in autoscaling group.

+

Integer value expected.

+

Can be updated without replacement.

+

max_instance_number

+

The max instance number allowed in autoscaling group.

+

Integer value expected.

+

Can be updated without replacement.

+
NOTE:

The max instance number can not be smaller than the minimum instance number, can be equal. The value must be greater than 0.

+
+

cool_down_time

+

Cool down period, in seconds.

+

Integer value expected.

+

Can be updated without replacement.

+

Range from 0 to 86400, include 0 and 86400.

+

lb_listener_id

+

ELB listener ID.

+

String value expected.

+

Can be updated without replacement.

+

lbaas_listeners

+

Lbaas listener, which is mutually exclusive with lb_listener_id.

+

List value expected.

+

Can be updated without replacement.

+

List contents:

+
  • *

    Map value expected.

    +

    Can be updated without replacement.

    +

    Map properties:

    +
    • listener_id

      The listener id of the elastic load balancer.

      +

      String value expected.

      +

      Can be updated without replacement.

      +
    • protocol_port

      The port that backend server listens.

      +

      Integer value expected.

      +

      Can be updated without replacement.

      +

      Range from 1 to 65535, include 1 and 65535.

      +
    • weight

      The request rate that backend server receive.

      +

      Integer value expected.

      +

      Can be updated without replacement.

      +

      Range from 0 to 256, include 0 and 256.

      +
    +
+

available_zones

+

An ordered list of available zones used to create instances.

+

List value expected.

+

Can be updated without replacement.

+

health_periodic_audit_method

+

The health periodic audit method, when the lb_listener_id and lbaas_listeners parameter is set, the default is ELB_AUDIT, otherwise, it defaults to NOVA_AUDIT.

+

String value expected.

+

Can be updated without replacement.

+

Allowed values: ELB_AUDIT, NOVA_AUDIT

+

health_periodic_audit_time

+

The health periodic audit time, in minutes.

+

Integer value expected.

+

Can be updated without replacement.

+

Allowed values: 5, 15, 60, 180

+

instance_terminate_policy

+

The policy of terminating instances.

+

String value expected.

+

Can be updated without replacement.

+

Allowed values: OLD_CONFIG_OLD_INSTANCE, OLD_CONFIG_NEW_INSTANCE, OLD_INSTANCE, NEW_INSTANCE

+
  • OLD_CONFIG_OLD_INSTANCE: The oldest instance created based on the oldest configuration is removed from the AS group first.
  • OLD_CONFIG_NEW_INSTANCE: The latest instance created based on the oldest configuration is removed from the AS group first.
  • OLD_INSTANCE: The oldest instance is removed from the AS group first.
  • NEW_INSTANCE: The latest instance is removed from the AS group first.
+

delete_publicip

+

Whether to delete the elastic ip when terminating instances.

+

Boolean value expected.

+

Can be updated without replacement.

+
+
+
+

Attributes

+
+ + + + + + + +

Name

+

Description

+

instances

+

A list of all instances information. The information of instances may be obtained through the following expression: "{ get_attr: [<autoscaling_group_resource_name>, instances] }".

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OSE::AS::ScalingGroup
+    properties:
+      scaling_group_name: String
+      scaling_configuration_id: String
+      desire_instance_number: Integer
+      min_instance_number: Integer
+      max_instance_number: Integer
+      cool_down_time: Integer
+      lb_listener_id: String
+      available_zones: [String, String,…]
+      networks: [String, String,…]
+      security_groups: [{"id": String}, {"id":  String},…]
+      vpc_id: String
+      health_periodic_audit_method: String
+      health_periodic_audit_time: Integer
+      instance_terminate_policy: String
+      notifications: [String, String,…]
+      delete_publicip: Boolean
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0077.html b/docs/rts/umn/rts_02_0077.html new file mode 100644 index 000000000..a2e7396fc --- /dev/null +++ b/docs/rts/umn/rts_02_0077.html @@ -0,0 +1,129 @@ + + +

OSE::AS::ScalingPolicy

+

A resource for managing autoscaling policy.

+

Required Properties

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

Name

+

Description

+

scaling_policy_name

+

Autoscaling policy name.

+

String value expected.

+

Can be updated without replacement.

+

It is allowed to start with numbers, letters, _, and - characters. It is allowed to include numbers, letters, _, and - characters, and the string length is 1 to 64.

+

scaling_group_id

+

Autoscaling group ID.

+

String value expected.

+

Updates cause replacement.

+

scaling_policy_type

+

The type of autoscaling policy.

+

String value expected.

+

Can be updated without replacement.

+

Allowed values: ALARM, SCHEDULED, RECURRENCE

+
  • ALARM: AS automatically increases or decreases the number of instances in an AS group or sets the number of instances to a specified value if Cloud Eye (CES) generates an alarm for a configured metric, such as CPU usage.
  • SCHEDULED: AS automatically increases or decreases the number of instances in an AS group or sets the number of instances to a specified value at a specified time.
  • RECURRENCE: AS increases or decreases the number of instances in an AS group or sets the number of instances to a specified value at a configured interval, such as one day, one week, or month.
+
+
+
+

Optional Properties

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

Name

+

Description

+

alarm_id

+

CES alarm rule ID, which must be selected when scaling_policy_type is ALARM.

+

String value expected.

+

Can be updated without replacement.

+

scheduled_policy

+

The scheduled policy, which must be set when scaling_policy_type is SCHEDULED or RECURRENCE.

+

Map value expected.

+

Can be updated without replacement.

+

Map properties:

+
  • launch_time

    The launch time of scheduled policy. If scaling_policy_type is SCHEDULED, the format is: YYYY-MM-DDThh: mmZ, else if scaling_policy_type is RECURRENCE, the format is: hh: mm.

    +

    String value expected.

    +

    Can be updated without replacement.

    +
  • recurrence_type

    The recurrence type of scheduled policy, must be specified when scaling_policy_type is RECURRENCE.

    +

    String value expected.

    +

    Can be updated without replacement.

    +

    Allowed values: Daily, Weekly and Monthly.

    +
  • recurrence_value

    The recurrence value of scheduled policy. When the recurrence type is Daily, the recurrence value is null, indicating that it is executed every day. When the recurrence type is Weekly, the recurrence value is in the range 1-7 (1 for Sunday). When the recurrence type is Monthly, the recurrence value is in the range of 1-31.

    +

    String value expected.

    +

    Can be updated without replacement.

    +
  • start_time

    The start time of scheduled policy, the format is: YYYY-MM-DDThh: mmZ.

    +

    String value expected.

    +

    Can be updated without replacement.

    +
  • end_time

    The end time of scheduled policy, the format is: YYYY-MM-DDThh: mmZ, must be specified when scaling_policy_type is RECURRENCE.

    +

    String value expected.

    +

    Can be updated without replacement.

    +
+

scaling_policy_action

+

Strategy to perform specific actions.

+

Map value expected.

+

Can be updated without replacement.

+

Map properties:

+
  • operation

    The operation of scheduled policy action.

    +

    String value expected.

    +

    Can be updated without replacement.

    +

    Allowed values: ADD, REMOVE and SET

    +

    Default value: ADD.

    +
  • instance_number

    The instance number per operation.

    +

    Integer value expected.

    +

    Can be updated without replacement.

    +

    Default value: 1

    +
+

cool_down_time

+

Cool down period, in seconds.

+

Integer value expected.

+

Can be updated without replacement.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OSE::AS::ScalingPolicy
+    properties:
+      scaling_policy_name: String
+      scaling_group_id: String
+      scaling_policy_type: String
+      alarm_id: String
+      scheduled_policy: String
+      scaling_policy_action: {"operation":  String, "instance_number": Integer}
+      cool_down_time: Integer
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0078.html b/docs/rts/umn/rts_02_0078.html new file mode 100644 index 000000000..bce7814fe --- /dev/null +++ b/docs/rts/umn/rts_02_0078.html @@ -0,0 +1,177 @@ + + +

OSE::CES::Alarm

+

A resource of CES.

+

Required Properties

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

Name

+

Description

+

evaluation_periods

+

Consecutive count.

+

Integer value expected.

+

Can be updated without replacement.

+

Allowed values: from 1 to 5, include 1 and 5.

+

comparison_operator

+

Operator used to compare specified statistic with threshold.

+

String value expected.

+

Can be updated without replacement.

+

Allowed values: gt, lt, ge, le, eq

+

meter_name

+

Metric name.

+

String value expected.

+

Updates cause replacement.

+

Allowed values: cpu_util, mem_util, network_incoming_bytes_rate_inband, and network_outgoing_bytes_rate_inband.

+
  • cpu_util: CPU Usage.
  • mem_util: Memory Usage.
  • network_incoming_bytes_rate_inband: Inband Incoming Rate.
  • network_outgoing_bytes_rate_inband: Inband Outgoing Rate.
+

period

+

Period (seconds) to evaluate over.

+

Integer value expected.

+

Can be updated without replacement.

+

Allowed values: 300, 1200, 3600, 14400, 86400

+

During alarm interconnection with CES, the native attribute period can be any value. However, CES supports only the preceding fixed values. Otherwise, alarm resource creation fails.

+

resource_id

+

ID of the group.

+

String value expected.

+

Updates cause replacement.

+

This attributed is required by Cloud Eye (CES) for filtering.

+

statistic

+

Way to data aggregation.

+

String value expected.

+

Updates cause replacement.

+

Allowed values: avg, min, max, variance.

+

threshold

+

Threshold value of the alarm.

+

Integer value expected.

+

Can be updated without replacement.

+
+
+
+

Optional Properties

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

Name

+

Description

+

action_enabled

+

Whether to enable this alarm to trigger actions.

+

Boolean value expected.

+

Can be updated without replacement.

+

Defaults to "True".

+

alarm_actions

+

A list of URLs (webhooks) to invoke when state transitions to alarm.

+

List value expected.

+

Can be updated without replacement.

+

description

+

Description for the alarm.

+

String value expected.

+

Can be updated without replacement.

+

Allowed pattern: ^[^\&\"\'\(\)]{0,256}$

+

enabled

+

Whether to enable alarm.

+

Boolean value expected.

+

Can be updated without replacement.

+

Defaults to "True".

+

name

+

Name of the alarm.

+

String value expected.

+

Can be updated without replacement.

+

It is allowed to start with numbers, letters, _, and - characters. It is allowed to include numbers, letters, _, and - characters, and the string length is 1 to 128.

+

unit

+

Unit of data.

+

String value expected.

+

Can be updated without replacement.

+

The string length allowed is 0 to 32.

+

matching_metadata

+

Meter should match this resource metadata (key=value) additionally to the meter_name.

+

Map value expected.

+

Can be updated without replacement.

+

Defaults to "{}".

+
NOTE:

This parameter is invalid in the current version.

+
+

resource_type

+

Alarm type of resource.

+

String value expected.

+

Updates cause replacement.

+

Defaults to "RTS.Group".

+

Allowed values: RTS.Group, AS.Group

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OSE::CES::Alarm
+    properties:
+      action_enabled: Boolean
+      alarm_actions: […]
+      comparison_operator: String
+      description: String
+      enabled: Boolean
+      evaluation_periods: Integer
+      meter_name: String
+      name: String
+      period: Integer
+      resource_id: String
+      statistic: String
+      threshold: Integer
+      unit: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0079.html b/docs/rts/umn/rts_02_0079.html new file mode 100644 index 000000000..6f0dee9e1 --- /dev/null +++ b/docs/rts/umn/rts_02_0079.html @@ -0,0 +1,154 @@ + + +

OSE::ELB::LoadBalancer

+

A resource for ELB Loadbalancer.

+

In later version, the API for using the LBaaS v2 load balancers will be provided, and you can create native LBaaS v2 load balancers. However, created load balancer cannot be changed to LBaaS v2 load balancers.

+
+

Required Properties

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

Name

+

Description

+

admin_state_up

+

The admin state of the load balancer.

+

Boolean value expected.

+

Can be updated without replacement.

+

Defaults to "True".

+

name

+

The name of the load balancer.

+

String value expected.

+

Can be updated without replacement.

+

It is allowed to start with numbers, letters, _, and - characters. It is allowed to include numbers, letters, _, and - characters, and the string length is 1 to 64.

+

type

+

The type of the load balancer.

+

String value expected.

+

Updates cause replacement.

+

Allowed values: External, Internal

+

vpc_id

+

The ID of vpc.

+

String value expected.

+

Updates cause replacement.

+
NOTE:

You must specify the VPC ID when using the RTS to perform operations on ELB.

+
  • Only one VPC is supported for each tenant.
  • You must add the VPC ID in the Heat template. (You can query the VPC using the API.)
+
+
+
+
+

Optional Properties

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

Name

+

Description

+

az

+

The ID or name of the availability zone.

+

String value expected.

+

Updates cause replacement.

+
NOTE:
  • The AZ attribute is mandatory, and you need to specify it.
  • If the AZ attribute is not specified, calls are made to the Nova API to randomly select an AZ.
+
+

bandwidth

+

The bandwidth of the load balancer, in Mbit/s.

+

Integer value expected.

+

Can be updated without replacement.

+

Allowed values: from 1 to 300, include 1 and 300

+
NOTE:

The default bandwidth size value of an ELB listener is 300, and you can use only the default value.

+
+

description

+

The description of the load balancer.

+

String value expected.

+

Can be updated without replacement.

+

It is allowed to start with numbers, letters, _, and - characters. It is allowed to include numbers, letters, _, and - characters, and the string length is 1 to 128.

+

security_group

+

The ID of the security group.

+

String value expected.

+

Updates cause replacement.

+

vip_subnet_id

+

The ID of the network on which to allocate the VIP.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type neutron.network

+
+
+
+

Attributes

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

Name

+

Description

+

status

+

The status of the load balancer.

+

vip_address

+

The VIP address of the load balancer.

+

vip_subnet_id

+

The VIP subnet of the load balancer.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OSE::ELB::LoadBalancer
+    properties:
+      admin_state_up: Boolean
+      az: String
+      bandwidth: Integer
+      description: String
+      name: String
+      security_group: String
+      type: String
+      vip_subnet_id: String
+      vpc_id: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0080.html b/docs/rts/umn/rts_02_0080.html new file mode 100644 index 000000000..5ed320e9d --- /dev/null +++ b/docs/rts/umn/rts_02_0080.html @@ -0,0 +1,191 @@ + + +

OSE::ELB::Listener

+

A resource for ELB Listener.

+

Required Properties

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

Name

+

Description

+

name

+

The name of the listener.

+

String value expected.

+

Can be updated without replacement.

+

It is allowed to start with numbers, letters, _, and - characters. It is allowed to include numbers, letters, _, and - characters, and the string length is 1 to 64.

+

loadbalancer_id

+

The ID of load balancer associated.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type elb.lb

+

protocol

+

The protocol of the listener.

+

String value expected.

+

Updates cause replacement.

+

Allowed values: HTTP, HTTPS, TCP

+
NOTE:

Do not update this attribute. Otherwise, the listener update will fail.

+
+

backend_protocol

+

The backend protocol of the listener.

+

String value expected.

+

Updates cause replacement.

+

Allowed values: HTTP, TCP

+
NOTE:

Do not update this attribute. Otherwise, the listener update will fail.

+
+

port

+

The port of the listener.

+

Integer value expected.

+

Can be updated without replacement.

+

Allowed values: from 1 to 65535, include 1 and 65535

+

backend_port

+

The backend port of the listener.

+

Integer value expected.

+

Can be updated without replacement.

+

Allowed values: from 1 to 65535, include 1 and 65535

+

lb_algorithm

+

The algorithm used to distribute load.

+

String value expected.

+

Can be updated without replacement.

+

Allowed values: roundrobin, leastconn, source

+
+
+
+

Optional Properties

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

Name

+

Description

+

certificate_id

+

The ID of certificate.

+

String value expected.

+

Updates cause replacement.

+
NOTE:

Do not update this attribute. Otherwise, the listener update will fail.

+
+

cookie_timeout

+

The timeout of cookie in minute.

+

Integer value expected.

+

Updates cause replacement.

+

Allowed values: from 1 to 1440, include 1 and 1440

+
NOTE:

Do not update this attribute. Otherwise, the listener update will fail.

+
+

description

+

The description of the listener.

+

String value expected.

+

Can be updated without replacement.

+

It is not allowed to start with the <> character. The <> character is not allowed and the string length is 1 to 128.

+

session_sticky

+

Whether to keep the session.

+

Boolean value expected.

+

Updates cause replacement.

+
NOTE:

Do not update this attribute. Otherwise, the listener update will fail.

+
+

sticky_session_type

+

The way of handing cookie.

+

String value expected.

+

Updates cause replacement.

+

Allowed values: insert

+
NOTE:

Do not update this attribute. Otherwise, the listener update will fail.

+
+

tcp_timeout

+

The timeout of TCP session in minute.

+

Integer value expected.

+

Updates cause replacement.

+

Allowed values: from 1 to 5, include 1 and 5. The default value is 5.

+
NOTE:

Do not update this attribute. Otherwise, the listener update will fail.

+
+
+
+
+

Attributes

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

Name

+

Description

+

member_number

+

The number of the members listened by this listener.

+

status

+

The status of the listener.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OSE::ELB::Listener
+    properties:
+      backend_port: Integer
+      backend_protocol: Integer
+      certificate_id: String
+      cookie_timeout: Integer
+      description: String
+      lb_algorithm: String
+      loadbalancer_id: String
+      name: String
+      port: Integer
+      protocol: String
+      session_sticky: Boolean
+      sticky_session_type
+      tcp_timeout: Integer
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0081.html b/docs/rts/umn/rts_02_0081.html new file mode 100644 index 000000000..daeaf8157 --- /dev/null +++ b/docs/rts/umn/rts_02_0081.html @@ -0,0 +1,115 @@ + + +

OSE::ELB::HealthCheck

+

A resource for ELB Health Check.

+

You must configure health checks for load balancers.

+
+

Required Properties

+
+ + + + + + + +

Name

+

Description

+

listener_id

+

The ID of listener associated.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type elb.ls

+
+
+
+

Optional Properties

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

Name

+

Description

+

healthcheck_connect_port

+

The port of the health check.

+

Integer value expected.

+

Can be updated without replacement.

+

Allowed values: from 1 to 65535, include 1 and 65535.

+

healthcheck_interval

+

The interval between the health checks in seconds.

+

Integer value expected.

+

Can be updated without replacement.

+

Allowed values: from 1 to 5, include 1 and 5.

+

healthcheck_protocol

+

The protocol of the health check.

+

String value expected.

+

Can be updated without replacement.

+

Allowed values: HTTP, TCP

+

healthcheck_timeout

+

The timeout of the health check in seconds.

+

Integer value expected.

+

Can be updated without replacement.

+

Allowed values: from 1 to 50, include 1 and 50.

+

healthcheck_uri

+

The HTTP path used in the HTTP request to check a member health.

+

String value expected.

+

Can be updated without replacement.

+

It is allowed to start with / characters. It is allowed to include numbers, letters, -/.%?#& characters, and the string length is 1 to 80.

+

healthy_threshold

+

The number of the successful threshold before change the member status to healthy.

+

Integer value expected.

+

Can be updated without replacement.

+

Allowed values: from 1 to 10, include 1 and 10. The default value is 3.

+

unhealthy_threshold

+

The number of the failure threshold before change the member status to unhealthy.

+

Integer value expected.

+

Can be updated without replacement.

+

Allowed values: from 1 to 10, include 1 and 10.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OSE::ELB::HealthCheck
+    properties:
+      healthcheck_connect_port: Integer
+      healthcheck_interval: Integer
+      healthcheck_protocol: String
+      healthcheck_timeout: Integer
+      healthcheck_uri: String
+      healthy_threshold: Integer
+      listener_id: String
+      unhealthy_threshold: Integer
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0082.html b/docs/rts/umn/rts_02_0082.html new file mode 100644 index 000000000..ccd055868 --- /dev/null +++ b/docs/rts/umn/rts_02_0082.html @@ -0,0 +1,61 @@ + + +

OSE::ELB::Member

+

A resource for member.

+

Required Properties

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

Name

+

Description

+

listener_id

+

The ID of listener associated.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type elb.ls

+

members

+

The servers to add as members.

+

List value expected.

+

Can be updated without replacement.

+

Value length: from 1 to 6, include 1 and 6.

+

List contents:

+
  • *

    Map value expected.

    +

    Can be updated without replacement.

    +

    Map properties:

    +
    • address

      The private address of the server to add.

      +

      String value expected.

      +

      Can be updated without replacement.

      +
    • server_id

      ID of the server to add.

      +

      String value expected.

      +

      Can be updated without replacement.

      +

      Value must be of type nova.server

      +
    +
+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OSE::ELB::Member
+    properties:
+      listener_id: String
+      members: [{"address": String, "server_id": String}, {"address": String, "server_id": String}, …]
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0083.html b/docs/rts/umn/rts_02_0083.html new file mode 100644 index 000000000..ade52748d --- /dev/null +++ b/docs/rts/umn/rts_02_0083.html @@ -0,0 +1,73 @@ + + +

OSE::ELB::Certificate

+

A resource for certificate.

+

Required Properties

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

Name

+

Description

+

certificate

+

PEM-formatted certificate chain.

+

String value expected.

+

Updates cause replacement.

+

private_key

+

PEM-formatted private_key chain.

+

String value expected.

+

Updates cause replacement.

+
+
+
+

Optional Properties

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

Name

+

Description

+

description

+

The description of the certificate.

+

String value expected.

+

Can be updated without replacement.

+

name

+

The name of the certificate.

+

String value expected.

+

Can be updated without replacement.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OSE::ELB::Certificate
+    properties:
+      certificate: String
+      description: String
+      name: String
+      private_key: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0084.html b/docs/rts/umn/rts_02_0084.html new file mode 100644 index 000000000..976d61c25 --- /dev/null +++ b/docs/rts/umn/rts_02_0084.html @@ -0,0 +1,150 @@ + + +

OS::Neutron::LBaaS::HealthMonitor

+

A resource to handle load balancer health monitors.

+

This resource creates and manages Neutron LBaaS v2 healthmonitors, which watches status of the load balanced servers.

+

Required Properties

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

Name

+

Description

+

delay

+

The minimum time in milliseconds between regular connections of the member.

+

Integer value expected.

+

Can be updated without replacement.

+

The value must be in the range 0 to 2147483647, include 0 and 2147483647.

+

max_retries

+

Number of permissible connection failures before changing the member status to INACTIVE.

+

Integer value expected.

+

Can be updated without replacement.

+

The value must be in the range 1 to 10, include 1 and 10.

+

pool

+

ID or name of the load balancing pool.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type neutron.lbaas.pool

+

timeout

+

Maximum number of milliseconds for a monitor to wait for a connection to be established before it times out.

+

Integer value expected.

+

Can be updated without replacement.

+

The value must be in the range 0 to 2147483647, include 0 and 2147483647.

+

type

+

One of predefined health monitor types.

+

String value expected.

+

Updates cause replacement.

+

Allowed values: PING, TCP, HTTP

+
+
+
+

Optional Properties

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

Name

+

Description

+

admin_state_up

+

The administrative state of the health monitor.

+

Boolean value expected.

+

Updates are not supported.

+

Allowed values: True

+

expected_codes

+

The HTTP status codes expected in response from the member to declare it healthy.

+

Specify one of the following values:

+
  • a single value, such as 200.
  • a list, such as 200, 202.
  • a range, such as 200 to 204.
+

String value expected.

+

Can be updated without replacement.

+

Defaults to "200".

+

http_method

+

The HTTP method used for requests by the monitor of type HTTP.

+

String value expected.

+

Can be updated without replacement.

+

Defaults to "GET".

+

Allowed values: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH

+

tenant_id

+

ID of the tenant who owns the health monitor.

+

String value expected.

+

Updates cause replacement.

+

url_path

+

The HTTP path used in the HTTP request used by the monitor to test a member health. A valid value is a string that begins with a forward slash (/).

+

String value expected.

+

Can be updated without replacement.

+

Defaults to "/".

+
+
+
+

Attributes

+
+ + + + + + + +

Name

+

Description

+

pools

+

The list of Pools related to this monitor.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Neutron::LBaaS::HealthMonitor
+    properties:
+      admin_state_up: Boolean
+      delay: Integer
+      expected_codes: String
+      http_method: String
+      max_retries: Integer
+      pool: String
+      tenant_id: String
+      timeout: Integer
+      type: String
+      url_path: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0085.html b/docs/rts/umn/rts_02_0085.html new file mode 100644 index 000000000..82ddad8bc --- /dev/null +++ b/docs/rts/umn/rts_02_0085.html @@ -0,0 +1,136 @@ + + +

OS::Neutron::LBaaS::Listener

+

A resource for managing LBaaS v2 Listeners.

+

This resource creates and manages Neutron LBaaS v2 Listeners, which represent a listening endpoint for the vip.

+

Required Properties

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

Name

+

Description

+

loadbalancer

+

ID or name of the load balancer with which listener is associated.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type neutron.lbaas.loadbalancer

+

protocol

+

Protocol on which to listen for the client traffic. It must be the same as the value of OS::Neutron::LBaaS::Pool's protocol.

+

String value expected.

+

Updates cause replacement.

+

Allowed values: TCP, HTTP

+

protocol_port

+

TCP or UDP port on which to listen for client traffic.

+

Integer value expected.

+

Updates cause replacement.

+

The value must be in the range 1 to 65535, include 1 and 65535.

+
+
+
+

Optional Properties

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

Name

+

Description

+

admin_state_up

+

The administrative state of this listener.

+

Boolean value expected.

+

Updates are not supported.

+

Allowed values: True

+

connection_limit

+

The maximum number of connections permitted for this load balancer. Defaults to -1, which is infinite.

+

Integer value expected.

+

Can be updated without replacement.

+

Defaults to "-1".

+

The value must be in the range -1 to 2147483647, include -1 and 2147483647.

+

description

+

Description of this listener.

+

String value expected.

+

Can be updated without replacement.

+

Defaults to " ".

+

name

+

Name of this listener.

+

String value expected.

+

Can be updated without replacement.

+

tenant_id

+

The ID of the tenant who owns the listener.

+

String value expected.

+

Updates cause replacement.

+
+
+
+

Attributes

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

Name

+

Description

+

default_pool_id

+

ID of the default pool this listener is associated to.

+

loadbalancers

+

ID of the load balancer this listener is associated to.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Neutron::LBaaS::Listener
+    properties:
+      admin_state_up: Boolean
+      connection_limit: Integer
+      default_tls_container_ref: String
+      description: String
+      loadbalancer: String
+      name: String
+      protocol: String
+      protocol_port: Integer
+      sni_container_refs: [Value, Value, ...]
+      tenant_id: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0086.html b/docs/rts/umn/rts_02_0086.html new file mode 100644 index 000000000..1f8a39cf4 --- /dev/null +++ b/docs/rts/umn/rts_02_0086.html @@ -0,0 +1,130 @@ + + +

OS::Neutron::LBaaS::LoadBalancer

+

A resource for creating LBaaS v2 Load Balancers.

+

This resource creates and manages Neutron LBaaS v2 Load Balancers, which allows traffic to be directed between servers.

+

Required Properties

+
+ + + + + + + +

Name

+

Description

+

vip_subnet

+

The name or ID of the subnet on which to allocate the VIP address.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type neutron.subnet

+
+
+
+

Optional Properties

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

Name

+

Description

+

admin_state_up

+

The administrative state of this Load Balancer.

+

Boolean value expected.

+

Updates are not supported.

+

Allowed values: True

+

description

+

Description of this Load Balancer.

+

String value expected.

+

Can be updated without replacement.

+

Defaults to " ".

+

name

+

Name of this Load Balancer.

+

String value expected.

+

Can be updated without replacement.

+

provider

+

Provider for this Load Balancer.

+

String value expected.

+

Updates are not supported.

+

Allowed values: vlb

+

tenant_id

+

The ID of the tenant who owns the Load Balancer. Only administrative users can specify a tenant ID other than their own.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type keystone.project

+

vip_address

+

IP address for the VIP.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type ip_addr

+
+
+
+

Attributes

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

Name

+

Description

+

vip_address

+

The VIP address of the LoadBalancer.

+

vip_port_id

+

The VIP port of the LoadBalancer.

+

vip_subnet_id

+

The VIP subnet of the LoadBalancer.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Neutron::LBaaS::LoadBalancer
+    properties:
+      admin_state_up: Boolean
+      description: String
+      name: String
+      provider: String
+      tenant_id: String
+      vip_address: String
+      vip_subnet: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0087.html b/docs/rts/umn/rts_02_0087.html new file mode 100644 index 000000000..ce228d079 --- /dev/null +++ b/docs/rts/umn/rts_02_0087.html @@ -0,0 +1,139 @@ + + +

OS::Neutron::LBaaS::Pool

+

The resource is not allowed to be updated.

+

A resource for managing LBaaS v2 Pools.

+

This resources manages Neutron-LBaaS v2 Pools, which represent a group of nodes. Pools define the subnet where nodes reside, balancing algorithm, and the nodes themselves.

+

Required Properties

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

Name

+

Description

+

lb_algorithm

+

The algorithm used to distribute load between the members of the pool.

+

String value expected.

+

Can be updated without replacement.

+

Allowed values: ROUND_ROBIN, LEAST_CONNECTIONS, SOURCE_IP

+

listener

+

Listener name or ID to be associated with this pool.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type neutron.lbaas.listener

+

protocol

+

Protocol of the pool. It must be the same as the value of OS::Neutron::LBaaS::Listener's protocol.

+

String value expected.

+

Can not be updated.

+

Allowed values: TCP, HTTP

+
+
+
+

Optional Properties

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

Name

+

Description

+

admin_state_up

+

The administrative state of this pool.

+

Boolean value expected.

+

Updates are not supported.

+

Allowed values: True

+

description

+

Description of this pool.

+

String value expected.

+

Can be updated without replacement.

+

Defaults to " ".

+

name

+

Name of this pool.

+

String value expected.

+

Can be updated without replacement.

+

session_persistence

+

Configuration of session persistence.

+

Map value expected.

+

Updates cause replacement.

+

Map properties:

+
  • cookie_name

    Name of the cookie, required if type is APP_COOKIE. It only support cookie_name in the 'APP_COOKIE' type.

    +

    String value expected.

    +

    Updates cause replacement.

    +
  • type

    Method of implementation of session persistence feature.

    +

    String value expected.

    +

    Updates cause replacement.

    +

    Allowed values: SOURCE_IP, HTTP_COOKIE, APP_COOKIE

    +
+
+
+
+

Attributes

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

Name

+

Description

+

healthmonitor_id

+

ID of the health monitor associated with this pool.

+

listeners

+

Listener associated with this pool.

+

members

+

Members associated with this pool.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Neutron::LBaaS::Pool
+    properties:
+      admin_state_up: Boolean
+      description: String
+      lb_algorithm: String
+      listener: String
+      name: String
+      protocol: String
+      session_persistence: {"type": String, "cookie_name": String}
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0088.html b/docs/rts/umn/rts_02_0088.html new file mode 100644 index 000000000..194d455c1 --- /dev/null +++ b/docs/rts/umn/rts_02_0088.html @@ -0,0 +1,118 @@ + + +

OS::Neutron::LBaaS::PoolMember

+

A resource for managing LBaaS v2 Pool Members.

+

A pool member represents a single backend node.

+

Required Properties

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

Name

+

Description

+

address

+

IP address of the pool member on the pool network.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type ip_addr

+

pool

+

Name or ID of the load balancing pool.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type neutron.lbaas.pool

+

protocol_port

+

Port on which the pool member listens for requests or connections.

+

Integer value expected.

+

Updates cause replacement.

+

The value must be in the range 1 to 65535, include 1 and 65535.

+

subnet

+

Subnet name or ID of this member.

+

String value expected.

+

Updates cause replacement.

+

Value must be of type neutron.subnet

+
+
+
+

Optional Properties

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

Name

+

Description

+

admin_state_up

+

The administrative state of the pool member.

+

Boolean value expected.

+

Updates are not supported.

+

Allowed values: True

+

weight

+

Weight of pool member in the pool (default to 1).

+

Integer value expected.

+

Can be updated without replacement.

+

Defaults to "1".

+

The value must be in the range 0 to 256, include 0 and 256.

+
+
+
+

Attributes

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

Name

+

Description

+

address

+

The IP address of the pool member.

+

pool_id

+

The ID of the pool to which the pool member belongs.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OS::Neutron::LBaaS::PoolMember
+    properties:
+      address: String
+      admin_state_up: Boolean
+      pool: String
+      protocol_port: Integer
+      subnet: String
+      weight: Integer
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0089.html b/docs/rts/umn/rts_02_0089.html new file mode 100644 index 000000000..dfb1ba8aa --- /dev/null +++ b/docs/rts/umn/rts_02_0089.html @@ -0,0 +1,260 @@ + + +

OSE::RDS::Instance

+

A resource for creating a relational database (Relational Database Service) instances.

+

A relational database service is a reliable, scalable, and easy-to-manage web service in the cloud.

+

Required Properties

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

Name

+

Description

+

name

+

Instance name

+

String value expected.

+

Updates cause replacement.

+

The instance name of the same type instances under the same tenant must be unique.

+

Value range: The value is a string of 4 to 64 characters, case insensitive, which must start with a letter. An instance name can contain letters, digits, hyphens (-), or underscores (_). Other special characters cannot be included.

+

datastore_type

+

Database engine

+

String value expected.

+

Updates cause replacement.

+

Allowed value: MySQL, PostgreSQL, or SQLServer

+

datastore_version

+

Instance version

+

String value expected.

+

Updates cause replacement.

+

Value range: The value contains a maximum of 64 characters and cannot be fewer than four characters.

+

flavor

+

Flavor ID

+

String value expected.

+

Can be updated without replacement.

+

Value range: The value cannot be empty. The length of the character string is verified and the regular UUID regular check is performed.

+ +

volume

+

Disk information

+

Map value expected.

+

Map properties:

+
  • type

    Disk type

    +

    String value expected.

    +

    Updates cause replacement.

    +

    Allowed value: Common (SATA) and ULTRAHIGH (SSD), which are case sensitive.

    +
  • size

    Disk size

    +

    Integer value expected.

    +

    Unit: GB

    +

    Can be updated without replacement.

    +

    Value range: The value ranges from 100 to 2000 and must be an integer multiple of 10.

    +
+

region

+

Area ID

+

String value expected.

+

Updates cause replacement.

+

Value range: The value cannot be empty.

+

availability_zone

+

ID of an available zone

+

String value expected.

+

Updates cause replacement.

+

Value range: The value cannot be empty.

+

nics

+

Subnet information

+

Map value expected.

+

Map properties:

+
  • subnet

    Subnet ID

    +

    String value expected.

    +

    Updates cause replacement.

    +

    Value range: The value cannot be empty. The length of the character string must be verified through the regular UUID check.

    +
+

vpc

+

ID of a VPC

+

String value expected.

+

Updates cause replacement.

+

Value range: The value cannot be empty. The length of the character string must be verified through the regular UUID check.

+

security_group

+

Security group to which an instance belongs

+

String value expected.

+

Updates cause replacement.

+

Value range: The value cannot be empty. The length of the character string must be verified through the regular UUID check.

+

password

+

Password of the database root user

+

String value expected.

+

Updates cause replacement.

+

Value range: The value is a string of 8 to 32 characters consisting of uppercase letters, lowercase letters, digits, and special characters ~!@#%^*-_=+?. The password must contain uppercase letters, lowercase letters, digits, and at least one special character.

+
+
+
+

Optional Properties

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

Name

+

Description

+

db_port

+

Port number of the database

+

Integer value expected.

+

The default value is 8036.

+

Cannot be updated.

+

backup_strategy

+

Advanced backup policy

+

Map value expected.

+

Map properties:

+
  • start_time

    Start time: Automatic backup will be triggered within one hour of the start time.

    +

    String value expected.

    +

    Updates cause replacement.

    +

    Value range: The value cannot be empty. The value must be in hh:mm:ss format and valid. The current time is the UTC time.

    +
  • days

    The number of days for which backup files can be saved.

    +

    Integer value expected.

    +

    Updates cause replacement.

    +

    Value range: 0 to 35. When this parameter is set to the default value or 0, the automatic backup policy is not configured.

    +
+

ha

+

HA configuration parameter, which is used for creating an HA instance.

+

Map value expected.

+

Map properties:

+
  • enable

    HA configuration parameters

    +

    Boolean value expected.

    +

    Updates cause replacement.

    +
  • replication_mode

    Synchronization parameter of the standby node

    +

    String value expected.

    +

    Updates cause replacement.

    +
    Value range: The value cannot be empty.
    • MySQL : The value can be async or semisync.
    • PostgreSQL: The value can be async or sync.
    +
    +
+
NOTICE:

Microsoft SQL Server does not support the creation of HA instances. Therefore, this parameter is not involved.

+
+

replica_of

+

Read-only copy configuration parameter (mandatory when a read-only copy is created).

+

String value expected.

+

Cannot be updated.

+

Value range: instance ID of the primary instance

+
+
+
+

Attributes

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

Name

+

Description

+

name

+

Database instance name

+

flavor

+

Specification information

+

hostname

+

Connection address of an instance. The value exists only after an ECS is created successfully. In other cases, the value is an empty string.

+

type

+

Instance type. The value can be master, slave, or readreplica.

+

backupStrategy

+

Advanced backup policy

+

slaveId

+

ID of the secondary instance.

+

ha

+

HA information. This parameter is returned when the HA instance is obtained.

+

replicaOf

+

This parameter is returned only when a read-only copy is obtained.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  the_resource:
+    type: OSE::RDS::Instance
+    properties:
+      name: String
+      region: String
+      availability_zone: String
+      nics:
+        subnet: String
+      volume:
+        type: String
+        size: Number
+      security_group: String
+      vpc: String
+      datastore_type: String
+      datastore_version: String
+      flavor: String
+      password: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0090.html b/docs/rts/umn/rts_02_0090.html new file mode 100644 index 000000000..80a74c3da --- /dev/null +++ b/docs/rts/umn/rts_02_0090.html @@ -0,0 +1,83 @@ + + +

OSE::VPC::Vpc

+

A resource for managing Virtual Private Cloud (VPC) resources

+

A VPC can be used to build an isolated, user-configured, and managed virtual network environment for your ECSs.

+

Required Properties

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

Name

+

Description

+

name

+

Name of a VPC

+

String value expected.

+

Can be updated without replacement.

+

Value range: The value is a string of 1 to 64 characters, including digits, letters, underscores (_), and hyphens (-).

+
NOTE:

If the name is not empty, the name of a tenant must be unique.

+
+

cidr

+

Range of available subnets in a VPC

+

String value expected.

+

Can be updated without replacement.

+

The value can be updated without replacing the template.

+

Value range: 10.0.0.0/8 to 10.255.255.0/24, 172.16.0.0/12 to 172.31.255.0/24, or 192.168.0.0/16 to 192.168.255.0/24. The value must be in the CIDR format. For example: 192.168.0.0/16.

+
+
+
+

Attributes

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

Name

+

Description

+

name

+

Name of a VPC

+

cidr

+

Range of available subnets in a VPC

+

status

+

Status of a VPC

+

neutron_router_id

+

UUID of a router

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OSE::VPC::Vpc
+    properties:
+      name: String
+      cidr: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0091.html b/docs/rts/umn/rts_02_0091.html new file mode 100644 index 000000000..4875e5b5c --- /dev/null +++ b/docs/rts/umn/rts_02_0091.html @@ -0,0 +1,122 @@ + + +

OSE::VPC::Subnet

+

A resource for managing subnets

+

Required Properties

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

Name

+

Description

+

name

+

Subnet name

+

String value expected.

+

Can be updated without replacement.

+

Value range: 1 to 64, which can contain digits, letters, underscores (_), and hyphens (-)

+

cidr

+

Network segment of a subnet

+

String value expected.

+

Updates cause replacement.

+

Value range: The value must be within the CIDR range of the VPC. The value must be in the CIDR format. The mask length cannot exceed 28 characters.

+

gateway_ip

+

Gateway of a subnet

+

String value expected.

+

Updates cause replacement.

+

Value range: IP addresses in the subnet segment. The IP address must be valid.

+

vpc_id

+

ID of the VPC to which the subnet belongs

+

String value expected.

+

Updates cause replacement.

+
+
+
+

Optional Properties

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

Name

+

Description

+

dhcp_enable

+

Whether the DHCP function is enabled on a subnet

+

String value expected.

+

Can be updated without replacement.

+

Allowed value: true and false

+

Default value: true

+

primary_dns

+

Subnet DNS server address 1

+

String value expected.

+

Can be updated without replacement.

+

The value must be a valid IP address.

+

secondary_dns

+

Subnet DNS server address 2

+

String value expected.

+

Can be updated without replacement.

+

The value must be a valid IP address.

+

dnsList

+

A set of subnet DNS server addresses

+

Use this field if you want to use more than two DNS servers. This field is the parent set of subnet DNS server address 1 and subnet DNS server address 2.

+

List value.

+

Can be updated without replacement.

+

The value in the set must be a valid IP address.

+

availability_zone

+

ID of the AZ where the subnet is located

+

String value expected.

+

Updates cause replacement.

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+... 
+resources:
+  ...
+  the_resource:
+    type: OSE::VPC::Subnet
+    properties:
+      name: String
+      cidr: String
+      gateway_ip: String
+      vpc_id: String
+      dhcp_enable: Boolean
+      primary_dns: String
+      secondary_dns: String
+      dnsList: [...]
+      availability_zone: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0092.html b/docs/rts/umn/rts_02_0092.html new file mode 100644 index 000000000..a6d8db526 --- /dev/null +++ b/docs/rts/umn/rts_02_0092.html @@ -0,0 +1,143 @@ + + +

OSE::SFS::Share

+

A resource for creating file sharing resources

+

Scalable File Service (SFS) provides users with a fully hosted shared file storage, which can be scaled to PB scale, providing high availability and durability, and providing powerful support for massive data and high-bandwidth applications. SFS applies to various application scenarios, including media processing, file sharing, content management, and web services.

+

Required Properties

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

Name

+

Description

+

share_proto

+

File system sharing protocol

+

String value expected.

+

Updates cause replacement.

+

Allowed value: NFS

+

size

+

Shared capacity

+

Integer value expected.

+

Can be updated without replacement.

+

Unit: GB

+
NOTE:

The size cannot exceed the quota. Otherwise, the shared storage fails to be created.

+
+

name

+

Name of the sharing storage

+

String value expected.

+

Can be updated without replacement.

+

Value range: 1 to 255. The value can contain only digits, letters, underscores (_), and hyphens (-).

+
+
+
+

Optional Properties

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

Name

+

Description

+

description

+

Description for a sharing file system

+

String value expected.

+

Can be updated without replacement.

+

Length: 0 to 255

+

is_public

+

Sharing range

+

Boolean value expected.

+

Updates cause replacement.

+

The default value is false.

+
NOTE:

The Boolean value can be true/false, yes/no, or on/off.

+
+

availability_zone

+

AZ name

+

String value expected.

+

Updates cause replacement.

+

Length: 0 to 255.

+
NOTE:

If no AZ information is entered, the default AZ is used. If no storage resource is available in the default AZ, creating a sharing storage fails.

+
+

metadata

+

Key-value pair of one to more dictionary form

+

Map value expected.

+

Updates cause replacement.

+

The default value is {}.

+
+
+
+

Attributes

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

Name

+

Description

+

name

+

Sharing file system name

+

export_location

+

Sharing file system mount path

+

metadata

+

Key-value pair of one to more dictionary form

+

host

+

Shared host name

+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OSE::SFS::Share
+    properties:
+      share_proto: String
+      size: Integer
+      name: String 
+      description: String 
+      availability_zone: String
+      metadata:
+        key1: value1
+        key2: value2
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0093.html b/docs/rts/umn/rts_02_0093.html new file mode 100644 index 000000000..c81854725 --- /dev/null +++ b/docs/rts/umn/rts_02_0093.html @@ -0,0 +1,63 @@ + + +

OSE::SFS::ShareAccessRule

+

A resource for creating file sharing access rules

+

Required Properties

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

Name

+

Description

+

share_id

+

Sharing ID of access rules

+

String value expected.

+

Updates cause replacement.

+

Value range: Valid shared ID, which is strictly checked using the UUID regular expression.

+

allow_access

+

Sharing file system access policy

+

Map value expected.

+

Map properties:

+
  • access_level

    Access pPermission level

    +

    String value expected.

    +

    Allowed value: ro (read-only), rw (read/write)

    +
  • access_type

    Specifies the type of a access rule. NFS sharing supports only the cert type.

    +

    String value expected.

    +
    NOTE:

    If the NFS sharing access rule type is cert, set access_to to the VPC ID.

    +
    +
  • access_to

    Specifies the value of an access rule. Currently, only the VPC ID is supported.

    +

    String value expected.

    +

    Value range: The value cannot be empty. The length of the character string must be verified through the regular UUID check.

    +
    NOTE:

    Only one VPC ID can be added to a sharing file system. If two or more VPC IDs are added, the sharing file system cannot be mounted.

    +
    +
+
+
+
+

HOT Syntax

heat_template_version: 2014-10-16
+...
+resources:
+  ...
+  the_resource:
+    type: OSE::SFS::ShareAccessRule
+    properties:
+      share_id: String
+      allow_access:
+        access_level: String
+        access_type: String
+        access_to: String
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0108_0.html b/docs/rts/umn/rts_02_0108_0.html new file mode 100644 index 000000000..782c2ffbe --- /dev/null +++ b/docs/rts/umn/rts_02_0108_0.html @@ -0,0 +1,26 @@ + + +

Creating an ECS

+

Application Scenarios

This template is used to create an ECS.

+
+

Example Template

heat_template_version: 2014-10-16
+description: Create a simple ECS instance.
+resources:
+  nova_serer:
+    type: OS::Nova::Server
+    properties:
+      name: ECS Name
+      image: Image Name or ID
+      flavor: Flavor Name
+      key_name: Key Pair
+      networks:
+        - network: Network Name or ID
+      availability_zone: AZ Name
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0109_0.html b/docs/rts/umn/rts_02_0109_0.html new file mode 100644 index 000000000..42109ac05 --- /dev/null +++ b/docs/rts/umn/rts_02_0109_0.html @@ -0,0 +1,39 @@ + + +

Creating an ECS and Binding an EIP to the ECS

+

Application Scenarios

This template is used to create an ECS and bind an EIP to this ECS.

+
+

Example Template

heat_template_version: 2014-10-16
+description: Create an EIP and bind it to ECS.
+resources:
+  server:
+    type: OS::Nova::Server
+    properties:
+      image: Image Name or ID
+      flavor: Flavor Name
+      key_name: Key Pair
+      networks:
+        - port: { get_resource: server_port }
+      availability_zone: AZ Name
+  server_port:
+    type: OS::Neutron::Port
+    properties:
+      network: Network Name or ID
+  floating_ip:  
+    type: OS::Neutron::FloatingIP
+    depends_on: server
+    properties:
+      floating_network: admin_external_net
+      port_id: { get_resource: server_port }
+outputs:
+  floating_ip:
+    description: The floating ip address of the server.
+    value: { get_attr: [floating_ip, floating_ip_address] }
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0110.html b/docs/rts/umn/rts_02_0110.html new file mode 100644 index 000000000..568659916 --- /dev/null +++ b/docs/rts/umn/rts_02_0110.html @@ -0,0 +1,41 @@ + + +

Creating an ECS with EVS Disks Mounted

+

Application Scenarios

This template is used to create an ECS and EVS disk and attach the EVS disk to the ECS.

+
+

Example Template

heat_template_version: 2014-10-16
+description: Create an ECS and EVS disk and attach the EVS disk to the ECS.
+resources:
+  neutron_port:
+    type: OS::Neutron::Port
+    properties:
+      network: Network Name or ID
+  data_volume:
+    type: OS::Cinder::Volume
+    properties:
+      name: EVS Name
+      size: Size of Volume
+      availability_zone: AZ Name
+  nova_server:
+    type: OS::Nova::Server
+    properties:
+      name: ECS Name
+      image: Image Name or ID
+      flavor: Flavor Name
+      key_name: Key Pair
+      networks:
+        - port: { get_resource: neutron_port }
+      availability_zone: AZ Name
+  volume_attach:
+    type: OS::Cinder::VolumeAttachment
+    properties:
+      volume_id: { get_resource: data_volume }
+      instance_uuid: { get_resource: nova_server }
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0111.html b/docs/rts/umn/rts_02_0111.html new file mode 100644 index 000000000..769c365ae --- /dev/null +++ b/docs/rts/umn/rts_02_0111.html @@ -0,0 +1,30 @@ + + +

Creating an ECS Group

+

Application Scenarios

This template is used to create a group of ECSs.

+
+

Example Template

heat_template_version: 2014-10-16
+description: Create a group of ECSs.
+resources:
+  instance_group:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: Number of resource
+      resource_def:
+        type: OS::Nova::Server
+        properties:
+          name: aaaa-%index%
+          image: Image Name or ID
+          flavor: Flavor Name
+          key_name: Key Pair
+          networks:
+            - network: Network Name or ID
+          availability_zone: AZ Name
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0112.html b/docs/rts/umn/rts_02_0112.html new file mode 100644 index 000000000..1ebbf4785 --- /dev/null +++ b/docs/rts/umn/rts_02_0112.html @@ -0,0 +1,54 @@ + + +

Creating an ECS in a Specified Security Group

+

Application Scenarios

This template is used to create a security group and create an ECS in the security group.

+
+

Example Template

heat_template_version: 2014-10-16
+description: This example creates an ECS security group for the instance to give you SSH access.
+resources:
+  server:
+    type: OS::Nova::Server
+    properties:
+      name: ECS Name
+      image: Image Name or ID
+      flavor: Flavor Name
+      key_name: Key Pair
+      networks:
+        - port: { get_resource: server_port }
+      availability_zone: AZ Name
+      security_groups:
+        - { get_resource: neutron_security_group }
+  server_port:
+    type: OS::Neutron::Port
+    properties:
+      network: Network Name or ID
+  floating_ip:
+    type: OS::Neutron::FloatingIP
+    depends_on: server
+    properties:
+      floating_network: admin_external_net
+      port_id: { get_resource: server_port }
+  neutron_security_group:
+    type: OS::Neutron::SecurityGroup
+    properties:
+      name: neutron_security_group
+      rules:
+        - protocol: tcp
+          port_range_min: 22
+          port_range_max: 22
+          remote_ip_prefix: 0.0.0.0/0
+outputs:
+  ECSName:
+    description: The Name of the ECS instance newly created.
+    value: { get_attr: [server, name] }
+  floating_ip:
+    description: The floating ip address of the server.
+    value: { get_attr: [floating_ip, floating_ip_address] }
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0113.html b/docs/rts/umn/rts_02_0113.html new file mode 100644 index 000000000..3b1fbb324 --- /dev/null +++ b/docs/rts/umn/rts_02_0113.html @@ -0,0 +1,65 @@ + + +

Creating an AS Group

+

Application Scenarios

This template is used to perform the following operations:

+
  • Create an AS group that contains 1 to 2 ECSs.
  • Create a security group in which ECSs in the AS group are created.
+
+

Example Template

heat_template_version: 2014-10-16
+description: Create an AS instance.
+resources:
+  auto_scaling_config:
+    type: OSE::AS::ScalingConfig
+    properties:
+      scaling_configuration_name: Scaling Configuration Name
+      instance_config:
+        key_name: Key Pair
+        flavorRef: Flavor ID
+        imageRef: Image ID
+        disk:
+         - disk_type: SYS
+           size: 200
+           volume_type: SATA
+         - disk_type: DATA
+           size: 100
+           volume_type: SATA
+        personality:
+         - path: /etc/sample.txt
+           content: input_sample_content
+        public_ip:
+          eip:
+            ip_type: 5_bgp
+            bandwidth:
+              size: 5
+              share_type: PER
+              charging_mode: traffic
+        user_data: sampleTest
+        metadata: #NA
+          test: sampleTest
+  auto_scaling_group:
+    type: OSE::AS::ScalingGroup
+    properties:
+      scaling_group_name: Scaling Group Name
+      scaling_configuration_id: { get_resource: auto_scaling_config }
+      desire_instance_number: 1
+      min_instance_number: 1
+      max_instance_number: 2
+      cool_down_time: 900
+      available_zones:
+        - AZ Name
+      networks:
+        - id: Network ID
+      security_groups:
+        - id: Security Groups ID
+      vpc_id: VPC ID
+      health_periodic_audit_method: NOVA_AUDIT
+      health_periodic_audit_time: 15
+      instance_terminate_policy: OLD_INSTANCE
+      delete_publicip: true
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0114.html b/docs/rts/umn/rts_02_0114.html new file mode 100644 index 000000000..ad1c91152 --- /dev/null +++ b/docs/rts/umn/rts_02_0114.html @@ -0,0 +1,66 @@ + + +

Creating a Load Balancer

+

Application Scenarios

This template is used to create ECSs and a load balancer and add all ECSs to the load balancer.

+
+

Example Template

heat_template_version: 2014-10-16
+description: Create an ELB instance.
+resources:
+  elb_loadbalancer:
+    type: OSE::ELB::LoadBalancer
+    properties:
+      name: loadbalancer
+      vpc_id: VPC ID
+      type: External
+      bandwidth: 300
+      admin_state_up: true
+  elb_listener:
+    type: OSE::ELB::Listener
+    properties:
+      name: elb_listener
+      loadbalancer_id: { get_resource: elb_loadbalancer }
+      protocol: HTTP
+      port: 8080
+      backend_protocol: HTTP
+      backend_port: 8080
+      lb_algorithm: leastconn
+      sticky_session_type: insert
+  elb_healthcheck:
+    type: OSE::ELB::HealthCheck
+    properties:
+      listener_id: { get_resource: elb_listener }
+      healthcheck_protocol: HTTP
+      healthcheck_timeout: 2
+      unhealthy_threshold: 3
+      healthcheck_interval: 5
+      healthy_threshold: 3
+      healthcheck_connect_port: 8080
+      healthcheck_uri: /
+  elb_member:
+    type: OSE::ELB::Member
+    properties:
+      listener_id: { get_resource: elb_listener }
+      members:
+        - server_id: { get_resource: nova_server1 }
+          address: { get_attr: [nova_server1, first_address] }
+  server_port:
+    type: OS::Neutron::Port
+    properties:
+      network: Network Name or ID
+  nova_server1:
+    type: OS::Nova::Server
+    properties:
+      name: ECS Name
+      image: Image Name or ID
+      flavor: Flavor Name
+      networks:
+        - port: { get_resource: server_port }
+      availability_zone: AZ Name
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_02_0115.html b/docs/rts/umn/rts_02_0115.html new file mode 100644 index 000000000..038b12c18 --- /dev/null +++ b/docs/rts/umn/rts_02_0115.html @@ -0,0 +1,40 @@ + + +

Creating Network Resources

+

Application Scenarios

This template is used to create a VPC, a subnet, a route, and a route interface in the VPC.

+
+

Example Template

heat_template_version: 2014-10-16
+description: Create a VPC instance.
+resources:
+  vpc_network:
+    type: OS::Neutron::Net
+    properties:
+      name: network
+  vpc_subnet:
+    type: OS::Neutron::Subnet
+    depends_on: vpc_router
+    properties:
+      name: subnet
+      network_id: { get_resource: vpc_network }
+      cidr: CIDR
+      dns_nameservers:
+        - DNS server
+  vpc_router:
+    type: OS::Neutron::Router
+    properties:
+      name: router
+      external_gateway_info:
+        network: Fip_pool
+  vpc_router-interface:
+    type: OS::Neutron::RouterInterface
+    properties:
+      router_id: { get_resource: vpc_router }
+      subnet: { get_resource: vpc_subnet }
+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_faq_0002.html b/docs/rts/umn/rts_faq_0002.html new file mode 100644 index 000000000..ceb05e253 --- /dev/null +++ b/docs/rts/umn/rts_faq_0002.html @@ -0,0 +1,14 @@ + + +

How Are Router Resources in the Native OpenStack Mapped to VPC Resources on the Network Console?

+

Symptom

The router ID cannot be found on the network console when you create a VPC stack using a template.

+
+

Solution

RTS uses the localized OpenStack network model, including routers, networks, and subnets. The router, router ID, network, and network ID are respectively mapped to the VPC, VPC ID, subnet, and network ID of the VPC service on the network console.

+
+
+
+ +
+ diff --git a/docs/rts/umn/rts_faq_0003.html b/docs/rts/umn/rts_faq_0003.html new file mode 100644 index 000000000..ac42b0a41 --- /dev/null +++ b/docs/rts/umn/rts_faq_0003.html @@ -0,0 +1,11 @@ + + +

What's the Reason for the Failure to Delete the Stack?

+

If you cannot delete a stack, the reason is that the stack is in operation. If the stack is being created, updated, or otherwise manipulated, the stack cannot be deleted until the operation succeeds or fails.

+
+
+ +
+ diff --git a/docs/rts/umn/rts_faq_0004.html b/docs/rts/umn/rts_faq_0004.html new file mode 100644 index 000000000..26f05ce13 --- /dev/null +++ b/docs/rts/umn/rts_faq_0004.html @@ -0,0 +1,31 @@ + + +

How to Obtain the flavor Value of Resource OSE::RDS::Instance?

+

Method 1: By Using the Console

  1. Log in to the management console.

    Google Chrome is recommended.

    +
  2. Choose Database > Relational Database Service.
  3. In the upper right corner of the displayed page, click Create DB Instance.
  4. Press F12 and click Network.
  5. Refresh the page, find createInfo?regionCode=eu-de in the request list, and click Preview. Choose constant > flavors to obtain the flavor IDs and other information.
    Figure 1 Obtaining flavor information
    +
  6. Select the flavor ID based on the selected database type, backup policy, and required memory and CPU.

    Determine the database type and HA policy based on field code of the flavor. For example, if field code of the flavor is rds.mysql.m1.large.ha, you can create MySQL primary/standby DB instances.

    +
+
+

Method 2: By Calling the API

  1. Call the IAM API to obtain the token.

    curl -i -k -X POST https://auth.otc-tsi.de:31943/v3/auth/tokens -d '{"auth": {"identity": {"methods": ["password"],"password": {"user": {"name": "*****","domain": {"name": "****"},"password": "****"}}},"scope": {"project": {"name": "eu-de"}}}}' -H "Content-Type: application/json"

    +
  2. Save the token information.

    Save the token obtained in 1 and import variables.

    +

    The following is an example command:

    +

    export token=MIIF5gY*******cNxyvq4=

    +
  3. Invoke the RDS API for obtaining the database version.

    URI format: GET /rds/{versionId}/{project_id}/datastores/{datastore_name}/versions

    +

    The following is an example command:

    +

    curl -i -X GET https://rds.eu-de.otc.t-systems.com/rds/v1/3160d79af34b45e78fad478a046d7615/datastores/PostgreSQL/versions -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'User-Agent: python-heatclient' -k -H "X-Auth-Token: $token" -H 'X-Language: en-us'

    +

    In the URI, datastore_name indicates the type of the database to be created. Currently, the following database types are supported: MySQL, PostgreSQL, and SQLServer. These types are case sensitive.

    +
    +
  4. Invoke the RDS API for obtaining specifications of all DB instances.

    URI format: GET /rds/{versionId}/{project_id}/flavors

    +

    Example command: curl -i -k -X GET "https://rds.eu-de.otc.t-systems.com/rds/v1/3160d79af34b45e78fad478a046d7615/flavors?dbId=c66772dd-bd7a-11e7-a4c9-00ffa8375c2a&region=eu-de" -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'User-Agent: python-heatclient' -H "X-Auth-Token: $token" -H "X-Language: en-us"

    +

    dbId indicates the ID of the DB engine version ID obtained in 3.

    +
    +
  5. Select the flavor ID based on the selected backup policy and required memory and CPU.

    Determine the database type and HA policy based on field specCode of the flavor. For example, if field specCode of the flavor is rds.mysql.m1.large.ha, you can create MySQL primary/standby DB instances.

    +
+
+
+
+ +
+