├── .gitignore ├── LICENSE ├── README.md ├── en ├── docs │ ├── assets │ │ ├── attachments │ │ │ └── apply-hotfix.sh │ │ ├── css │ │ │ ├── font-wso2.css │ │ │ ├── font-wso2.min.css │ │ │ ├── lightbox.css │ │ │ ├── style.css │ │ │ └── theme.css │ │ ├── fonts │ │ │ ├── font-wso2.svg │ │ │ ├── font-wso2.ttf │ │ │ ├── font-wso2.woff │ │ │ └── font-wso2.woff2 │ │ ├── img │ │ │ └── updates │ │ │ │ ├── abri-flag.png │ │ │ │ ├── choose-new-product-tag.png │ │ │ │ ├── continous-update.png │ │ │ │ ├── docker-tag.png │ │ │ │ ├── exit-code.png │ │ │ │ ├── full-flag.png │ │ │ │ ├── jdk-version.png │ │ │ │ ├── remove-wget-dockerfile.png │ │ │ │ ├── update-model.png │ │ │ │ └── wumdecommission-plan.png │ │ ├── js │ │ │ ├── lightbox.js │ │ │ └── theme.js │ │ └── lib │ │ │ ├── backtotop │ │ │ ├── img │ │ │ │ └── cd-top-arrow.svg │ │ │ └── js │ │ │ │ ├── main.js │ │ │ │ └── util.js │ │ │ └── highlightjs │ │ │ ├── default.min.css │ │ │ └── highlight.min.js │ ├── index.md │ ├── page-not-found.md │ └── updates │ │ ├── advance-continuous-update.md │ │ ├── archive │ │ ├── finding-the-update-tool.md │ │ └── migrating-to-updates2.0.md │ │ ├── best-practices.md │ │ ├── continuous-update.md │ │ ├── customized-dockerfile.md │ │ ├── faq.md │ │ ├── hotfixes.md │ │ ├── how-to-use-docker-images-to-receive-updates.md │ │ ├── new-user.md │ │ ├── overview.md │ │ ├── reference.md │ │ ├── resolve-conflicts.md │ │ ├── set-up-update-tool.md │ │ ├── troubleshoot.md │ │ ├── update-commands.md │ │ ├── update-tool-setup-usage-guide.md │ │ ├── update-tool.md │ │ ├── updates-portal.md │ │ ├── using-wso2-docker-images.md │ │ ├── whats-new.md │ │ └── wum-decommission.md ├── mkdocs.yml ├── requirements.txt └── theme │ └── material │ ├── images │ ├── favicon.png │ └── logo.svg │ ├── main.html │ ├── partials │ ├── footer.html │ ├── header.html │ ├── language │ │ └── en.html │ ├── nav-item.html │ ├── nav.html │ ├── tabs-item.html │ ├── tabs.html │ └── toc.html │ └── templates │ ├── 2-column.html │ ├── home-page.html │ ├── no-nav.html │ └── single-column.html ├── issue_template.md └── pull_request_template.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | 25 | # IDE files 26 | .idea 27 | .vscode 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WSO2 Updates Documentation 2 | --- 3 | This is the documentation for the approaching release of WSO2 Updates 2.0.0. Please note that this documentation is work in progress. 4 | 5 | To see the **latest released documentation** for the WSO2 Updates, go to: [https://updates.docs.wso2.com/en/latest/](https://updates.docs.wso2.com/en/latest/) 6 | 7 | ## Run the project locally 8 | 9 | ### Step 1 - Install Python 10 | 11 | If you are using MacOS, you probably already have a version of Python installed on your machine. You can verify this by running the following command. 12 | 13 | ```shell 14 | $ python --version 15 | Python 2.7.2 16 | ``` 17 | 18 | If your version of Python is Python 2.x.x, you also need to install Python3. This is because the PDF plugin only supports Python3. Follow the instructions in [this guide](https://docs.python-guide.org/starting/install3/osx/) to install Python3 properly. 19 | 20 | After completing the above, you will have two versions of Python on your machine; a version of python2 and a version of python3. 21 | 22 | ### Step 2 - Install Pip 23 | > 24 | > **INFO** 25 | > 26 | > If pip is not already installed on your machine, download `get-pip.py` to install pip for the first time. Then run the following command to install it: 27 | > ```shell 28 | > $ python get-pip.py 29 | > ``` 30 | > 31 | 32 | Pip is most likely installed by default. However, you may need to upgrade pip to the latest version: 33 | 34 | ```shell 35 | $ pip install --upgrade pip 36 | ``` 37 | 38 | ### Step 3 - Install the pip packages 39 | 40 | 1. Navigate to the `/` folder. 41 | 42 | ```shell 43 | $ cd docs-updates/en 44 | ``` 45 | 46 | 2. Install the required pip packages. 47 | 48 | This will install MkDocs and the required theme, extensions, and plugins. 49 | 50 | - If you are using Python2, use the following command: 51 | 52 | ```shell 53 | $ pip install -r requirements.txt 54 | ``` 55 | 56 | - If you are using Python3, use the following command: 57 | 58 | ```shell 59 | $ pip3 install -r requirements.txt 60 | ``` 61 | 62 | ### Step 4 - Run MkDocs 63 | 64 | Follow the steps below to clone the Updates documentation GitHub repository and to run the site on your local server. 65 | 66 | 1. Fork the GitHub repository: `https://github.com/wso2/docs-updates.git` 67 | 2. Navigate to the place where you want to clone the repo. 68 | 69 | Git clone the forked repository. 70 | 71 | ```shell 72 | $ git clone https://github.com/[git-username]/docs-updates.git 73 | ``` 74 | 75 | 3. Navigate to the folder containing the repo that you cloned in step 4.1 on a terminal window. 76 | 77 | For example: 78 | 79 | ```shell 80 | $ cd docs-updates// 81 | ``` 82 | 83 | ```shell 84 | $ cd docs-updates/en/ 85 | ``` 86 | 87 | 4. Run the following command to start the server and view the site on your local server. 88 | 89 | ```shell 90 | $ mkdocs serve 91 | ``` 92 | 93 | > **NOTE:** 94 | > 95 | > If you are making changes and want to see them on the fly, run the following command to start the server and view the site on your local server. 96 | > 1. Navigate to the `mkdocs.yml` file. 97 | > 2. Change the following configuration to `false` as shown below. 98 | > ``` 99 | > #Breaks build if there's a warning 100 | > strict: false 101 | > ``` 102 | > 3. Run the following command to start the server and to make the server load only the changed items and display the changes faster. 103 | > 104 | > `mkdocs serve --dirtyreload` 105 | 106 | 5. Open the following URL on a new browser window to view the WSO2 Updates documentation site locally. 107 | 108 | [http://localhost:8000/getting-started/overview/](http://localhost:8000/getting-started/overview/) 109 | 110 | > **NOTE:** 111 | > 112 | > If you were running the `mkdocs serve --dirtyreload` command to run the MkDocs server, make sure to change the configuration in the `mkdocs.yml` file as follows before sending a pull request. 113 | > 114 | > `strict: true` 115 | 116 | ## License 117 | 118 | Licenses this source under the Apache License, Version 2.0 ([LICENSE](LICENSE)), You may not use this file except in compliance with the License. 119 | -------------------------------------------------------------------------------- /en/docs/assets/attachments/apply-hotfix.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # Copyright (c) 2023, WSO2 Inc. All Rights Reserved. 5 | # 6 | 7 | set -e 8 | 9 | PRODUCT_PACK_PATH=$1 10 | HOTFIX_DIRECTORY=$2 11 | USERNAME=$3 12 | PASSWORD=$4 13 | CURRENT_DIRECTORY=$(pwd) 14 | UPDATE_BINARY="" 15 | 16 | export WSO2_UPDATES_SKIP_CONFLICTS="true" 17 | 18 | function print_usage_and_exit { 19 | echo "" 20 | echo "usage:" 21 | echo "{$0} " 22 | echo "" 23 | echo "product_pack_path: Path to the product zip" 24 | echo "hotfix_directory: Path to a directory which contains hotfix zip files" 25 | echo " corresponding to the update-level of the product pack" 26 | echo "username: Username" 27 | echo "password: Password" 28 | exit 1 29 | } 30 | 31 | function validate_os { 32 | os_name="$(uname -s)" 33 | case "${os_name}" in 34 | Linux*) 35 | UPDATE_BINARY=wso2update_linux;; 36 | Darwin*) 37 | UPDATE_BINARY=wso2update_darwin;; 38 | *) 39 | echo "UNKNOWN:${os_name}, Supports Darwin and Linux only" 40 | exit 1;; 41 | esac 42 | } 43 | 44 | function validate_inputs { 45 | if [[ $# -eq 0 ]] ; then 46 | print_usage_and_exit 47 | fi 48 | 49 | if [[ ! -f "$PRODUCT_PACK_PATH" ]]; then 50 | echo "ERROR: Product pack '$PRODUCT_PACK_PATH' does not exists." 51 | print_usage_and_exit 52 | fi 53 | 54 | if [[ ! -d "$HOTFIX_DIRECTORY" ]]; then 55 | echo "ERROR: Hotfix directory path '$HOTFIX_DIRECTORY' does not exists." 56 | print_usage_and_exit 57 | fi 58 | 59 | if [[ -z "$USERNAME" ]]; then 60 | echo "ERROR: Username must be provided." 61 | print_usage_and_exit 62 | fi 63 | 64 | if [[ -z "$PASSWORD" ]]; then 65 | echo "ERROR: Password must be provided." 66 | print_usage_and_exit 67 | fi 68 | } 69 | 70 | function extract_product_pack { 71 | directory_name=$(date +%Y%m%d%H%M%S) 72 | mkdir $directory_name 73 | unzip -q $1 -d $directory_name 74 | product_pack_directory="$directory_name/$(ls $directory_name)" 75 | echo $product_pack_directory 76 | } 77 | 78 | function initialize_update_tool { 79 | cd $1/bin 80 | ./"$UPDATE_BINARY" current-state -u"$USERNAME" -p"$PASSWORD" 81 | cd $CURRENT_DIRECTORY 82 | } 83 | 84 | function validate_hotfixes_sequence { 85 | cd $1 86 | count=1 87 | for hotfix in `ls $2 | grep .zip | sort --version-sort -f`; 88 | do 89 | hot_fix_number=$(echo $hotfix | sed -n 's/.*-hf-\([0-9]*\).zip/\1/p') 90 | if [[ "$hot_fix_number" -eq "$count" ]] ; then 91 | ((count=count+1)) 92 | continue 93 | else : 94 | echo "Hotfixes are not in sequence. Please check whether all hotfixes are present in the given directory." 95 | exit 1 96 | fi 97 | done; 98 | cd $CURRENT_DIRECTORY 99 | } 100 | 101 | function install_hotfixes { 102 | cd $1/bin 103 | for hotfix in `ls $2 | grep .zip | sort --version-sort -f`; 104 | do 105 | ./"$UPDATE_BINARY" apply-hotfix $2/$hotfix -u"$USERNAME" -p"$PASSWORD" 106 | done; 107 | cd $CURRENT_DIRECTORY 108 | } 109 | 110 | function create_docker_image { 111 | cd $1/bin 112 | ./"$UPDATE_BINARY" create-docker -u"$USERNAME" -p"$PASSWORD" 113 | cd $CURRENT_DIRECTORY 114 | } 115 | 116 | validate_os 117 | validate_inputs $PRODUCT_PACK_PATH $HOTFIX_DIRECTORY 118 | extracted_directory="$(extract_product_pack $PRODUCT_PACK_PATH)" 119 | initialize_update_tool $extracted_directory 120 | validate_hotfixes_sequence $extracted_directory $HOTFIX_DIRECTORY 121 | install_hotfixes $extracted_directory $HOTFIX_DIRECTORY 122 | create_docker_image $extracted_directory 123 | -------------------------------------------------------------------------------- /en/docs/assets/css/font-wso2.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | ~ Copyright (c) WSO2 Inc. (http://wso2.com) All Rights Reserved. 3 | ~ 4 | ~ Licensed under the Apache License, Version 2.0 (the "License"); 5 | ~ you may not use this file except in compliance with the License. 6 | ~ You may obtain a copy of the License at 7 | ~ 8 | ~ http://www.apache.org/licenses/LICENSE-2.0 9 | ~ 10 | ~ Unless required by applicable law or agreed to in writing, software 11 | ~ distributed under the License is distributed on an "AS IS" BASIS, 12 | ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | ~ See the License for the specific language governing permissions and 14 | ~ limitations under the License. 15 | */.fw-fw,.fw-li{text-align:center}@font-face{font-family:font-wso2;src:local("font-wso2"),url(../fonts/font-wso2.eot?6563fa91278f239ef8c827d90a165223);src:local("font-wso2"),url(../fonts/font-wso2.eot?#iefix) format("embedded-opentype"),url(../fonts/font-wso2.woff2?6563fa91278f239ef8c827d90a165223) format("woff2"),url(../fonts/font-wso2.woff?6563fa91278f239ef8c827d90a165223) format("woff"),url(../fonts/font-wso2.ttf?6563fa91278f239ef8c827d90a165223) format("truetype"),url(../fonts/font-wso2.svg?6563fa91278f239ef8c827d90a165223#font-wso2) format("svg");font-weight:400;font-style:normal}.fw,[class*=" fw-"],[class^=fw-]{font:normal normal normal 14px/1 font-wso2;display:inline-block;font-weight:400;font-style:normal;font-size:inherit;font-variant:normal;speak:none;text-decoration:inherit;text-transform:none;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fw-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fw-2x{font-size:2em}.fw-3x{font-size:3em}.fw-4x{font-size:4em}.fw-5x{font-size:5em}.fw-fw{width:1.28571429em}.fw-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fw-ul>li{position:relative}.fw-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em}.fw-li.fw-lg{left:-1.85714286em}.fw-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fw-background{background:#888;border-radius:.3em;padding:.4em .5em .45em}.fw-pull-left{float:left}.fw-pull-right{float:right}.fw.fw-pull-left{margin-right:.3em}.fw.fw-pull-right{margin-left:.3em}.fw-spin{-webkit-animation:fw-spin 2s infinite linear;animation:fw-spin 2s infinite linear}@-webkit-keyframes fw-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fw-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fw-pulse{-webkit-animation:fw-pulse 2s ease-out infinite;animation:fw-pulse 2s ease-out infinite}@-webkit-keyframes fw-pulse{0%,100%,30%{opacity:.3}40%{opacity:1}}@keyframes fw-pulse{0%,100%,30%{opacity:.3}40%{opacity:1}}.fw-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fw-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fw-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fw-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fw-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fw-flip-horizontal,:root .fw-flip-vertical,:root .fw-rotate-180,:root .fw-rotate-270,:root .fw-rotate-90{filter:none}.fw-helper,.fw-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:1.85em;vertical-align:middle}.fw-helper:after,.fw-helper:before,.fw-stack-1x,.fw-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fw-helper:before,.fw-stack-1x{line-height:inherit}.fw-helper:after,.fw-stack-2x{font-size:1.9em}.fw-helper-slash:before{font-size:1.4em}.fw-helper-circle:before,.fw-helper-square:before{z-index:1}.fw-helper-circle-outline:after{content:"\e61f"}.fw-helper-circle:after{content:"\e61a"}.fw-helper-square-outline:after{content:"\e6b2"}.fw-helper-square:after{content:"\e6b1"}.fw-helper-slash:after{content:"\e6e1"}.fw-stack>.fw-stack{position:absolute;font-size:.5em}.fw-stack>.fw-stack.fw-move-top{top:-.2em}.fw-stack>.fw-stack.fw-move-bottom{bottom:-.2em}.fw-stack>.fw.stack.fw-move-left{left:-.5em}.fw-stack>.fw-stack.fw-move-right{right:-.5em}.fw-helper-inverse:after,.fw-inverse:before,.fw-number{color:#fff}.fw-helper-shadow:after,.fw-shadow:before{text-shadow:#fff 1px 1px 0}.fw-helper-stroke:after,.fw-stroke:before{text-shadow:-2px -2px 0 #fff,2px -2px 0 #fff,-2px 2px 0 #fff,2px 2px 0 #fff}.fw-number{line-height:2em;font-family:Arial,Helvetica,sans-serif}.fw-abort:before{content:"\e72a"}.fw-action-invoke:before{content:"\e6fe"}.fw-action:before{content:"\e709"}.fw-activate:before{content:"\e6cf"}.fw-add:before{content:"\e615"}.fw-airplay:before{content:"\e600"}.fw-alarm:before{content:"\e6c2"}.fw-alert:before{content:"\e6be"}.fw-analytics-extensions:before{content:"\e6e2"}.fw-android-logcat:before{content:"\e72c"}.fw-android-sense:before{content:"\e72d"}.fw-android:before{content:"\e606"}.fw-annotation:before{content:"\e6e6"}.fw-api:before{content:"\e601"}.fw-apn:before{content:"\e602"}.fw-apple:before{content:"\e604"}.fw-application:before{content:"\e608"}.fw-arduino:before{content:"\e6ab"}.fw-assign:before{content:"\e6ff"}.fw-ballerina-service:before{content:"\e729"}.fw-ballerina:before{content:"\e728"}.fw-bar-chart:before{content:"\e690"}.fw-battery:before{content:"\e60a"}.fw-blank-document:before{content:"\e60c"}.fw-block:before{content:"\e695"}.fw-bookmark:before{content:"\e60d"}.fw-bpel:before{content:"\e60e"}.fw-bpmn:before{content:"\e60f"}.fw-break:before{content:"\e721"}.fw-bug:before{content:"\e611"}.fw-build:before{content:"\e6c1"}.fw-calendar:before{content:"\e612"}.fw-camera:before{content:"\e613"}.fw-cancel:before{content:"\e618"}.fw-carbon:before{content:"\e6c5"}.fw-chat:before{content:"\e65b"}.fw-check:before{content:"\e617"}.fw-checklist:before{content:"\e619"}.fw-circle-outline:before{content:"\e61f"}.fw-circle:before{content:"\e61a"}.fw-clear:before{content:"\e61b"}.fw-clock:before{content:"\e61d"}.fw-cloud:before{content:"\e61e"}.fw-code-view:before{content:"\e70e"}.fw-code:before{content:"\e6f1"}.fw-comment:before{content:"\e710"}.fw-compare:before{content:"\e610"}.fw-computer:before{content:"\e653"}.fw-configarations:before{content:"\e609"}.fw-connector:before{content:"\e700"}.fw-console:before{content:"\e71d"}.fw-constant:before{content:"\e701"}.fw-contact:before{content:"\e620"}.fw-contract:before{content:"\e614"}.fw-copy:before{content:"\e621"}.fw-cut:before{content:"\e6f2"}.fw-dashboard:before{content:"\e622"}.fw-database:before{content:"\e623"}.fw-delete:before{content:"\e624"}.fw-depend:before{content:"\e6c6"}.fw-deploy:before{content:"\e625"}.fw-deprecate:before{content:"\e6cb"}.fw-design-view:before{content:"\e70f"}.fw-devices:before{content:"\e704"}.fw-dgm-action-invoke:before{content:"\e712"}.fw-dgm-action:before{content:"\e711"}.fw-dgm-connector:before{content:"\e6f4"}.fw-dgm-constant-definition:before{content:"\e6f5"}.fw-dgm-fork:before{content:"\e6e7"}.fw-dgm-header:before{content:"\e6e8"}.fw-dgm-if-else:before{content:"\e6e9"}.fw-dgm-import:before{content:"\e717"}.fw-dgm-lifeline:before{content:"\e6ea"}.fw-dgm-logger:before{content:"\e6eb"}.fw-dgm-resource:before{content:"\e6f6"}.fw-dgm-service:before{content:"\e6f7"}.fw-dgm-try-catch:before{content:"\e6ec"}.fw-dgm-type-convertor:before{content:"\e6f8"}.fw-dgm-type:before{content:"\e6f9"}.fw-dgm-while:before{content:"\e707"}.fw-dial-up:before{content:"\e627"}.fw-disabled:before{content:"\e6d1"}.fw-display:before{content:"\e626"}.fw-docker:before{content:"\e70c"}.fw-document:before{content:"\e628"}.fw-down-arrow:before{content:"\e689"}.fw-down:before{content:"\e685"}.fw-download:before{content:"\e65f"}.fw-dss:before{content:"\e62a"}.fw-ebook:before{content:"\e62b"}.fw-edit:before{content:"\e62c"}.fw-ellipsis:before{content:"\e629"}.fw-endpoint:before{content:"\e62d"}.fw-enterprise:before{content:"\e6b6"}.fw-error:before{content:"\e630"}.fw-esb-connector:before{content:"\e6e3"}.fw-expand:before{content:"\e61c"}.fw-export:before{content:"\e631"}.fw-extensions:before{content:"\e6e4"}.fw-facebook:before{content:"\e6d3"}.fw-factory-reset:before{content:"\e632"}.fw-fan:before{content:"\e678"}.fw-faq:before{content:"\e62f"}.fw-file-browse:before{content:"\e633"}.fw-filter:before{content:"\e634"}.fw-folder-open:before{content:"\e70b"}.fw-folder:before{content:"\e62e"}.fw-fork-join:before{content:"\e720"}.fw-format:before{content:"\e6fa"}.fw-forum:before{content:"\e636"}.fw-function-invoke:before{content:"\e713"}.fw-function:before{content:"\e6fb"}.fw-gadget:before{content:"\e637"}.fw-geo-fence-inbound:before{content:"\e72e"}.fw-geo-fence-outbound:before{content:"\e72f"}.fw-github:before{content:"\e6d4"}.fw-globe:before{content:"\e697"}.fw-google-docs:before{content:"\e6d6"}.fw-google-drive:before{content:"\e6da"}.fw-google-plus:before{content:"\e6d9"}.fw-google-sheets:before{content:"\e6d7"}.fw-google-slides:before{content:"\e6d8"}.fw-google:before{content:"\e6d5"}.fw-grid:before{content:"\e638"}.fw-grip:before{content:"\e6b7"}.fw-group:before{content:"\e6af"}.fw-hardware:before{content:"\e6a9"}.fw-hdd:before{content:"\e639"}.fw-heart:before{content:"\e6c3"}.fw-hide:before{content:"\e6d2"}.fw-home:before{content:"\e63a"}.fw-hour-glass:before{content:"\e63b"}.fw-html:before{content:"\e69d"}.fw-http:before{content:"\e705"}.fw-image:before{content:"\e70a"}.fw-import:before{content:"\e63c"}.fw-incoming-call:before{content:"\e63d"}.fw-info:before{content:"\e63e"}.fw-instagram:before{content:"\e6db"}.fw-invitation:before{content:"\e63f"}.fw-invoke:before{content:"\e6ed"}.fw-is-connector:before{content:"\e6e5"}.fw-iterate:before{content:"\e71f"}.fw-jaggery:before{content:"\e640"}.fw-java-spring:before{content:"\e644"}.fw-java:before{content:"\e641"}.fw-javaee:before{content:"\e642"}.fw-javascript:before{content:"\e643"}.fw-jaxrs:before{content:"\e645"}.fw-jaxws:before{content:"\e6c7"}.fw-jquery:before{content:"\e646"}.fw-key:before{content:"\e647"}.fw-laptop:before{content:"\e648"}.fw-layout:before{content:"\e6bf"}.fw-ldap:before{content:"\e649"}.fw-left-arrow:before{content:"\e68a"}.fw-left:before{content:"\e686"}.fw-lifecycle:before{content:"\e64a"}.fw-light:before{content:"\e680"}.fw-linkedin:before{content:"\e6dc"}.fw-list-sort:before{content:"\e64d"}.fw-list:before{content:"\e64c"}.fw-loader:before{content:"\e6b4"}.fw-loader2:before{content:"\e6ba"}.fw-loader3:before{content:"\e6bb"}.fw-loader4:before{content:"\e6bc"}.fw-loader5:before{content:"\e6bd"}.fw-lock:before{content:"\e64e"}.fw-logical:before{content:"\e702"}.fw-mail:before{content:"\e64f"}.fw-main-function:before{content:"\e706"}.fw-map-location:before{content:"\e650"}.fw-menu:before{content:"\e651"}.fw-message:before{content:"\e635"}.fw-micro-services:before{content:"\e6ce"}.fw-dash:before,.fw-hyphen:before,.fw-minus:before{content:"\e616"}.fw-mobile:before{content:"\e652"}.fw-ms-document:before{content:"\e654"}.fw-mute:before{content:"\e655"}.fw-nodejs:before{content:"\e656"}.fw-notification:before{content:"\e60b"}.fw-organization:before{content:"\e6ac"}.fw-own:before{content:"\e6c8"}.fw-package:before{content:"\e6fd"}.fw-pages:before{content:"\e6c0"}.fw-paste:before{content:"\e658"}.fw-pdf:before{content:"\e659"}.fw-pending:before{content:"\e727"}.fw-php:before{content:"\e6c9"}.fw-pie-chart:before{content:"\e65a"}.fw-pinterest:before{content:"\e6dd"}.fw-policy:before{content:"\e67d"}.fw-polygon:before{content:"\e70d"}.fw-prototype:before{content:"\e6cc"}.fw-proxy:before{content:"\e699"}.fw-public:before{content:"\e6ad"}.fw-publish:before{content:"\e65c"}.fw-question:before{content:"\e6b0"}.fw-raspberry:before{content:"\e6aa"}.fw-redo:before{content:"\e65d"}.fw-refresh:before{content:"\e692"}.fw-register:before{content:"\e65e"}.fw-rename:before{content:"\e6fc"}.fw-reply:before{content:"\e714"}.fw-resource:before{content:"\e660"}.fw-rest-api:before{content:"\e661"}.fw-rest-service:before{content:"\e662"}.fw-resume:before{content:"\e71e"}.fw-retire:before{content:"\e6cd"}.fw-return:before{content:"\e715"}.fw-retweet:before{content:"\e6b9"}.fw-right-arrow:before{content:"\e68b"}.fw-right:before{content:"\e687"}.fw-ringing:before{content:"\e694"}.fw-rules:before{content:"\e664"}.fw-run:before{content:"\e708"}.fw-save:before{content:"\e665"}.fw-scep:before{content:"\e666"}.fw-schema:before{content:"\e667"}.fw-search:before{content:"\e668"}.fw-security-policy:before{content:"\e67e"}.fw-security:before{content:"\e669"}.fw-paper-rocket:before,.fw-send:before{content:"\e66a"}.fw-sequence:before{content:"\e66b"}.fw-server:before{content:"\e66c"}.fw-service-provider:before{content:"\e66e"}.fw-cogwheels:before,.fw-gears:before,.fw-service:before,.fw-sprockets:before{content:"\e66d"}.fw-cogwheel:before,.fw-gear:before,.fw-settings:before,.fw-sprocket:before{content:"\e66f"}.fw-share:before{content:"\e670"}.fw-shell:before{content:"\e730"}.fw-shortcut:before{content:"\e725"}.fw-sign-in:before{content:"\e671"}.fw-sign-out:before{content:"\e6b8"}.fw-skype:before{content:"\e6de"}.fw-slash:before{content:"\e6e1"}.fw-soap:before{content:"\e672"}.fw-sort-down:before{content:"\e663"}.fw-sort-up:before{content:"\e64b"}.fw-sort:before{content:"\e673"}.fw-speed-alert:before{content:"\e731"}.fw-square-outline:before{content:"\e6b2"}.fw-square:before{content:"\e6b1"}.fw-star:before{content:"\e674"}.fw-start:before{content:"\e718"}.fw-statistics:before{content:"\e675"}.fw-stepin:before{content:"\e719"}.fw-stepout:before{content:"\e71a"}.fw-stepover:before{content:"\e71b"}.fw-stop:before{content:"\e71c"}.fw-cart:before,.fw-store:before{content:"\e676"}.fw-struct:before{content:"\e716"}.fw-subscribe:before{content:"\e677"}.fw-success:before{content:"\e657"}.fw-swagger:before{content:"\e679"}.fw-sync:before{content:"\e6b3"}.fw-table:before{content:"\e6c4"}.fw-tag:before{content:"\e67a"}.fw-task:before{content:"\e67b"}.fw-text:before{content:"\e67c"}.fw-theme:before{content:"\e726"}.fw-throttling-policy:before{content:"\e67f"}.fw-throw:before{content:"\e722"}.fw-tiles:before{content:"\e681"}.fw-transaction:before{content:"\e72b"}.fw-try-catch:before{content:"\e703"}.fw-twitter:before{content:"\e6df"}.fw-type-converter:before{content:"\e6f3"}.fw-uncheck:before{content:"\e682"}.fw-undo:before{content:"\e683"}.fw-ungroup:before{content:"\e6b5"}.fw-unmute:before{content:"\e6ae"}.fw-up-arrow:before{content:"\e688"}.fw-up:before{content:"\e684"}.fw-upload:before{content:"\e68c"}.fw-uri:before{content:"\e68d"}.fw-usb-drive:before{content:"\e68e"}.fw-use:before{content:"\e6ca"}.fw-user:before{content:"\e68f"}.fw-variable:before{content:"\e6ee"}.fw-view:before{content:"\e691"}.fw-vpn:before{content:"\e603"}.fw-wadl:before{content:"\e6a1"}.fw-war:before{content:"\e69e"}.fw-warning:before{content:"\e693"}.fw-web-app:before{content:"\e696"}.fw-web-clip:before{content:"\e698"}.fw-web-service:before{content:"\e69a"}.fw-website:before{content:"\e69b"}.fw-wifi:before{content:"\e607"}.fw-windows:before{content:"\e605"}.fw-worker-invoke:before{content:"\e723"}.fw-worker-reply:before{content:"\e724"}.fw-worker:before{content:"\e6ef"}.fw-wsdl:before{content:"\e6a0"}.fw-wso2-logo:before{content:"\e6a7"}.fw-wso2:before{content:"\e6a8"}.fw-xacml:before{content:"\e69f"}.fw-xml:before{content:"\e69c"}.fw-xq:before{content:"\e6a2"}.fw-xsd:before{content:"\e6a3"}.fw-xslt:before{content:"\e6a4"}.fw-youtube:before{content:"\e6e0"}.fw-zoom-in:before{content:"\e6a5"}.fw-zoom-out:before{content:"\e6a6"} -------------------------------------------------------------------------------- /en/docs/assets/css/lightbox.css: -------------------------------------------------------------------------------- 1 | /* RESET RULES 2 | –––––––––––––––––––––––––––––––––––––––––––––––––– */ 3 | :root { 4 | --lightgray: #efefef; 5 | --blue: steelblue; 6 | --white: #fff; 7 | --black: rgba(0, 0, 0, 0.8); 8 | --bounceEasing: cubic-bezier(0.51, 0.92, 0.24, 1.15); 9 | } 10 | 11 | button { 12 | cursor: pointer; 13 | background: transparent; 14 | border: none; 15 | outline: none; 16 | font-size: inherit; 17 | } 18 | 19 | 20 | /* MODAL 21 | –––––––––––––––––––––––––––––––––––––––––––––––––– */ 22 | .modal { 23 | position: fixed; 24 | top: 0; 25 | left: 0; 26 | right: 0; 27 | bottom: 0; 28 | display: flex; 29 | align-items: center; 30 | justify-content: center; 31 | padding: 1rem; 32 | background: var(--black); 33 | cursor: pointer; 34 | visibility: hidden; 35 | opacity: 0; 36 | transition: all 0.35s ease-in; 37 | } 38 | 39 | .modal.is-visible { 40 | visibility: visible; 41 | opacity: 1; 42 | z-index: 9; 43 | } 44 | 45 | .modal-dialog { 46 | position: relative; 47 | border-radius: 5px; 48 | background: var(--white); 49 | overflow: auto; 50 | cursor: default; 51 | } 52 | 53 | .modal-dialog > * { 54 | padding: 1rem; 55 | } 56 | 57 | .modal-header, 58 | .modal-footer { 59 | background: var(--lightgray); 60 | } 61 | 62 | .modal-header { 63 | display: flex; 64 | align-items: center; 65 | justify-content: space-between; 66 | } 67 | 68 | .modal-header .close-modal { 69 | font-size: 1.5rem; 70 | } 71 | 72 | .modal p + p { 73 | margin-top: 1rem; 74 | } 75 | 76 | a.open-modal { 77 | cursor: pointer; 78 | } 79 | -------------------------------------------------------------------------------- /en/docs/assets/css/style.css: -------------------------------------------------------------------------------- 1 | style> 2 | /* latin */ 3 | @font-face { 4 | font-family: 'Roboto'; 5 | font-style: normal; 6 | font-weight: 100; 7 | font-display: swap; 8 | src: url(https://wso2.cachefly.net/wso2/sites/all/fonts/Roboto/roboto-100.woff2) format('woff2'); 9 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 10 | } 11 | 12 | /* latin */ 13 | @font-face { 14 | font-family: 'Roboto'; 15 | font-style: normal; 16 | font-weight: 300; 17 | font-display: swap; 18 | src: url(https://wso2.cachefly.net/wso2/sites/all/fonts/Roboto/roboto-300.woff2) format('woff2'); 19 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 20 | } 21 | 22 | /* latin */ 23 | @font-face { 24 | font-family: 'Roboto'; 25 | font-style: normal; 26 | font-weight: 400; 27 | font-display: swap; 28 | src: url(https://wso2.cachefly.net/wso2/sites/all/fonts/Roboto/roboto-400.woff2) format('woff2'); 29 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+ 30 | } 31 | 32 | @font-face { 33 | font-family: 'Roboto'; 34 | font-style: normal; 35 | font-weight: 500; 36 | font-display: swap; 37 | src: url(https://wso2.cachefly.net/wso2/sites/all/fonts/Roboto/roboto-500.woff2) format('woff2'); 38 | unicode-range: U+0100-02AF, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 39 | } 40 | 41 | @font-face { 42 | font-family: 'Roboto'; 43 | font-style: normal; 44 | font-weight: 700; 45 | font-display: swap; 46 | src: url(https://wso2.cachefly.net/wso2/sites/all/fonts/Roboto/roboto-700.woff2) format('woff2'); 47 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 48 | } 49 | 50 | /* latin */ 51 | @font-face { 52 | font-family: 'Roboto'; 53 | font-style: normal; 54 | font-weight: 900; 55 | font-display: swap; 56 | src: url(https://wso2.cachefly.net/wso2/sites/all/fonts/Roboto/roboto-900.woff2) format('woff2'); 57 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 58 | } 59 | -------------------------------------------------------------------------------- /en/docs/assets/fonts/font-wso2.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/docs/assets/fonts/font-wso2.ttf -------------------------------------------------------------------------------- /en/docs/assets/fonts/font-wso2.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/docs/assets/fonts/font-wso2.woff -------------------------------------------------------------------------------- /en/docs/assets/fonts/font-wso2.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/docs/assets/fonts/font-wso2.woff2 -------------------------------------------------------------------------------- /en/docs/assets/img/updates/abri-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/docs/assets/img/updates/abri-flag.png -------------------------------------------------------------------------------- /en/docs/assets/img/updates/choose-new-product-tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/docs/assets/img/updates/choose-new-product-tag.png -------------------------------------------------------------------------------- /en/docs/assets/img/updates/continous-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/docs/assets/img/updates/continous-update.png -------------------------------------------------------------------------------- /en/docs/assets/img/updates/docker-tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/docs/assets/img/updates/docker-tag.png -------------------------------------------------------------------------------- /en/docs/assets/img/updates/exit-code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/docs/assets/img/updates/exit-code.png -------------------------------------------------------------------------------- /en/docs/assets/img/updates/full-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/docs/assets/img/updates/full-flag.png -------------------------------------------------------------------------------- /en/docs/assets/img/updates/jdk-version.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/docs/assets/img/updates/jdk-version.png -------------------------------------------------------------------------------- /en/docs/assets/img/updates/remove-wget-dockerfile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/docs/assets/img/updates/remove-wget-dockerfile.png -------------------------------------------------------------------------------- /en/docs/assets/img/updates/update-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/docs/assets/img/updates/update-model.png -------------------------------------------------------------------------------- /en/docs/assets/img/updates/wumdecommission-plan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/docs/assets/img/updates/wumdecommission-plan.png -------------------------------------------------------------------------------- /en/docs/assets/js/lightbox.js: -------------------------------------------------------------------------------- 1 | const openEls = document.querySelectorAll("[data-open]"); 2 | const closeEls = document.querySelectorAll("[data-close]"); 3 | const isVisible = "is-visible"; 4 | 5 | for (const el of openEls) { 6 | el.addEventListener("click", function() { 7 | const modalId = this.dataset.open; 8 | document.getElementById(modalId).classList.add(isVisible); 9 | }); 10 | } 11 | 12 | for (const el of closeEls) { 13 | el.addEventListener("click", function() { 14 | this.parentElement.parentElement.parentElement.classList.remove(isVisible); 15 | }); 16 | } 17 | 18 | document.addEventListener("click", e => { 19 | if (e.target == document.querySelector(".modal.is-visible")) { 20 | document.querySelector(".modal.is-visible").classList.remove(isVisible); 21 | } 22 | }); 23 | 24 | document.addEventListener("keyup", e => { 25 | // if we press the ESC 26 | if (e.key == "Escape" && document.querySelector(".modal.is-visible")) { 27 | document.querySelector(".modal.is-visible").classList.remove(isVisible); 28 | } 29 | }); 30 | -------------------------------------------------------------------------------- /en/docs/assets/js/theme.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Copyright (c) 2019, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. 3 | * 4 | * WSO2 Inc. licenses this file to you under the Apache License, 5 | * Version 2.0 (the "License"); you may not use this file except 6 | * in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, 12 | * software distributed under the License is distributed on an 13 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | * KIND, either express or implied. See the License for the 15 | * specific language governing permissions and limitations 16 | * under the License. 17 | */ 18 | 19 | /* 20 | * Handle opening external links in a new tab 21 | */ 22 | 23 | (function() { 24 | var links = document.links; 25 | for (var i = 0, linksLength = links.length; i < linksLength; i++) { 26 | if (links[i].hostname != window.location.hostname) { 27 | links[i].target = "_blank"; 28 | links[i].setAttribute("rel", "noopener noreferrer"); 29 | links[i].className += " externalLink"; 30 | } else { 31 | links[i].className += " localLink"; 32 | } 33 | } 34 | })(); 35 | 36 | /* 37 | * Initialize custom dropdown component 38 | */ 39 | var dropdowns = document.getElementsByClassName('md-tabs__dropdown-link'); 40 | var dropdownItems = document.getElementsByClassName('mb-tabs__dropdown-item'); 41 | 42 | window.onclick = function(evt) { 43 | var openedDropDowns = document.getElementsByClassName('open'); 44 | 45 | if(evt.target.className === 'md-tabs__link md-tabs__dropdown-link localLink') { 46 | return; 47 | } else { 48 | for (let i = 0; i < openedDropDowns.length; i++) { 49 | let elem = openedDropDowns[i]; 50 | let classes = elem.className.split(' '); 51 | let index = classes.indexOf('open'); 52 | 53 | classes.splice(index, 1); 54 | elem.className = classes.join(' '); 55 | } 56 | } 57 | } 58 | 59 | function indexInParent(node) { 60 | var children = node.parentNode.childNodes; 61 | var num = 0; 62 | for (var i=0; i < children.length; i++) { 63 | if (children[i]==node) return num; 64 | if (children[i].nodeType==1) num++; 65 | } 66 | return -1; 67 | } 68 | 69 | for (var i = 0; i < dropdowns.length; i++) { 70 | var el = dropdowns[i]; 71 | var openClass = 'open'; 72 | 73 | el.onclick = function () { 74 | if (this.parentElement.classList) { 75 | this.parentElement.classList.toggle(openClass); 76 | } else { 77 | var classes = this.parentElement.className.split(' '); 78 | var existingIndex = classes.indexOf(openClass); 79 | 80 | if (existingIndex >= 0) 81 | classes.splice(existingIndex, 1); 82 | else 83 | classes.push(openClass); 84 | 85 | this.parentElement.className = classes.join(' '); 86 | } 87 | }; 88 | }; 89 | 90 | /* 91 | * Reading versions 92 | */ 93 | var pageHeader = document.getElementById('page-header'); 94 | var docSetLang = pageHeader.getAttribute('data-lang'); 95 | 96 | (window.location.pathname.split('/')[1] !== docSetLang) ? 97 | docSetLang = '' : 98 | docSetLang = docSetLang + '/'; 99 | 100 | var docSetUrl = window.location.origin + '/' + docSetLang; 101 | var request = new XMLHttpRequest(); 102 | 103 | request.open('GET', docSetUrl + 104 | 'versions/assets/versions.json', true); 105 | 106 | request.onload = function() { 107 | if (request.status >= 200 && request.status < 400) { 108 | 109 | var data = JSON.parse(request.responseText); 110 | var dropdown = document.getElementById('version-select-dropdown'); 111 | var checkVersionsPage = document.getElementById('current-version-stable'); 112 | 113 | /* 114 | * Appending versions to the version selector dropdown 115 | */ 116 | if (dropdown){ 117 | data.list.sort().forEach(function(key, index){ 118 | var versionData = data.all[key]; 119 | 120 | if(versionData) { 121 | var liElem = document.createElement('li'); 122 | var docLinkType = data.all[key].doc.split(':')[0]; 123 | var target = '_self'; 124 | var url = data.all[key].doc; 125 | 126 | if ((docLinkType == 'https') || (docLinkType == 'http')) { 127 | target = '_blank' 128 | } 129 | else { 130 | url = docSetUrl + url; 131 | } 132 | 133 | liElem.className = 'md-tabs__item mb-tabs__dropdown'; 134 | liElem.innerHTML = '' + key + ''; 136 | 137 | dropdown.insertBefore(liElem, dropdown.firstChild); 138 | } 139 | }); 140 | 141 | document.getElementById('show-all-versions-link') 142 | .setAttribute('href', docSetUrl + 'versions'); 143 | } 144 | 145 | /* 146 | * Appending versions to the version tables in versions page 147 | */ 148 | if (checkVersionsPage){ 149 | var previousVersions = []; 150 | 151 | Object.keys(data.all).forEach(function(key, index){ 152 | if ((key !== data.current) && (key !== data['pre-release'])) { 153 | var docLinkType = data.all[key].doc.split(':')[0]; 154 | var target = '_self'; 155 | 156 | if ((docLinkType == 'https') || (docLinkType == 'http')) { 157 | target = '_blank' 158 | } 159 | 160 | previousVersions.push('' + 161 | '' + key + '' + 162 | '' + 163 | 'Documentation' + 165 | '' + 166 | '' + 167 | 'Release Notes' + 169 | '' + 170 | ''); 171 | } 172 | }); 173 | 174 | // Past releases update 175 | document.getElementById('previous-versions').innerHTML = 176 | previousVersions.join(' '); 177 | 178 | // Current released version update 179 | document.getElementById('current-version-number').innerHTML = 180 | data.current; 181 | document.getElementById('current-version-documentation-link') 182 | .setAttribute('href', docSetUrl + data.all[data.current].doc); 183 | document.getElementById('current-version-release-notes-link') 184 | .setAttribute('href', docSetUrl + data.all[data.current].notes); 185 | 186 | // Pre-release version update 187 | document.getElementById('pre-release-version-documentation-link') 188 | .setAttribute('href', docSetUrl + 'next/micro-integrator'); 189 | } 190 | 191 | } else { 192 | console.error("We reached our target server, but it returned an error"); 193 | } 194 | }; 195 | 196 | request.onerror = function() { 197 | console.error("There was a connection error of some sort"); 198 | }; 199 | 200 | request.send(); 201 | 202 | /* 203 | * Initialize distribution dropdown component 204 | */ 205 | 206 | var distributionDropdown = document.getElementById('distribution-select-dropdown'); 207 | 208 | const distributionURLList = [ 'micro-integrator','streaming-integrator' ]; 209 | const introductionURL = ['/overview/introduction','/overview/overview']; 210 | 211 | if (distributionDropdown){ 212 | let count = 0; 213 | distributionURLList.forEach(function(key){ 214 | var liElem = document.createElement('li'); 215 | var target = '_self'; 216 | var version = window.location.pathname.split('/')[2] + '/'; 217 | var url = docSetUrl + version + key + introductionURL[count]; 218 | 219 | liElem.className = 'md-tabs__item mb-tabs__dropdown'; 220 | liElem.innerHTML = '' + key.replace(/-/g, " ") + ''; 222 | count++; 223 | distributionDropdown.insertBefore(liElem, distributionDropdown.lastChild); 224 | }); 225 | } 226 | 227 | /* 228 | * Initialize highlightjs 229 | */ 230 | hljs.initHighlightingOnLoad(); 231 | 232 | /* 233 | * Handle TOC toggle 234 | */ 235 | var tocBtn = document.querySelector('.md-sidebar.md-sidebar--secondary #tocToggleBtn'); 236 | var tocClass = document.getElementsByTagName('main')[0]; 237 | 238 | if (tocBtn) { 239 | tocBtn.onclick = function () { 240 | event.preventDefault(); 241 | tocClass.classList.toggle('hide-toc'); 242 | if (tocBtn.innerHTML === "keyboard_arrow_right") { 243 | tocBtn.innerHTML = "keyboard_arrow_left"; 244 | } else { 245 | tocBtn.innerHTML = "keyboard_arrow_right"; 246 | } 247 | }; 248 | } 249 | 250 | /* 251 | * TOC position highlight on scroll 252 | */ 253 | var observeeList = document.querySelectorAll(".md-sidebar__inner > .md-nav--secondary .md-nav__link"); 254 | var listElems = document.querySelectorAll(".md-sidebar__inner > .md-nav--secondary > ul li"); 255 | var config = { attributes: true, childList: true, subtree: true }; 256 | 257 | var callback = function(mutationsList, observer) { 258 | for(var mutation of mutationsList) { 259 | if (mutation.type == 'attributes') { 260 | mutation.target.parentNode.setAttribute(mutation.attributeName, 261 | mutation.target.getAttribute(mutation.attributeName)); 262 | scrollerPosition(mutation); 263 | } 264 | } 265 | }; 266 | 267 | var observer = new MutationObserver(callback); 268 | 269 | if (listElems.length > 0) { 270 | listElems[0].classList.add('active'); 271 | } 272 | 273 | for (var i = 0; i < observeeList.length; i++) { 274 | var el = observeeList[i]; 275 | 276 | observer.observe(el, config); 277 | 278 | el.onclick = function(e) { 279 | listElems.forEach(function(elm) { 280 | if (elm.classList) { 281 | elm.classList.remove('active'); 282 | } 283 | }); 284 | 285 | e.target.parentNode.classList.add('active'); 286 | } 287 | }; 288 | 289 | function scrollerPosition(mutation) { 290 | var blurList = document.querySelectorAll(".md-sidebar__inner > .md-nav--secondary > ul li > .md-nav__link[data-md-state='blur']"); 291 | 292 | listElems.forEach(function(el) { 293 | if (el.classList) { 294 | el.classList.remove('active'); 295 | } 296 | }); 297 | 298 | if (blurList.length > 0) { 299 | if (mutation.target.getAttribute('data-md-state') === 'blur') { 300 | if (mutation.target.parentNode.querySelector('ul li')) { 301 | mutation.target.parentNode.querySelector('ul li').classList.add('active'); 302 | } else { 303 | setActive(mutation.target.parentNode); 304 | } 305 | } else { 306 | mutation.target.parentNode.classList.add('active'); 307 | } 308 | } else { 309 | if (listElems.length > 0) { 310 | listElems[0].classList.add('active'); 311 | } 312 | } 313 | }; 314 | 315 | function setActive(parentNode, i) { 316 | i = i || 0; 317 | if (i === 5) { 318 | return; 319 | } 320 | if (parentNode.nextElementSibling) { 321 | parentNode.nextElementSibling.classList.add('active'); 322 | return; 323 | } 324 | setActive(parentNode.parentNode.parentNode.parentNode, ++i); 325 | } 326 | 327 | 328 | /* 329 | * Handle edit icon on scroll 330 | */ 331 | var editIcon = document.getElementById('editIcon'); 332 | 333 | window.addEventListener('scroll', function() { 334 | var scrollPosition = window.scrollY || document.documentElement.scrollTop; 335 | if (scrollPosition >= 90) { 336 | editIcon.classList.add('active'); 337 | } else { 338 | editIcon.classList.remove('active'); 339 | } 340 | }); 341 | -------------------------------------------------------------------------------- /en/docs/assets/lib/backtotop/img/cd-top-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /en/docs/assets/lib/backtotop/js/main.js: -------------------------------------------------------------------------------- 1 | (function(){ 2 | // Back to Top - by CodyHouse.co 3 | var backTop = document.getElementsByClassName('js-cd-top')[0], 4 | offset = 300, // browser window scroll (in pixels) after which the "back to top" link is shown 5 | offsetOpacity = 1200, //browser window scroll (in pixels) after which the "back to top" link opacity is reduced 6 | scrollDuration = 700, 7 | scrolling = false; 8 | 9 | if( backTop ) { 10 | //update back to top visibility on scrolling 11 | window.addEventListener("scroll", function(event) { 12 | if( !scrolling ) { 13 | scrolling = true; 14 | (!window.requestAnimationFrame) ? setTimeout(checkBackToTop, 250) : 15 | window.requestAnimationFrame(checkBackToTop); 16 | } 17 | }); 18 | 19 | //smooth scroll to top 20 | backTop.addEventListener('click', function(event) { 21 | event.preventDefault(); 22 | (!window.requestAnimationFrame) ? window.scrollTo(0, 0) : Util.scrollTo(0, scrollDuration); 23 | }); 24 | } 25 | 26 | function checkBackToTop() { 27 | var windowTop = window.scrollY || document.documentElement.scrollTop; 28 | ( windowTop > offset ) ? Util.addClass(backTop, 'cd-top--is-visible') : 29 | Util.removeClass(backTop, 'cd-top--is-visible cd-top--fade-out'); 30 | ( windowTop > offsetOpacity ) && Util.addClass(backTop, 'cd-top--fade-out'); 31 | scrolling = false; 32 | } 33 | })(); 34 | -------------------------------------------------------------------------------- /en/docs/assets/lib/backtotop/js/util.js: -------------------------------------------------------------------------------- 1 | // Utility function 2 | function Util () {}; 3 | 4 | /* 5 | class manipulation functions 6 | */ 7 | Util.hasClass = function(el, className) { 8 | if (el.classList) return el.classList.contains(className); 9 | else return !!el.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)')); 10 | }; 11 | 12 | Util.addClass = function(el, className) { 13 | var classList = className.split(' '); 14 | if (el.classList) el.classList.add(classList[0]); 15 | else if (!Util.hasClass(el, classList[0])) el.className += " " + classList[0]; 16 | if (classList.length > 1) Util.addClass(el, classList.slice(1).join(' ')); 17 | }; 18 | 19 | Util.removeClass = function(el, className) { 20 | var classList = className.split(' '); 21 | if (el.classList) el.classList.remove(classList[0]); 22 | else if(Util.hasClass(el, classList[0])) { 23 | var reg = new RegExp('(\\s|^)' + classList[0] + '(\\s|$)'); 24 | el.className=el.className.replace(reg, ' '); 25 | } 26 | if (classList.length > 1) Util.removeClass(el, classList.slice(1).join(' ')); 27 | }; 28 | 29 | Util.toggleClass = function(el, className, bool) { 30 | if(bool) Util.addClass(el, className); 31 | else Util.removeClass(el, className); 32 | }; 33 | 34 | Util.setAttributes = function(el, attrs) { 35 | for(var key in attrs) { 36 | el.setAttribute(key, attrs[key]); 37 | } 38 | }; 39 | 40 | /* 41 | DOM manipulation 42 | */ 43 | Util.getChildrenByClassName = function(el, className) { 44 | var children = el.children, 45 | childrenByClass = []; 46 | for (var i = 0; i < el.children.length; i++) { 47 | if (Util.hasClass(el.children[i], className)) childrenByClass.push(el.children[i]); 48 | } 49 | return childrenByClass; 50 | }; 51 | 52 | /* 53 | Animate height of an element 54 | */ 55 | Util.setHeight = function(start, to, element, duration, cb) { 56 | var change = to - start, 57 | currentTime = null; 58 | 59 | var animateHeight = function(timestamp){ 60 | if (!currentTime) currentTime = timestamp; 61 | var progress = timestamp - currentTime; 62 | var val = parseInt((progress/duration)*change + start); 63 | element.setAttribute("style", "height:"+val+"px;"); 64 | if(progress < duration) { 65 | window.requestAnimationFrame(animateHeight); 66 | } else { 67 | cb(); 68 | } 69 | }; 70 | 71 | //set the height of the element before starting animation -> fix bug on Safari 72 | element.setAttribute("style", "height:"+start+"px;"); 73 | window.requestAnimationFrame(animateHeight); 74 | }; 75 | 76 | /* 77 | Smooth Scroll 78 | */ 79 | 80 | Util.scrollTo = function(final, duration, cb) { 81 | var start = window.scrollY || document.documentElement.scrollTop, 82 | currentTime = null; 83 | 84 | var animateScroll = function(timestamp){ 85 | if (!currentTime) currentTime = timestamp; 86 | var progress = timestamp - currentTime; 87 | if(progress > duration) progress = duration; 88 | var val = Math.easeInOutQuad(progress, start, final-start, duration); 89 | window.scrollTo(0, val); 90 | if(progress < duration) { 91 | window.requestAnimationFrame(animateScroll); 92 | } else { 93 | cb && cb(); 94 | } 95 | }; 96 | 97 | window.requestAnimationFrame(animateScroll); 98 | }; 99 | 100 | /* 101 | Focus utility classes 102 | */ 103 | 104 | //Move focus to an element 105 | Util.moveFocus = function (element) { 106 | if( !element ) element = document.getElementsByTagName("body")[0]; 107 | element.focus(); 108 | if (document.activeElement !== element) { 109 | element.setAttribute('tabindex','-1'); 110 | element.focus(); 111 | } 112 | }; 113 | 114 | /* 115 | Misc 116 | */ 117 | 118 | Util.getIndexInArray = function(array, el) { 119 | return Array.prototype.indexOf.call(array, el); 120 | }; 121 | 122 | Util.cssSupports = function(property, value) { 123 | if('CSS' in window) { 124 | return CSS.supports(property, value); 125 | } else { 126 | var jsProperty = property.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase();}); 127 | return jsProperty in document.body.style; 128 | } 129 | }; 130 | 131 | /* 132 | Polyfills 133 | */ 134 | //Closest() method 135 | if (!Element.prototype.matches) { 136 | Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; 137 | } 138 | 139 | if (!Element.prototype.closest) { 140 | Element.prototype.closest = function(s) { 141 | var el = this; 142 | if (!document.documentElement.contains(el)) return null; 143 | do { 144 | if (el.matches(s)) return el; 145 | el = el.parentElement || el.parentNode; 146 | } while (el !== null && el.nodeType === 1); 147 | return null; 148 | }; 149 | } 150 | 151 | //Custom Event() constructor 152 | if ( typeof window.CustomEvent !== "function" ) { 153 | 154 | function CustomEvent ( event, params ) { 155 | params = params || { bubbles: false, cancelable: false, detail: undefined }; 156 | var evt = document.createEvent( 'CustomEvent' ); 157 | evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail ); 158 | return evt; 159 | } 160 | 161 | CustomEvent.prototype = window.Event.prototype; 162 | 163 | window.CustomEvent = CustomEvent; 164 | } 165 | 166 | /* 167 | Animation curves 168 | */ 169 | Math.easeInOutQuad = function (t, b, c, d) { 170 | t /= d/2; 171 | if (t < 1) return c/2*t*t + b; 172 | t--; 173 | return -c/2 * (t*(t-2) - 1) + b; 174 | }; 175 | -------------------------------------------------------------------------------- /en/docs/assets/lib/highlightjs/default.min.css: -------------------------------------------------------------------------------- 1 | .hljs{display:block;overflow-x:auto;padding:.5em;background:#F0F0F0}.hljs,.hljs-subst{color:#444}.hljs-comment{color:#888888}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#BC6060}.hljs-literal{color:#78A960}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} -------------------------------------------------------------------------------- /en/docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | template: templates/home-page.html 3 | --- 4 | 5 | # WSO2 Updates Documentation 6 | We at WSO2 bring a greater, and an improved software solution when we release a product version. With valuable feedback from our users and by proactively searching for enhancements, we constantly improve our products, backport fixes to older affected versions, and push these improvements as updates through the WSO2 Update Process to our valued subscribed users. 7 | 8 | 11 | 12 |
13 | 48 | 77 | 111 | 150 | 188 | 234 | 249 | 284 | 326 | 361 | -------------------------------------------------------------------------------- /en/docs/page-not-found.md: -------------------------------------------------------------------------------- 1 | --- 2 | template: templates/no-nav.html 3 | --- 4 | 5 | 22 | 23 | ## Page not found. 24 | 25 | Sorry but the page you are looking for does not exist, has been removed, changed, or is temporarily unavailable. 26 | For inquiries, please reach us at [dev@wso2.org](mailto:dev@wso2.org). 27 | -------------------------------------------------------------------------------- /en/docs/updates/advance-continuous-update.md: -------------------------------------------------------------------------------- 1 | 2 | You can get continuous updates for your Dev, Staging, and Production Environments using the Configuration Management tools as its benefits are highlighted. Namely, changes and deployments are implemented faster, remove the possible room for human error, while making system management predictable and scalable. 3 | Below are the steps a user has to follow to seamlessly propagate updates to multiple environments. 4 | (To easily illustrate we are describing this process for a user using the latest version of WSO2 APIM and managing continuous updates using Ansible) 5 | 6 | ### Configuring the control node for propagation 7 | 1. Install the Ansible v.2.5 in your deployment environment. Refer [Ansible Installation Guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) 8 | 9 | 2. Thereafter, take a git clone [WSO2 APIM Ansible resources] (https://github.com/wso2/ansible-apim/) 10 | 11 | `` 12 | git clone https://github.com/wso2/ansible-apim.git 13 | `` 14 | 15 | 3. Check out the latest tag of the product version. 16 | 17 | `` 18 | cd ansible-apim 19 | git checkout 20 | `` 21 | 22 | !!! info 23 | The above command will be like ``git checkout v3.2.0.3`` for the latest WSO2 APIM 3.2.0 version. 24 | 25 | !!! Note 26 | The Ansible resources obtained from GitHub only contains resources for a single deployment environment (dev) by default. The parameters with respect to this environment are found in the `ansible-apim/dev` directory.
27 | Shown below is the folder structure of the `dev` folder. 28 | 29 | |-- apim-ansible(git) 30 | | |- dev 31 | | | |- host_vars 32 | | | |- group_vars 33 | | | |- Inventory 34 |
35 | 4. Create copies of the same directory and rename them reflecting the required deployment environments in your setup (e.g., Staging, Production). 36 | 37 | cp -r dev staging 38 | cp -r dev production 39 |
40 | 5. Next, configure the parameters in the `group_vars` and `host_vars` directories to values suitable to the deployment environment.
41 | 6. Later navigate to the `Inventory` folder and change the [ip_address] and [ssh_user] details for the preferred environment.
42 | 7. Last refer [copy files locally](https://github.com/wso2/ansible-apim#copying-packs-locally) and perform the required changes.
43 | 44 | ### Propagating updates to Multiple Environments 45 | 46 | 1. After all the above steps are completed, navigate to the ``script`` folder in the control node and run update.sh file. Define the product pack that must be updated with respect to the profile to be updated. 47 | 48 | cd ansible-apim/scripts 49 | ./update.sh -p apim 50 | 51 | 52 | 2. For more information on executing the update script, please refer to the documentation in `ansible-apim/scripts/update_README.md`. 53 | 3. When the above-mentioned update.sh file is executed, the script brings up the relevant product pack to its latest update level. 54 | 4. While the product pack is brought up-to-date, conflicts could be encountered if the user has made customizations to the pack and will be displayed in the console. 55 | 5. Therefore, conflicting changes should be resolved by perusing the [resolve conflicts page](../resolve-conflicts/) and thereafter re-running the update.sh file.
56 | 57 | [For example `./update.sh -p `]
58 | 59 | 60 | ./update.sh -p apim 61 | 62 | 63 | 6. After all the conflicts are resolved (Without producing warning or errors) in your current environment, updates are properly installed in the aforementioned environment.
64 | 7. Perform git commit and push the template changes to your repository everytime a successful update has been performed.
65 | 8. Disseminate the update to the other deployment environments (dev) using the following command. Now the user can perform their expected test on this environment as the updates are properly propagated to the development environment.
66 | 67 | 68 | ansible-playbook -i dev site.yml 69 | 70 | 9. Thereafter, distribution of updates to Staging and Production environments can be done using these commands: 71 | 72 | ansible-playbook -i staging site.yml 73 | ansible-playbook -i production site.yml 74 |
75 | 10. Updated product pack changes will be distributed to the respective deployment environment. 76 | -------------------------------------------------------------------------------- /en/docs/updates/archive/finding-the-update-tool.md: -------------------------------------------------------------------------------- 1 | How can I identify the update model I am currently using to update product packs
2 | 3 | 1. If you remember the tool you have used to update the product for the last time it is easy to identify which model you used.
4 | a. If you ran `wum update `, or a variant of `wum update` command in your last update process, you have used WUM method to update your respective product pack.

5 | b. If you executed `update_linux` command to update, or a variant of `update_linux`, you had used the In-place update tool to update the product. The In-place update tool is also an update method categorized under 6 | WUM.

7 | c. If you ran `wso2update_linux` or a variant of `wso2update_linux`, then you have used the new Update 2.0 update mechanism.
8 | 9 | 2. However, if you don’t recollect the exact tool your company used to update. Please refer to the following steps to determine the update tool utilized:
10 | a. Download the product pack from one of your deployments and assess the following:
11 | Please check `/updates/` directory:
12 | - If you find `config.json` and check the “update-level” in that file.
13 | - If the value is -1, you have run the U2 tool with a simple command like “wso2update_linux version”, but you haven’t updated the product using the U2 tool. 14 | - If the value is greater than 0, you are already using the recommended U2 update tool.
15 | 16 | b. Please check `/updates/` directory, if you find ‘config.yaml’ file you have used the In-place update tool. Which falls under WUM.
17 | c. If you are unable to find either `config.json` or `config.yaml` in `updates/` directory, then you have used the WUM method to update your product pack. 18 | -------------------------------------------------------------------------------- /en/docs/updates/archive/migrating-to-updates2.0.md: -------------------------------------------------------------------------------- 1 | ### How do I migrate from WUM and In-place to Updates 2.0? 2 | 3 | * Update the current product pack to the latest update level using WUM or in-place tool. This will make the new Update tool 4 | client available inside `/bin` directory. 5 | * Run the new Update Tool (e.g., ./wso2update_linux for linux users) refer [Update commands](../../updates/update-tool/) for other OS's. This will 6 | update the product pack to comply with WSO2 Updates 2.0, and the product pack will be in its latest update level. 7 | 8 | ### How can a user currently using *WUM Diff* migrate to WSO2 Updates 2.0? 9 | To get updates using the new WSO2 Updates model follow the steps below:
10 | 1. First, get the updated product pack from WUM (Run `wum update ` e.g., wum update wso2am-3.0.0).
11 | 2. Run [WUM diff](https://docs.wso2.com/display/updates100/WUM+Commands+Guide#WUMCommandsGuide-wumdiff) command as you have been doing before to create a zip file (which contains a diff between timestamps you have specified).
12 | 3. Perform [steps 4 to 9](https://docs.wso2.com/display/updates100/Getting+Continuous+Updates) stated in the document. 13 | 14 | !!! Info 15 | Now you have updated the product pack to the up to date state using the WUM model. After updating, you have the required tools to get updates from Update2.0 model in the future.
Read about the new [Update2.0 model](https://wso2.com/updates). 16 |
17 | 4. Run the new Update Tool (e.g., ./wso2update_linux for linux users) refer [Update commands](../../updates/update-tool/) for other OS's. This will update the product pack to comply with WSO2 Updates 2.0, and the product pack will be in its latest update level.
18 | 5. Now your current pack is congruent with WSO2 Updates 2.0.
19 | 6. Test the updated product distribution and deploy it in your production environment. 20 | 21 | ### How to migrate from WUM to the new Updates model if a Configuration Management Tool is been used ? 22 | If a Configuration Management Tool is been used, follow the steps below to convert to the new updates model.
23 | The respective product pack lies in the `files/packs` directory, to migrate to Updates 2.0 seamlessly you have to make both the product pack, and the `scripts/update.sh` file compatible with Updates 2.0. 24 |
25 | - To update the **product pack** - Go to` scripts` directory and run the `./update.sh` script.
26 | - To update **scripts/update.sh** file - Checkout the latest [v3.2.0.x](https://github.com/wso2/ansible-apim/tags) tags, in this example WSO2 APIM. 27 | 28 | `` 29 | git checkout v3.2.0.3 30 | `` 31 | 32 | Now your updates setup is compatible with the new updates model. Thus, in the future when the `update.sh` script is executed, updates will be delivered using the new updates model. 33 | 34 | ### How to differentiate docker images created with new updates from WSO2 Docker Repository? 35 | 1. Login to [WSO2 Docker Repository](https://docker.wso2.com/)
36 | 2. In the shown list, choose the product that is used in your deployment environment (To easily explain we will use WSO2 APIM as a product).
37 | 3. Considering the example mentioned above, Choose wso2am as the repository name.
38 | Docker images with updates:
39 | 1. If you are using docker images in WUM with **three digit version** like wso2am:3.2.0 then switch to e.g.,3.2.0.0 to get docker images created using the new WSO2 updates 2.0.
40 | 2. Using the WUM model if you have used docker images **with a timestamp** like wso2am:3.2.0.1612370755920.2 then switch to an image with specific update level for example wso2am:3.2.0.8 using the new WSO2 updates 2.0
41 | -------------------------------------------------------------------------------- /en/docs/updates/best-practices.md: -------------------------------------------------------------------------------- 1 | ### Best Practices to adhere when using WSO2 Updates 2 | Here are the guidelines and recommendations to receive best update experience with WSO2 Updates 2.0. 3 | 4 | 1. Update frequently 5 | 6 | Frequent update of products will ensure the product is bug free and always up to dated with new features, 7 | security enhancements and improvements. WSO2 recommends updating your systems weekly or bi-weekly. Before 8 | directly applying any updates to your production system, WSO2 always recommends applying any update to lower 9 | environments such as testing, development or staging environments which has a similar product distribution as in 10 | production environment. 11 | 12 | !!! Note 13 | Before you run the update tool, **remember to stop** the product pack from running. 14 | 15 |
16 | 2. Add custom configurations or modifications
17 | Follow guidelines when adding customization to product pack files. This will reduce the merge conflicts. Refer 18 | [how to reduce merge conflicts](../updates/resolve-conflicts.md). 19 |
20 | 3. Run tests
21 | WSO2 thoroughly tests and certifies each update and hotfix released. Regardless of whether an update or hotfix 22 | running tests on your update environment ensures that all existing and new functionalities are working perfectly fine. 23 | 24 | !!! Note 25 | Whenever you apply an update WSO2 recommends you to apply the updates to lower environments, run tests and update the 26 | production environment. 27 |
28 | 4. Getting Updates to a lockdown Environment
29 | The best practices disseminating updates to production environment with no internet connection is as follows:
30 |  1. First [receive the updates](../update-tool/#update-commands-for-os) in a lower environment that is connected to the internet.
31 |  2. Test the environment thoroughly.
32 |  3. Perform security checks mandate by your organization and verify the updated pack.
33 |  4. Last move the verified pack to the lockdown environment securely. 34 | 35 |
36 | 5. Use a Configuration Management tool.
37 | There are a myriad of benefits of using a Configuration Management Tool. WSO2 advise the use of Configuration Management Tool such as [Puppet and Ansible](../faq/#what-are-the-recommended-configuration-management-tools-to-deploy-configurations-to-client-nodes) 38 | to carry configuration changes flawlessly. Read more on our [Continuous Update Document](../continuous-update). 39 | 40 |
41 | 6. Assess whether the environment getting the new updates has enough disk space before running the updates tool.
42 | It is important to have adequate disk space in the environment that gets updates. When the update command is initiated, the tool takes a full backup of the current product, loads the applicable new updates and thereafter applies the new updates to the product pack. 43 | This process requires that your environment has enough space, and the tool calculates the same using the following equation: 44 |
45 |  (3 x packsize) + (updates_count x update_size) + 500mb 46 |
47 | to ensure an error free update retrieval, check for adequate space before starting the update process. 48 | 49 |
50 | 7. WSO2 advise you to keep a copy of your most reliable Docker image in your own private Docker registry for future usage. Further, you can 51 | run security and other crucial compliance checks before you onboard an image to your private registry. Read the step-by step guidelines on this by clicking [here](../updates/how-to-use-docker-images-to-receive-updates.md). 52 | -------------------------------------------------------------------------------- /en/docs/updates/continuous-update.md: -------------------------------------------------------------------------------- 1 | 2 | Receiving continuous updates to your environment can be done with ease using WSO2 recommended configuration management tools, which are Puppet and Ansible.
3 | listed below are the steps: 4 | 5 | 1. Go to the desired git repository location of the selected configuration management tool. 6 | [e.g., Let say we are using WSO2 APIM with ansible as the configuration management tool, thus the git repo to refer is `https://github.com/wso2/ansible-apim` ] 7 | 2. Clone the correct git repo. 8 | 3. Check out the latest tag of the product version. 9 | 10 | 11 | git checkout 12 | 13 | 14 | !!! info 15 | The above command will be like ``git checkout v2.6.0.7`` for the latest WSO2 APIM 2.6.0 version. 16 |
17 | 18 | 4. Store the product pack you've downloaded in the `/files/packs` directory.
19 | 20 | 5. Move to the `scripts` directory and run the `update.sh` in the main node. 21 | 22 | 23 | cd scripts 24 | ./update.sh 25 | 26 | 27 | 28 | 6. After the product is updated, propagate the updated product pack to the relevant environments. (i.e. Development, Staging and Production) 29 | 30 | Refer the following diagram for a better understanding on continuous updates: 31 | 32 | 33 | 34 | 35 | 36 | 46 | 47 | !!! Note 48 | 49 | For more detailed information on WSO2's Puppet and Ansible configurations, refer the [link](../faq/#what-are-the-recommended-configuration-management-tools-to-deploy-configurations-to-clien). 50 | -------------------------------------------------------------------------------- /en/docs/updates/customized-dockerfile.md: -------------------------------------------------------------------------------- 1 | ### Creating Custom Docker images for Updated Products 2 | The `create-docker` command builds a Docker image of an updated product pack using the Docker resources developed by WSO2. However, the following steps should be followed if any customizations are required. 3 | 4 | In this example, we will assume that we are creating a custom Docker image for an updated product of WSO2 API Manager 3.0.0
5 | 1. Go to the product Docker resources repository on GitHub (e.g., [docker-apim](https://github.com/wso2/docker-apim/)).
6 | 2. Find the latest tag corresponding to the product version (e.g., v3.0.0.x)
7 | 8 | 9 |
10 | 3. Create a Docker project directory and navigate into it. 11 | 12 | mkdir -p /docker 13 | cd /docker 14 |
15 | 4. Navigate to the Docker resources of the required Operating System, and download the Dockerfile, and docker-entrypoint.sh> files into the project directory. 16 | 17 | wget https://raw.githubusercontent.com/wso2/docker-apim/v3.0.0.4/dockerfiles/alpine/apim/Dockerfile
18 | wget https://raw.githubusercontent.com/wso2/docker-apim/v3.0.0.4/dockerfiles/alpine/apim/docker-entrypoint.sh 19 |
20 | 5. Create a zip file of the updated product pack and copy it into the Docker project directory. 21 | 22 | zip -qr wso2am-3.0.0.zip 23 | cp wso2am-3.0.0.zip /docker 24 |
25 | 6. At this point, you should have the following files in your Docker project directory 26 | 27 | cd /docker 28 | ls 29 | Dockerfile 30 | docker-entrypoint.sh 31 | wso2am-3.0.0.zip 32 |
33 | 7. Open the Dockerfile in a text editor.
34 |   a. Remove the `wget command` downloading the product pack over the internet. 35 | 36 |
37 |   b. Add a COPY command before RUN to copy the created zip file into the image. 38 | 39 | COPY wso2am-3.0.0.zip ${WSO2_SERVER}.zip 40 |
41 | 8. Make the necessary additional custom changes to the Dockerfile. 42 | For example, if we need to change the JDK version from the current version of 8 to 11, we must make the following changes.
43 |   a. Identify the location where the JDK version is set. 44 |
45 | 46 |
47 |   b. Change the line from `FROM adoptopenjdk/openjdk8:jdk8u222-b10-alpine` to `FROM adoptopenjdk/openjdk11:jdk-11.0.10_9-alpine`. 48 |
49 | 9. Build the Docker image with the tag in the `PRODUCT_NAME:PRODUCT_VERSION.UPDATE_LEVEL` format. 50 | 51 | docker build . -t wso2am:3.0.0.25 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /en/docs/updates/faq.md: -------------------------------------------------------------------------------- 1 | 2 | ### Can I get WSO2 Updates for free? 3 | 4 | You can receive updates to WSO2 software for six months for evaluation and trial. If you'd like to use WSO2 software in production, this requires a WSO2 Subscription. 5 | 6 | Find out more about [WSO2 Subscriptions](https://wso2.com/subscription/) 7 | 8 | ### What are the benefits of a WSO2 subscription? 9 | 10 | A WSO2 Subscription entitles you to : 11 | 12 | - Run WSO2 software in production. 13 | - Receive all updates. 14 | - Access WSO2 support and much more. 15 | 16 | Find out more about [WSO2 Subscriptions](https://wso2.com/subscription/) 17 | 18 | ### How can I migrate from WUM/In-place model to the new WSO2 Updates 2.0 model? 19 | The WSO2 WUM and In-place update tools were decommissioned on 7th March 2023. For more information, please review the [Decommission plan](../../updates/wum-decommission/) and reach out to [WSO2 support](https://support.wso2.com/) with any questions. 20 | 21 | ### How often does WSO2 release new updates? 22 | WSO2 updates are released **bi-weekly** as new update levels. Follow the updates commands in [updates command page](../../updates/update-commands/). 23 | 24 | For urgent security updates, WSO2 will alert customers via the Support Portal. In addition, WSO2 will announce all new security updates monthly. WSO2 recommends updating your production environments at least monthly. 25 | 26 | ### How can I update my product pack if my environment doesn't have Internet access? 27 | 1. First, update the product pack in an environment that has Internet access using the **create-update** command.
28 | 2. Next, transfer the created zip file securely to your isolated environment(s).
29 | 3. Next, run the **apply-update** command pointing the proper zip file location. If you have an older update client tool version, the tool will update itself and show a message to re-run the same command.
30 | 4. Upon running the `apply-update` command again will propagate new updates to that environment. 31 | 32 | ### What should I do if I get an`unknown command "apply-update" for "wso2update` error while applying updates offline? 33 | You will get this error if the update tool is old and does not support the apply-update command. To resolve this problem, follow the steps below:
34 | 35 | 1. Check the version of the Update Tool in the non-internet environment by running `wso2update_ version` command.
36 | 2. If the version of the Update Tool in the non-internet environment is earlier than 1.3.0, copy a newer version of the tool that is fetched by an environment with internet.
37 |  a. The latest version of the tool would be available in the `/bin` directory in the environment with internet after running the `create-update` command.
38 | 3. Next, while copying the update zip file into the non-internet environment, copy the updated tool executable into the `/bin` directory. 39 | 40 | Learn more about the `create-update` and `apply-update` commands by referring to [updates command page](../../updates/update-commands/) 41 | 42 | ### Do I need a key to unlock updates for production? 43 | 44 | No. We trust our customers to adhere to the license terms. We make the terms clear to avoid accidental violations and reserve the right to remove access to updates or take other means to enforce the license against intentional violators. 45 | 46 | Find out more about the [EULA license](https://wso2.com/licenses/eula/3.1). 47 | 48 | ### Can I choose which updates to install? 49 | 50 | You can choose to update your product to a specific update level. This will update the product from the existing level to the chosen level, applying the updates in between. 51 | 52 | ### What license is WSO2 Updates on? 53 | 54 | We have released WSO2 Updates with a commercial EULA license. Find out more about the [EULA license](https://wso2.com/licenses/eula/3.1). 55 | 56 | ### Should I test my updates and hotfixes? 57 | 58 | WSO2 tests all updates and hotfixes before releasing them to customers. However, it is a best practice to install updates or hotfixes to either your development, staging or testing environment that has the same product distribution that runs on your production environment, execute test run and thereafter apply to the production environment. 59 | 60 | ### How do I know when updates are available? 61 | 62 | You can learn about the latest updates from WSO2 by logging into [Updates Portal](https://updates-info.wso2.com). 63 | 64 | ### Where can I find description and instructions related to specific updates and hotfixes? 65 | 66 | You can review details about each update and hotfix in [Updates Portal](https://updates-info.wso2.com). Information about your subscribed products is available in [Updates Portal](https://updates-info.wso2.com). 67 | 68 | ### How can I print update information by accessing the Updates portal? 69 | 70 | Follow the steps given below:
71 | 1. Login to the [Updates portal](https://updates-info.wso2.com/)
72 | 2. Enter your WSO2 user credentials and click on the 'Sign In' button.
73 | 3. The page will be directed to the 'WSO2 Updates Information Portal'.
74 | 4. Click on the products **"Already installed updates"** button or **"Newly Available Updates"** button.
75 | 5. Click on the **"View Report"** button then the user is able to print the update report. 76 | 77 | ### What can I do in case of an issue? 78 | 79 | If you encounter any issues while using WSO2 updates, and you have a valid subscription, please report the issue on the [Support Portal](https://support.wso2.com/support). Be sure to attach the details of the error when making the report. You can obtain the details by accessing the log files in 'updates/logs' within the product directory.
80 | 81 | If you do not have a subscription, kindly reach out to us through the [contact page](https://wso2.com/contact/) for assistance. 82 | 83 | ### How can I know what changes are included in an update? 84 | 85 | You can check the changelog of an update by log into the [Updates Portal](https://updates-info.wso2.com). 86 | 87 | ### when I get an error as 'invalid credentials. Please enter valid WSO2 credentials'. What should I do? 88 | 89 | Check whether you have given the correct WSO2 credentials. If you have, check whether your password has the $ sign. If 90 | yes, escape the $ sign using escape character '\'. 91 | 92 | Example 93 | Password - 123$abc 94 | Should be entered as 123\$abc 95 | 96 | ### Should I change configurations when a proxy server or firewall is running? 97 | 98 | Yes. WSO2 updates are received by connecting to `https://api.updates.wso2.com, https://cdn.updates.wso2.com, 99 | https://product-dist.wso2.com and https://wso2.com, https://gateway.api.cloud.wso2.com`. If your system connects to 100 | the Update service through a proxy server or firewall, whitelist the above-mentioned endpoints. 101 | 102 | Since WSO2 Updates is a command-line tool, the proxy should be configured from your command-line using the following command: 103 | 104 | export http_proxy=http://username:password@proxyhost:port/ 105 | 106 | If you are behind an NTLM proxy, you can use a third party tool like CNTLM to do the NTLM proxy authentication. See 107 | the [CNTLM documentation](http://cntlm.sourceforge.net/) for instructions. 108 | 109 | ### What if my proxy runs only on http: protocol? 110 | You can achieve this by sending HTTPS traffic to the proxy server using plain http. Change the variable HTTPS_PROXY to the following: 111 | 112 | `` 113 | HTTPS_PROXY=https://: -> HTTPS_PROXY=http://: 114 | `` 115 | 116 | ### Do I have to run the update tool in all the servers in my environment? 117 | This is not a WSO2 recommended approach. If you have several servers running in your environment, it is prudent to use a Configuration Management System. You can update the product pack once and distribute it to other servers using your Configuration Management System . 118 | 119 | ### What are the recommended configuration management tools to deploy configurations to client nodes? 120 | 121 | WSO2 recommnds Ansible and Puppet. 122 | 123 | Ansible resources: 124 | 125 | WSO2 APIM: https://github.com/wso2/ansible-apim/blob/master/README.md 126 | 127 | WSO2 EI: https://github.com/wso2/ansible-ei/blob/master/README.md 128 | 129 | WSO2 IS: https://github.com/wso2/ansible-is/blob/master/README.md 130 | 131 | Puppet resources: 132 | 133 | WSO2 APIM: https://github.com/wso2/puppet-apim/blob/master/README.md 134 | 135 | WSO2 EI: https://github.com/wso2/puppet-ei/blob/master/README.md 136 | 137 | WSO2 IS: https://github.com/wso2/puppet-is/blob/master/README.md 138 | 139 | ### How can I use update commands in automation scripts? 140 | 141 | The WSO2 Updates tool supports the use of flags for user input values and exit codes for commands. 142 | 143 | * Use user input commands 144 | 145 | 146 | 147 | 148 | 149 | * Use exit codes 150 | 151 | 152 | 153 | ### Are the updates I get from WSO2 Updates secure and assures authenticity? 154 | The Update tool communicates with the WSO2 Update Service to get details of the updates that need to be downloaded and applied like the following:
155 | 1. Artifacts to be downloaded.
156 | 2. md5sum values of the artifacts.
157 | 3. Several other metadata required for the next invocations. 158 | 159 | After getting information about the updated files, the Update tool makes an authenticated invocation to the CDN to download the necessary updates. 160 | The client’s communication with the WSO2 Update Service and the CDN are secured through HTTPS. 161 | 162 | After the necessary files have been downloaded, the Update tool validates the authenticity of the files by comparing their md5sum values with the values obtained from the WSO2 Update service. This ensures that the files have not been tampered with after the download is complete. 163 | The Update tool will then apply the downloaded updates and create an updated product distribution. 164 | 165 | ### How can I get Docker images with updates and how will those be distinguished? 166 | To get Docker images, please go to [WSO2 Docker Repository](https://docker.wso2.com/index.php) and select the Docker image based on ``,``,`` and the optional `[OS]` requirement.
167 | The `` represents the Docker file version that was used to build this image for reference purposes (you may disregard this value). 168 | 169 | The naming conversion of Docker images is as follows:
170 | 171 | `` 172 | :.--[OS] 173 | `` 174 | 175 | e.g., wso2am:3.2.0.3-spec1-alpine 176 | 177 | ### How can I get updates for each node (Dev, Staging and Production) when a deployment or server directory is shared among nodes? 178 | You can get updates to nodes when there is a shared deployment or server directory. Below is a list of recommended ways to achieve this:
179 |
    With the aid of a **Configuration Management Tool**:
    180 |
      181 |
    1. Stop all running product packs.
    2. 182 |
    3. Unmount the shared directory from all nodes except the main node of your Configuration Management Tool. (If the shared directory is not mounted in the main node of the Config Management setup, you'll have to mount it to the main node).
    4. 183 |
    5. Execute the WSO2 update tool on the main node to update the product pack.
    6. 184 |
    7. Using you Configuration Management Tool, transfer the updated pack to the other nodes.
      185 |
    8. Mount the shared directory on other nodes. At this point, the update is successful on all the deployment node.
      186 |
        187 |
188 |
    Without the aid of a **Configuration Management Tool**:
    189 |
      190 |
    1. In the deployment, first stop all product packs.
    2. 191 |
    3. Unmount the shared directory (deployment/server) in all servers except in one server/instance.
    4. 192 |
    5. Run the WSO2 Update tool to update the product pack with the latest changes (jar, war, and webapp changes).
    6. 193 |
    7. If there are conflicts, take any necessary steps to manually resolve them. [Refer to the Resolve Conflicts page](../../updates/resolve-conflicts/)
      194 |
    8. This will apply all the updates sent for deployment/server directories from WSO2.
    9. 195 |
    10. Copy the updated pack to all other nodes replacing their existing product.
    11. 196 |
    12. Mount the shared directory in all nodes and start servers. Now the whole deployment is updated.
    13. 197 |
    198 |
199 | 200 | ### Is it mandatory to have a Configuration Management Tool configured or can we deploy Updates manually to tour environments? 201 | It is not mandatory to have a Configuration Management Tool configured, but having a Configuration Management Tool makes the continuous updates process easy and aids configuration with less possibility of human errors. 202 | 203 | ### How are the keystore and truststore configurations incorporated with a configuration management tool? 204 | Please refer to [APIM Ansible repository Documentation](https://github.com/wso2/ansible-apim/tree/3.2.x#including-custom-keystore-and-truststore) to learn about customizing keystore and truststore configurations that are integrated with a Configuration Management Tool. 205 | 206 | ### How do I persist customizations done on the servers during each update? 207 | 1. If there are .jar or UI customization, those changes should be done in a configuration management server. Those changes should also be pushed to your forked repository, for future use.
208 | 2. The customized files should be in the sub-directories of the `files` directory. (All .jar files and UI customizations should be added to the `misc` folder.)
209 | 3. Next, you need to change the script to include [group customizations/changes](https://github.com/wso2/ansible-apim/blob/3.2.x/roles/common/tasks/custom.yml). However, if there are any [role specific changes](https://github.com/wso2/ansible-apim/blob/3.2.x/roles/common/tasks/custom.yml) the script changes should be performed in the respective role(s). 210 | 211 | ### What are the correct steps to apply the same Update level to all the nodes in the deployment if a Configuration Management Tool is not being used? 212 | WSO2 recommends the use of a Configuration Management Tool to mitigate human errors as a manual intervention may lead to errors.
213 | However, here are the steps to apply the same update level across all node:
214 | 1. In a pre-production environment, update to the required update level using the --level flag (e.g., ./wso2update_linux --level 10)
215 | 2. Run all testcases and verify the update in that environment.
216 | 3. Propagate the same updated product pack to other and production environments (using rolling updates, Canary or Blue-green update methods). 217 | 218 | ### If nodes are started with product profiles, how do I get updates? 219 | First, get the update of the base product and distribute the updated pack to other deployment environments. Then, run different profiles on those environments as needed. 220 | 221 | ### How do I change the Backup location? 222 | By default, the WSO2 Update tool will use `/.wso2-updates` in the users home directory as the backup location.
223 | 224 | If you want to change the backup location, run the update tool command with --backup flag followed by the new backup location.
225 | 226 | `` 227 | ./wso2update_ --backup 228 | `` 229 | 230 | !!! Note 231 | You need to provide the flag only when changing the backup location. Subsequent executions of the same command will automatically use the provided backup location. 232 | 233 | ### How do I create an updated product zip to be used in a pipeline? 234 | Follow the steps described below to create an updated product zip that can be used in a pipeline.
235 | 1. Set the following environment variables
236 | 237 | WSO2_UPDATES_SKIP_CONFLICTS="true" 238 | WSO2_UPDATES_SKIP_MIGRATIONS="true" 239 |
240 | 2. Download or copy the required U2 base pack to your pipeline workspace. (You can download the U2 base pack from the WSO2 website and host it internally so that you can access the same from your pipeline.) 241 |
242 | 3. Unzip the product pack and use the command shown below:
243 | 244 | unzip -q 245 |
246 | 4. Run the update tool suited to your OS. Refer to [link](../../updates/update-tool/#update-commands-for-os)
247 | Note :
   a. If you already have a WSO2 subscription use the following command to run the updates with the user credentials.
248 |    b. When a self update (the update tool will run a self update when the tool is not up to date. This is a automatic procedure) is executed, the update tool will generate a Exit Code of 2. Thus, it is recommended to configure the pipeline to rerun the update command. 249 | 250 | [path_to_product_pack]/bin/ -u $WSO2_UPDATE_USER -p $WSO2_UPDATE_PASSWORD 251 |
252 | 253 | 5.Run the following command to re-zip the updated product pack. 254 | 255 | zip -r [path_to_product_pack].zip [path_to_product_pack] 256 |
257 | 6. You can use the zip file created in step 6 in the rest of the pipeline. 258 | -------------------------------------------------------------------------------- /en/docs/updates/hotfixes.md: -------------------------------------------------------------------------------- 1 | ### What are Hotfixes? 2 | Hotfixes are an immediate fix for a customer reported incident and will always be applied on an update level. Hotfixes are in the form of a `.zip file` that 3 | needs to be applied on top of the product pack using the update client tool. 4 | Further, A hotfix is particular to a customer reported issue, and an update level.
5 | 6 | Hotfixes are best-suited if you are:
7 | 1. Experiencing a sudden issues, after a long error-free spell in your production environment.
8 | 2. Have tested a certain update level thoroughly in a QA Environment and just before concluding testing you have found some test cases are failing.
9 | 3. Having a single issue to be addressed and needs to be pushed to the production environment soon. Reporting an issue and receiving a hotfix saves you time and trouble. 10 | 11 | ### How to apply hotfix(es)? 12 | As you already know hotfixes for an important fix is received as a zip file. The zip file can be applied to your environment as shown as [here](../../updates/update-commands/#wso2update_os62-apply-hotfix) 13 | 14 | ### How to create a Docker image with Hotfixes? 15 | Creating a hotfix applied Docker image is simple. Follow the steps given below to seamlessly get updates and hotfixes to your containerized environment.
16 |   1. Create an updated product pack to the corresponding update level.
17 |   2. Download and copy the hotfix file to the relevant machine (e.g., Desktop or Server)
18 |   3. Apply the [hotfix command](../../updates/update-commands/#wso2update_os62-apply-hotfix) to install the hotfix for the update level.
19 |   4. Then run the 'create-docker' command to create a Docker image with hotfixes. Follow    instructions given in the [update commands page](../../updates/update-commands/#wso2update_os62-create-docker)
20 |   5. Thereafter, add the created Docker image to your private Docker registry.
21 |   6. Rollout the newly created Docker image to Staging environment and test thoroughly.
22 |   7. If all compliance test are passing, follow Step 5 in other environments including the    Production environment. 23 | 24 | ### How to create a Docker image with Hotfixes for Pipelines? 25 | The method being used is akin to the one described in [How to create a Docker image with Hotfixes?](../../updates/hotfixes/#how-to-create-a-docker-image-with-hotfixes). 26 | However, the sole contrast lies in the need to automate the process of implementing Hotfixes. A sample script has been devised as an example for your convenience, which can be accessed [here](../../assets/attachments/apply-hotfix.sh). 27 | 28 | Make use of the script as a reference and customize it as per the specifications of your pipeline. 29 | 30 | You have to run the script as follows:
31 | 32 | ./apply-hotfix.sh 33 | 34 | `` : The product pack that is updated to a corresponding update level.
For example - wso2am-4.1.0.10
35 | `` : Path to a directory where you have already copied all the hotfixes corresponding to the update level. e.g., in this example, update level 10
36 | ``: The username you used to access WSO2 Updates
37 | ``: The password of the user 38 | 39 | The script performs the following actions: 40 | 41 | 1. The script first validates the operating system (the sample script only runs on Darwin and Linux Operating Systems) 42 | 2. Validate inputs 43 | 3. Extract the product pack 44 | 4. Initialize the update tool. This will allow the update tool to self update if there is a newer version of the update tool 45 | 5. Validate hotfix sequence. The hotfixes need to be applied in a specific sequence. e.g., 1, 2, 3 46 | 6. [Install hotfixes](../../updates/update-commands/#wso2update_os62-apply-hotfix) 47 | 7. Create a Docker image. 48 | 49 | After creating the Docker image, you can push it to your private Docker registry and conduct any necessary security checks. 50 | Thereafter, you can refer to this Docker image in the remainder of your pipeline. 51 | 52 | !!! Note 53 | 54 | To undo a hotfix, you can run this script again after removing the corresponding hotfix. It is important to note that the remaining files in the hotfix directory must always be in sequence. Therefore, you should remove hotfixes in descending order. 55 | **** 56 | ### How move hotfixes to the latest update level in a containerized environment? 57 | Once the issue has been addressed in an update level, we recommend you to move to the update level that includes the fix or latest update level. This can be done by retrieving the docker image from the [WSO2 private Docker registry](https://docker.wso2.com/) with the right version tag. 58 | 59 | ### Steps to follow if you are moving from hotfixes to the latest update level on your product pack 60 | Hotfix is a single fix provisioned to address a critical issue in the production environment. Once the issue has been addressed in an update level, we recommend you to revert the hotfix(es) and move to the latest update level. 61 | 62 | To avoid missing any changes made during the application of hotfixes, it is important to back up the following directories from the current product pack before reverting the hotfix(es). 63 | 64 | - `repository/deployment/server/` - only if you have created new APIs, execution plans
65 | Note: For IAM products this is not needed.
66 | - `repository/tenants/` - only if you are using multi tenancy
67 | Note: For MI products this is not needed
68 | - `repository/resources/security/` - only if you have renewed or altered JKS after the hotfix(es) are applied. 69 | - `repository/database/` - if you are not using external RDBMS for any of the databases. 70 | - `repository/components/lib/` - if you have copied new jars to the lib directory after the hotfix(es) are applied. 71 | - `repository/components/dropins/` - if you have copied new bundles to the dropins directory after the hotfix(es) are applied. 72 | - `repository/logs/` - if you need to preserve the old logs created during the hotfix applied duration. 73 | 74 | After all the above directories are backed up, follow below steps to reverting the applied hotfix(es)
75 | 76 | 1. Run the following command from the bin folder (`/bin`) to check the current state: This command will list all the hotfix(es) that has been applied to a particular product pack. 77 | 78 | `` 79 | ./wso2update_ current-state 80 | `` 81 | 82 | 2. Run the following command that will remove the last applied hotfix. If there are multiple hotfixes applied, repeat the command for each of them. 83 | 84 | `` 85 | ./wso2update_ revert-hotfix 86 | `` 87 | 88 | 3. Then run the `current-state` command again to verify that all hotfixes are removed. 89 | 90 | !!! Note 91 | Make sure all the hotfixes applied to the pack are reverted before you proceed to the next step. 92 |
93 | 4. Lastly, run the update tool to update to the latest update level containing the fixes corresponding to all the hotfixes.
94 |   95 | `` 96 | ./wso2update_ 97 | `` 98 |
99 | Refer the [webinar link](https://www.youtube.com/watch?v=Z2XeRhzkdpI&t=1884s) to learn more on the reverting hotfixes. 100 | -------------------------------------------------------------------------------- /en/docs/updates/how-to-use-docker-images-to-receive-updates.md: -------------------------------------------------------------------------------- 1 | 2 | Follow the steps given below to receive WSO2 Updates using Docker images.
3 |   1. All Docker images in the [WSO2 Private Docker registry](https://docker.wso2.com/) adhere to a special image tagging format. Read more on [Docker versioning tags](../../updates/using-wso2-docker-images/).
4 |   2. Then decide on the correct Docker image tag(s).
5 |   3. Run all the security and compliance test(s) on the selected Docker image. After verifying, add the same to your own private Docker registry.
6 |   4. Rollout the Docker image into a lower environment and test well.
7 |   5. Use this image in other deployments as required.
8 | 9 | !!! Note 10 | Docker Image Release Frequency : Docker images with updates are released weekly to the [WSO2 Private Docker registry](https://docker.wso2.com/). Therefore, you will not find continuous update-level tags in the docker images added in the WSO2 Docker registry. Furthermore, the registry retains only the latest Docker images, with older images being periodically removed. 11 | -------------------------------------------------------------------------------- /en/docs/updates/new-user.md: -------------------------------------------------------------------------------- 1 | This guide is an introduction to WSO2 Updates 2.0 for fresh users. It provides guidance and direction that you need to start receiving WSO2 Updates with a fresh start.
2 | If you are new to WSO2 products, and prefer to use the WSO2 update 2.0 for the first time, try the steps given below:
3 | 4 | !!! Note 5 | - To download the pack, please visit the official [WSO2 website](https://wso2.com/) and access the "Products" section from the top menu.
6 | - Select the specific product you wish to download. 7 | - After providing your email address during the download process, please check your inbox for an email containing a one-time download link. 8 | 9 | 1. After the product is downloaded, navigate to the downloaded pack location using the terminal. 10 | 2. Unzip the downloaded pack and go to `/bin` directory. 11 | 3. Execute the corresponding [setup script](../set-up-update-tool/) for your OS to set up the Update Tool. 12 | 4. Execute the [update commands](../update-tool/#update-commands-for-os). 13 | 14 | Learn more on how to get updates to your containerized environment by [clicking here.](../how-to-use-docker-images-to-receive-updates) 15 | -------------------------------------------------------------------------------- /en/docs/updates/overview.md: -------------------------------------------------------------------------------- 1 | ## What is WSO2 Updates? 2 | WSO2 Updates is how WSO2 releases improvements to existing products, on top of a released WSO2 product version. 3 | With updates, you do not have to wait until the next product version release to get product enhancements and security fixes. 4 | 5 | 6 | 7 | 8 | 9 | 19 | 20 | WSO2 delivers improvements to customers in two ways: 21 | 22 | ###1.Updates### 23 | 24 | **An Update** can be a collection of bug fixes, new features, security fixes, or improvements on an existing product. 25 | Updates are delivered through update levels. When an update is applied to a product, the product version goes up by one update level.
26 | 27 | ###2.Hotfixes### 28 | 29 | **A Hotfix** is a bug-specific patch that WSO2 can create for customers-reported bugs. Hotfixes are an immediate fix for a customer-reported issue and will be applied on an update level. Hotfixes are in the form of a `ZIP file` that 30 | needs to be applied on top of the product pack using the update client tool. **All Hotfixes 31 | will be included in future updates for all subscribers.** 32 | 33 | 34 | ## Why should you use WSO2 Updates? 35 | 36 | Continuous maintenance of your WSO2 software ensures a healthy and secure system. There are many specific reasons why you should use WSO2 Updates for your products: 37 | 38 | * Eliminate the possibility of wasting time due to a known issue during your evaluation or development. 39 | * Easily deploy updates through WSO2 Updatesas they are packaged for easy deployment into your production systems, ensuring your deployment is solid and secure. 40 | * Update Channels deliver all updates including security updates to fit your project lifecycle. 41 | * Use WSO2 Update Services for WSO2 releases for ten years, enabling you to use bug and security fixes while remaining free to manage your upgrade schedule. 42 | * Let WSO2 carefully monitor hundreds of open source projects, collect and assess security reports from users or academia, run code security reviews, and automate code analysis to identify and address possible security weaknesses. 43 | 44 | ## How do you get WSO2 updates? 45 | 46 | A WSO2 Subscription is required to use WSO2 updates. A Subscription can be obtained by following manner: 47 | 48 | - Trial Subscription: Provides all the functionality of a subscription for six months. 49 | 50 | - Paid Subscription: WSO2 Subscription customers receive all updates, including bug fixes, security updates, and product improvements. 51 | 52 | Learn more about [WSO2 Subscriptions](https://wso2.com/subscription/)
53 | 54 | ## When should you use hotfixes? 55 | 56 | If you find an issue in your deployment environment, you can raise a ticket at [WSO2 Support](https://support.wso2.com). We can then potentially create a hotfix for your critical issues that has not been addressed in previous updates. 57 | 58 | !!! Note 59 | You cannot update a product pack that has hotfixes applied. To apply a product pack update, you might first remove all hotfixes. 60 | 61 | ## When should you use WSO2 Updates? 62 | 63 | WSO2 recommends updating frequently to ensure your environments have the latest improvements and bug fixes. When WSO2 releases security updates, we inform our customers right away. WSO2 recommends applying security updates whenever they are available to ensure the most secure environments possible. 64 | 65 | ## How do you update your WSO2 products? 66 | 67 | The WSO2 Update Tool delivers hotfixes and updates on top of the product pack. The Update Tool is available in each product release distribution and is located in the `/bin` directory. 68 | -------------------------------------------------------------------------------- /en/docs/updates/reference.md: -------------------------------------------------------------------------------- 1 | 2 | The Reference page list out some important videos and other references that you can peruse. 3 | These resources are consolidated to give a clear and complete knowledge-base about WSO2 updates 2.0 model. 4 | 5 | We like to hear about your concerns, you can reach out to us by sending an email using [Contact Us](https://wso2.com/contact) page. 6 | 7 | Reference Links:
8 | Webinar - [WSO2 Updates 2.0 Webinar]( https://youtu.be/Z2XeRhzkdpI) 9 | 10 | -------------------------------------------------------------------------------- /en/docs/updates/resolve-conflicts.md: -------------------------------------------------------------------------------- 1 | ### What are merge conflicts? 2 | A merge conflict is likely to happen when a configuration file or a customized artifact has changed during the 3 | update. If a file or an artifact has conflicts, the update tool will not attempt to merge them. Instead, you will need to manually apply 4 | the customizations on top of the updated files. 5 | 6 | 7 | !!! Note 8 | If the Update Tool identifies conflicts, you must resolve them or revert the update. You cannot proceed further without taking either of the mentioned actions. 9 | 10 | ### How to minimize merge conflicts 11 | 12 | Below are the best practices for different file types when updating your products to reduce the number of merge conflicts. 13 | 14 | - **.jar** files 15 | -- Do not modify the original .jar files. 16 | 17 | 18 | !!! Note 19 | When updating your products, the WSO2 Update Tool replaces the existing .jar files with updated ones. **If you modify the original .jar files, any customizations will be lost.**
20 | To avoid losing your previous customizations, use an extension point as explained in using Extension Points in Carbon and [WSO2 Extension page](https://github.com/wso2-extensions).
21 | Or, refer to `https://store.wso2.com/store/pages/top-assets` for a list of released connectors and extensions. 22 | 23 | - **.war** files 24 | -- When updating your product, the WSO2 update tool will unarchive your .war file (if applicable) and apply updates 25 | on top of your customizations (if applicable). 26 | 27 | - **.car** files 28 | -- Do not modify the original .car files. In case your original product distribution contain .car files, do not 29 | modify them as they can be changed by continuous updates. 30 | 31 | - **.jag/.js** files 32 | -- Maintain the same code indentation of the original .js files in the updated .js files. 33 | - **.json** files 34 | -- Maintain the same code indentation of the original .json files in the updated .json files. Else, there will be 35 | merge conflicts. 36 | 37 | !!! Best Practice 38 | Maintain the order of the `.json` file as much as possible. For example, when you add a new key-value pair, it is better to add it 39 | to the end of the file. 40 | 41 | ### How to resolve merge conflicts 42 | 43 | Navigate to the locations of the files that have conflicts and note the files that are created by the update tool (text type files .jag, json, js): 44 | 45 | - The file that has your customizations (e.g., test.jag). 46 | 47 | - The file that was there in the previous update level before any customizations (e.g., test.jag.original). 48 | 49 | - The file that is in the new update level after updating (e.g., test.jag.new). 50 | 51 | - By looking at the created files (.original and .new), resolve the conflicts and save the resolved file with the .final extension (e.g., test.jag.final). 52 | 53 | - Run the update tool again with the `--continue` flag for the tool to merge the changes in the .final file with the 54 | file that created the conflict. 55 | 56 | - Go back to the location of the conflicting file and ensure that the tool has merged the .final file with the file 57 | that had your custom configurations and deleted all the other temporary files (i.e., .original, .new, and .final). 58 | -------------------------------------------------------------------------------- /en/docs/updates/set-up-update-tool.md: -------------------------------------------------------------------------------- 1 | To use the **WSO2 Update Tool 2.0**, users must first set up the tool in the product pack. The required setup scripts are bundled with the product pack and located in the `/bin` directory. 2 | 3 | The script will set up the appropriate Update Tool based on the OS and architecture of the system, provided the product supports the detected system configuration. 4 | 5 | !!! note 6 | The following list of products are **ARM64** compatible: 7 | 8 | - Identity Server v7.1.0 (`wso2is-7.1.0`) 9 | - Micro Integrator v4.4.0 (`wso2mi-4.4.0`) 10 | - API Manager v4.5.0 11 | - All-in-one (`wso2am-4.5.0`) 12 | - API Control Plane (`wso2am-acp-4.5.0`) 13 | - Universal Gateway (`wso2am-universal-gw-4.5.0`) 14 | - Traffic Manager (`wso2am-tm-4.5.0`) 15 | 16 | Update Tool setup scripts are only included in Arm compatible product packs, as the older (non-compatible) product packs come with pre-bundled Update Tools (located at `/bin/wso2update_`). 17 | **Hence, setting up the Update Tool is not required if you are using an older product pack.** 18 | 19 | ### Setup Commands for OS 20 | 21 | ```bash tab='Linux' 22 | $ ./update_tool_setup.sh 23 | ``` 24 | 25 | ```bash tab='MacOS' 26 | $ ./update_tool_setup.sh 27 | ``` 28 | 29 | ```console tab='Windows' 30 | $ .\update_tool_setup.ps1 31 | ``` 32 | 33 | Refer to the [Using the Update Tool](../update-tool/) page for more information on how to use the Update Tool after setting it up. 34 | 35 | If you run into any issues while setting up the Update Tool, please refer to the [Troubleshooting](../troubleshoot/#troubleshooting-the-update-tool-setup) section for assistance. For the available options and examples of using the Update Tool Setup script, refer to the [Update Tool Setup Usage Guide](../update-tool-setup-usage-guide/). 36 | -------------------------------------------------------------------------------- /en/docs/updates/troubleshoot.md: -------------------------------------------------------------------------------- 1 | ### Troubleshooting Updates 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 17 | 21 | 22 | 23 | 24 | 25 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 41 | 42 | 43 | 44 | 45 | 48 | 49 | 50 | 51 | 52 | 55 | 56 | 57 | 58 | 59 | 62 | 63 | 64 | 65 | 66 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 89 | 90 | 91 | 92 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 138 | 139 | 140 | 141 | 142 | 146 | 147 | 148 | 149 | 150 | 152 | 153 | 154 |

Error Message

Explanation

Resolution

Unable to connect to WSO2 Update

The Update Tool is not able to connect to the WSO2 Update Server due to a network failure or the server 16 | response is not successful.

Check your network connection. If the connection is still failing, please report to WSO2 at https://wso2.com/contact

19 |

Please be sure to attach the details of the error when you report it. You can get the details by 20 | getting the log files in `updates/logs` in the product directory.

File validation failed

Local modifications have been made to the file being updated.

If the update command is being executed, delete the content in the <UpdatesHome>/updates (~/.wso2-updates/updates) directory and run the update tool again. 26 |

If the hotfix command is being executed, download the hotfix file again and run the update tool against the 27 | newly-downloaded file.

28 |

If the connection is still failing, please report to WSO2 at https://wso2.com/contact

29 |

Please be sure to attach the details of the error when you report it. You can get the details by 30 | getting the log files in updates/logs in the product directory.

31 |
Error while downloading update file from UpdateFileURLThe Update Tool is unable to download an update file from the WSO2 Update service due to a server error.Try running the update tool again. If the command continues to fail, please report to WSO2 at https://wso2 39 | .com/contact. Please be sure to attach the details of the error when you report it. You can get the details by 40 | getting the log files in updates/logs in the product directory.
Unable to get MD5 hash of fileThe update tool is unable to find the md5sum value of the file.Try running the update tool again. If the command continues to fail, please report to WSO2 at https://wso2 46 | .com/contact. Please be sure to attach the details of the error when you report it. You can get the details by 47 | getting the log files in updates/logs in the product directory.
Update configurations are not loadedUpdate tool has encountered an error while loading the configuration values from the config file.Try running the update tool again. If the command continues to fail, please report to WSO2 at https://wso2 53 | .com/contact. Please be sure to attach the details of the error when you report it. You can get the details by 54 | getting the log files in updates/logs in the product directory.
Error while initializing updates config fileUpdate tool encountered an error while being executed for the first time.Try running the update tool again. If the command continues to fail, please report to WSO2 at https://wso2 60 | .com/contact. Please be sure to attach the details of the error when you report it. You can get the details by 61 | getting the log files in updates/logs in the product directory.
Invalid credentialsThe credentials provided are not valid. If the WSO2 account was created recently, the reason for the login failure may be that the credentials are not synced with the WSO2 Update Server.Try again by providing the correct credentials. If your account was created a short while back, you might have to wait. 67 | If authentication is still failing, please report to WSO2 at https://wso2.com/contact. 68 | Please be sure to attach the details of the error when you report it. You can get the details by getting the log files in updates/logs in the product directory.
Username or password cannot be emptyThe update tool is executed without providing values to the username or password.Provide your credentials for the Username and Password and try again.
Unable to parse JSON fileError while reading JSON file while running the update tool when updating or applying hotfix.

Unable to parse config.json: 79 | Check the JSON file at <ProductHome>/updates/config.json and fix issues with formatting.

80 |

Unable to parse update.json: 81 | Remove the content in the <UpdatesHome>/updates (~/.wso2-updates/updates) directory and run the update tool again 82 | .

83 |

Unable to parse hotfix.json: 84 | Download the hotfix file and apply the hotfix to the newly-downloaded file.

85 |

If the error still persists, please report the issue to https://wso2.com/contact.

86 |

Please be sure to attach the details of the error when you report it. You can get the details by getting the log 87 | files in updates/logs in the product directory.

88 |
Unable to identify the productThe update tool cannot identify the product it will be updating if the product.txt file is absent 93 | or if the information in the product.txtis been altered.Make sure that the <ProductHome>/updates/product.txt file exists and the file contains valid product information.
Only one service can be enabled at a given timeThe configuration has enabled multiple services.Check the <ProductHome>/updates/config.json file
Unable to revert as backups could not be foundThe backup that was taken previously is no longer available in the location the backup was taken to.Check for the backup directory from the config file at <ProductHome>/updates/config.json and check if any modifications were made to that environment.
Cannot revert because the backup directory has been modified.The state of the backup is different from when it was taken.Check for the backup directory from the config file at <ProductHome>/updates/config.json and check if the content of the backup is valid. If so, manually copy the directory to the current product setup.
Invalid update levelThe current update level contains an invalid value.Check if the configuration file in <ProductHome>/updates/config.json has been modified manually to contain an invalid value such as a non-numeric value for the update level.
Invalid requested update levelThe update level provided along with the --level flag is invalid.Check if a valid product version or non-numeric characters are provided for the update level. 120 | eg: 121 |

* level 3.1.0.4

122 |

* level 4

123 |
Insufficient disk spaceThe machine does not have sufficient space to update the product.Clear some disk space in the machine and run the update tool again. For more information on the issue please refer the Best Practices page
Error while extracting downloaded clientsAn error occurred while the update tool is updating itself.

Check if the update tool has permissions to execute files in the <UpdatesHome>/updates (~/.wso2-updates/updates 134 | by default) directory and run the update tool again.

135 |

If the error still persists, please report the issue to https://wso2.com/contact.

136 |

Please be sure to attach the details of the error when you report it. You can get the details by getting the log 137 | files in updates/logs in the product directory.

Invalid hotfix nameThe hotfix being applied contains an invalid name.

Download the hotfix again and run the apply-hotfix command.

143 |

If the error still persists, please report the issue to https://wso2.com/contact.

144 |

Please be sure to attach the details of the error when you report it. You can get the details by getting the log 145 | files in updates/logs in the product directory.

Backup directory <backup_directory> cannot be inside the product directory <product_directory>.Backup and the product pack location cannot be same.

Change the backup location to a new location that is not within the product pack. 151 | For more details on changing the backup location refer how to change the backup location

155 | 156 | 157 | ### Permission Restrictions 158 | You may encounter the following error messages due to permission restrictions at an OS level. 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 |

Error Message

Explanation

Unable to create directoryThe update tool is unable to create the specified directory in the relevant location.
Unable to open fileThe update tool is unable to open a file in the relevant location.
Unable to read fileThe update tool is unable to read a file in the relevant location.
Unable to read directoryThe update tool is unable to read the content of the directory in the relevant location.
Unable to write to fileThe update tool is unable to write to a file in the relevant location.
Unable to create fileThe update tool is unable to create a file in the relevant location.
Unable to close fileThe update tool is unable to close the file at a relevant location.
Unable to delete fileThe update tool is unable to delete the file at a relevant location.
Unable to move fileThe update tool is unable to move the relevant file to a specified location.
Unable to delete the fileThe update tool is unable to delete a file in the specified location.
Error while writing updates configurations to fileAn error occurred while the update tool is modifying its configurations.
Unable to get the size of the directoryAn error occurred while attempting to get the size of a directory.
Error while writing updates configurations to fileAn error occurred while modifying the configurations of the update tool.
Error while deleting product directoryAn error has occurred while attempting to delete a product directory. This occurs during a revert process.
229 | 230 | If you encounter any of the above listed OS related issue: 231 | 232 | * Check the OS-level permissions for creating directories in the relevant locations. 233 | 234 | !!! Infor 235 | You can enable permission to create directories in the <UpdatesHome> directory (~/.wso2-updates by 236 | default). 237 | 238 | * Check the available disc space and free some space if the available space is insufficient. 239 | 240 | * If the error occurs even after enabling the above permissions, please report to WSO2 by accessing the [Contact page](https://wso2.com/contact). 241 | Please be sure to attach the details of the error when you report it. You can get the details by getting the log files in `updates/logs` in the product directory. 242 | 243 | 244 | ### Troubleshooting the Update Tool Setup 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 260 | 271 | 272 | 273 | 274 | 278 | 284 | 285 | 286 |

Error Message

Explanation

Resolution

Product does not support the current system's OS and architecture

257 |

The product pack is not compatible with the OS and architecture of the system. 258 | Hence, there's no supported Update Tool available.

259 |
261 |

Most likely scenario for this error is that the architecture of the system is ARM64 (AArch64) based, 262 | since the AMD64 (x86-64) architecture is supported by all WSO2 products. (as of 2025-03-01)

263 |

If the system is ARM64 based and has an x86-64 compatibility layer (e.g. "Rosetta" on MacOS), 264 | use the corresponding x86-64 Update Tool for the system OS.

265 |

To fetch the x86-64 Update Tools, execute the Update Tool setup script with the 266 | [`-a` option](../update-tool-setup-usage-guide/#options) to set up all the Update Tools 267 | supported by the product.

268 |

If still unable to set up the Update Tool, please contact support via the 269 | WSO2 [Contact page](https://wso2.com/contact).

270 |

No Update Tool binaries available for the product

275 |

The setup script failed to fetch any product compatible Update Tools when executed with the 276 | [`-a` option](../update-tool-setup-usage-guide/#options).

277 |
279 |

Ideally, this error should not occur, as all WSO2 products support the AMD64 (x86-64) architecture 280 | (as of 2025-03-01) and the corresponding Update Tool binaries should be available for download.

281 |

If this issue is encountered, please contact support via the 282 | WSO2 [Contact page](https://wso2.com/contact).

283 |
287 | -------------------------------------------------------------------------------- /en/docs/updates/update-commands.md: -------------------------------------------------------------------------------- 1 | ## Important Updates commands 2 | Shown below is an essential set of update commands that a user require to receive updates seamlessly. 3 | To use below update commands replace the tag **** with correct name depending on the operating system. 4 | 5 | * For mac - `darwin` 6 | * For linux - `linux` 7 | * For windows - `windows` 8 | 9 | !!! tip "Before you begin" 10 | The following commands should be performed in command prompt under the folder path of `/bin` 11 | 12 | ### [wso2update_]() 13 | 14 | **Synopsis** 15 | 16 | ./wso2update_linux [--help | help] 17 | [] 18 | [] 19 | 20 | **Description** 21 | 22 | ./wso2update_linux tool is a simple command-line tool that connects to the WSO2 Update service, determines which updates are new and relevant, thereafter downloads and updates the product. 23 | 24 | You will be prompted to enter WSO2 credentials to initializing the tool. Therefore, you require a WSO2 account to start using the 25 | update tool. 26 | 27 | Need a WSO2 Account? [Sign up](https://wso2.com/user/register) 28 | 29 | To find out the latest on WSO2 Update, visit [WSO2 Updates Page](https://wso2.com/updates) 30 | 31 | 32 | **Options** 33 | 34 | -l, --level Update the product upto the given level. 35 | The provided level may or may not contain the product version. 36 | 37 | -b, --backup Specify updates backup directory. 38 | -c, --channel string Channel updates should be downloaded (default "full") 39 | --continue Continue the update with merging resolved conflicts. 40 | --dry-run Simulate the update 41 | -u, --username Specify your WSO2 account email. 42 | -p, --password Specify your WSO2 account password. 43 | --revert Revert to the previous update level. 44 | --template string Specify the template output. 45 | -v, --verbose Enable verbose mode. 46 | -h, --help Help for wso2update. 47 | --no-backup Skip product backup 48 | 49 | **Sub Commands** 50 | 51 | Here is a list of available subcommands: 52 | 53 | 54 | | **Sub commands** | **Detail** | 55 | |------------------|--------------------------------------------------------------------------------------------------| 56 | | apply-hotfix | Apply an available hotfix | 57 | | apply-update | Apply updates to an isolated environment | 58 | | check | Check available new levels for the product
| 59 | | current-state | Show current details of the product | 60 | | create-update | Creates a zip file with updates corresponding to an update level range | 61 | | revert-hotfix | Revert the most recently applied hotfix | 62 | | version | Print Update tool version | 63 | | help | Prints usage details of a command | 64 | 65 | **Exit Codes** 66 | 67 | Here is a list of exit codes: 68 | 69 | | **Exit Code** | **Detail** | 70 | |----------------|--------------------------------------------------------------------------------------------------| 71 | | 0 | Operation Successful | 72 | | 1 | Default error | 73 | | 2 | Self Update | 74 | | 3 | Conflict(s) encountered | 75 | | 4 | Reverted | 76 | 77 | **Examples** 78 | 79 | * Check the current version of Update tool in use on your system 80 | ``` bash 81 | ./wso2update_linux version 82 | ``` 83 | 84 | * Get help on how to use the update command 85 | ``` bash 86 | ./wso2update_linux help check 87 | ``` 88 | 89 | * Update the product to the latest level. You will be prompted to enter WSO2 credentials. 90 | ``` xml 91 | wso2update_linux 92 | Username: user@wso2.com 93 | Password for ‘user@wso2.com’: my_password 94 | ``` 95 | 96 | * Update the product to the latest level by entering WSO2 credentials as arguments. 97 | ``` bash 98 | ./wso2update_linux --username user@wso2.com --password my_password 99 | ``` 100 | 101 | * Use templating to obtain output specific to the type of information that is required. 102 | ``` bash 103 | ./wso2update_linux --template "Added: {{.Added}}, Modified: {{.Modified}}, Removed: {{.Removed}}" 104 | ``` 105 | 106 | * Update the product up to a given level 107 | ``` bash 108 | ./wso2update_linux --level 3.0.0.10 109 | ``` 110 | 111 | * Simulate the update 112 | ``` bash 113 | ./wso2update_linux --dry-run 114 | ``` 115 | 116 | ### [wso2update_ help]() 117 | 118 | **Synopsis** 119 | 120 | ./wso2update_linux help [command] [options] 121 | 122 | **Description** 123 | 124 | Help provides help for any command in the tool. 125 | If Help command is applied with no options and no command, the synopsis of the update command, and a list of updates are printed. 126 | If a command is given, full details for that command is brought up. 127 | 128 | !!! Note 129 | `./wso2update_linux -h` and `./wso2update_linux –-help` commands are identical to `./wso2update_linux help`. 130 | 131 | **Options** 132 | 133 | -v, --verbose 134 | Enable verbose mode. 135 | 136 | **Examples** 137 | 138 | * Get help on how to use the check command 139 | 140 | `` 141 | ./wso2update_linux help check 142 | `` 143 | 144 | 145 | ### [wso2update_ version]() 146 | 147 | **Synopsis** 148 | 149 | ./wso2update_linux version [options] 150 | 151 | **Description** 152 | 153 | Version command prints the Update tool distribution version information such as Update tool version, release date, 154 | operating system, architecture and Go version. 155 | 156 | **Options** 157 | 158 | -v, --verbose 159 | Enable verbose mode. 160 | 161 | **Examples** 162 | 163 | * Get update tool version information. 164 | 165 | `` 166 | ./wso2update_linux version 167 | `` 168 | 169 | ### [wso2update_ check]() 170 | 171 | **Synopsis** 172 | 173 | ./wso2update_linux check [options] 174 | 175 | **Description** 176 | 177 | Checks the availability of new levels for the product. 178 | 179 | Check command detects available new levels for the product and prints the findings. 180 | 181 | **Options** 182 | 183 | -v, --verbose 184 | Enable verbose mode. 185 | 186 | **Examples** 187 | 188 | Check new levels 189 | 190 | ./wso2update_linux check 191 | 192 | ### [wso2update_ current-state]() 193 | 194 | **Synopsis** 195 | 196 | ./wso2update_linux current-state [options] 197 | 198 | **Description** 199 | 200 | Show current state details of the product. 201 | 202 | Current-state command prints the current details of the product. This command retrieves and shows the current level and add hotfixes to the product. 203 | 204 | **Options** 205 | 206 | -v, --verbose 207 | Enable verbose mode. 208 | 209 | **Examples** 210 | 211 | Get the current status of the product 212 | 213 | ./wso2update_linux current-state 214 | 215 | ### [wso2update_ create-update]() 216 | 217 | **Synopsis** 218 | 219 | ./wso2update_linux create-update [options] 220 | 221 | **Description**
222 | `create-update` command produces a zip file containing updates corresponding to an update level range 223 | that is applied to a product in an environment without Internet access. 224 | 225 | **Options** 226 | 227 | -e, --end-level string Ending update level (default "0") 228 | -h, --help Help for create-update 229 | -s, --start-level string Starting update level 230 | -p, --password string Specify your WSO2 account password 231 | -u, --username string Specify your WSO2 account email 232 | -v, --verbose Enable verbose mode 233 | 234 | **Examples** 235 | 236 | Creates a zip file that comprises update level range that is applied to a product. 237 | 238 | ./wso2update_linux create-update 239 | Creates a zip file with defined update level range that is applied to a product. 240 | 241 | ./wso2update_linux create-update -s -e 242 | 243 | ### [wso2update_ apply-update]() 244 | 245 | **Synopsis** 246 | 247 | ./wso2update_linux apply-update [options] 248 | 249 | **Description**
250 | `apply-update` command pointing to the update zip file would facilitate the propagation of updates to a WSO2 product in a lockdown environment. 251 | First apply-update command would ascertain whether the latest version of the update client is being used, if the latest version of the tool is absent the client updates itself. 252 | Thereafter, it would prompt the user for a re-run of apply-update command. 253 | 254 | **Options** 255 | 256 | -b, --backup string Specify updates backup directory 257 | --continue Merge resolved conflicts 258 | --dry-run Simulate the update 259 | -h, --help Help for apply-update 260 | --revert Revert to the previous update level 261 | -v, --verbose Enable verbose mode 262 | --no-backup Skip product backup 263 | 264 | **Examples** 265 | 266 | Executing the `apply-update` command pointing the update zip file location would facilitate receiving updates to the lockdown environment. 267 | 268 | ./wso2update_linux apply-update 269 | 270 | Note: if you are faced with an `unknown command "apply-update" for "wso2update"` error while applying updates offline, [Click here](../../updates/faq/#what-should-you-do-if-you-get-anunknown-command-apply-update-for-wso2update-error-while-applying-updates-offline) 271 | 272 | ### [wso2update_ apply-hotfix]() 273 | 274 | **Synopsis** 275 | 276 | ./wso2update_linux apply-hotfix [options] 277 | 278 | 279 | **Description** 280 | 281 | Apply an available hotfix. 282 | 283 | Apply-hotfix command applies an available hotfix to the product distribution. This path should be pointed to a `.zip` 284 | file that contains a WSO2 provided hotfix. 285 | 286 | 287 | !!! Note 288 | That a Hotfix cannot be applied when an update is taken immediately before taking a Hotfix. 289 | 290 | **Options** 291 | 292 | -v, --verbose 293 | Enable verbose mode. 294 | --offline 295 | Apply hotfix offline 296 | 297 | 298 | **Examples** 299 | 300 | Apply a hotfix to the product 301 | 302 | ./wso2update_linux apply-hotfix wso2am-3.0.0-abc-hf1.zip 303 | 304 | ### [wso2update_ revert-hotfix]() 305 | 306 | **Name** 307 | 308 | wso2update_linux revert-hotfix - Revert most recently applied hotfix. 309 | 310 | **Synopsis** 311 | 312 | ./wso2update_linux revert-hotfix [options] 313 | 314 | **Description** 315 | 316 | Revert-hotfix command reverts the most recently applied hotfix and any configuration that you may have changed while the newest hotfix is installed to the product distribution. 317 | 318 | **Options** 319 | 320 | -v, --verbose 321 | Enable verbose mode. 322 | 323 | **Examples** 324 | 325 | Revert the previously applied hotfix 326 | 327 | ./wso2update_linux revert-hotfix 328 | 329 | ### [wso2update_ create-docker]() 330 | 331 | `create-docker` is used to build a docker image of the product, which will be created along with the applied updates and hotfixes, that will be run in a test environment 332 | prior to applying the same to a production environment. 333 | 334 | **Synopsis** 335 | 336 | ./wso2update_linux create-docker [Options] 337 | 338 | **Examples** 339 | 340 | ./wso2update_linux create-docker [Options] 341 | 342 | !!! Note 343 | Open a terminal and run the following command(s) as the root user. 344 | 345 | **Options** 346 | 347 | -h, --help help for create-docker 348 | --os string Base OS of the Docker image (default "alpine") 349 | -p, --password string Specify your WSO2 account password 350 | -t, --tag string Value the created image should be tagged with(default "alpine") 351 | 352 | --trial-subscription Continue with a trial subscription 353 | -u, --username string Specify your WSO2 account email 354 | -v, --verbose Enable verbose mode 355 | 356 | Refer our [Webinar on Updates 2.0](https://youtu.be/Z2XeRhzkdpI?t=1050) to witness how you could receive updates with WSO2 Updates 2.0 357 | -------------------------------------------------------------------------------- /en/docs/updates/update-tool-setup-usage-guide.md: -------------------------------------------------------------------------------- 1 | ### Options 2 | The following options can be used with the Update Tool setup scripts. 3 | 4 | |
**MacOS/Linux**
|
**Windows**
|**Description** | 5 | | --------------- | --------------- | ----------------------------------------------------------------------------- | 6 | | `-h, --help` | `-h, -Help` | Displays the help message and exits. | 7 | | `-v, --verbose` | `-v, -Verbose` | Enable verbose output. This option is useful for debugging purposes. | 8 | | `-a, --all` | `-a, -All` | Fetch all the available Update Tool binaries compatible with the product. | 9 | | `-c, --clean` | `-c, -Clean` | Remove all instances of Update Tool binaries from the product pack. | 10 | | `--force-clean` | `-ForceClean` | Forcefully remove all instances of Update Tool binaries from the product pack. (i.e. without user prompt) | 11 | 12 | ### Example Usage 13 | 14 | 1. Set up the Update Tool for the current OS and architecture. 15 | 16 | ```bash tab='Linux' 17 | $ ./update_tool_setup.sh 18 | ``` 19 | 20 | ```bash tab='MacOS' 21 | $ ./update_tool_setup.sh 22 | ``` 23 | 24 | ```console tab='Windows' 25 | $ .\update_tool_setup.ps1 26 | ``` 27 | 28 | 2. Enable verbose mode and set up the Update Tool for all OSs and architectures supported by the product. 29 | 30 | ```bash tab='Linux' 31 | $ ./update_tool_setup.sh -v -a 32 | ``` 33 | 34 | ```bash tab='MacOS' 35 | $ ./update_tool_setup.sh -v -a 36 | ``` 37 | 38 | ```console tab='Windows' 39 | $ .\update_tool_setup.ps1 -v -a 40 | ``` 41 | 42 | 3. Remove all instances of Update Tool binaries with user confirmation prompt. 43 | 44 | ```bash tab='Linux' 45 | $ ./update_tool_setup.sh -c 46 | ``` 47 | 48 | ```bash tab='MacOS' 49 | $ ./update_tool_setup.sh -c 50 | ``` 51 | 52 | ```console tab='Windows' 53 | $ .\update_tool_setup.ps1 -c 54 | ``` 55 | 56 | 4. Forcefully remove all instances of Update Tool binaries without user confirmation prompt. 57 | 58 | ```bash tab='Linux' 59 | $ ./update_tool_setup.sh --force-clean 60 | ``` 61 | 62 | ```bash tab='MacOS' 63 | $ ./update_tool_setup.sh --force-clean 64 | ``` 65 | 66 | ```console tab='Windows' 67 | $ .\update_tool_setup.ps1 -ForceClean 68 | ``` 69 | -------------------------------------------------------------------------------- /en/docs/updates/update-tool.md: -------------------------------------------------------------------------------- 1 | ## What is the Update Tool? 2 | 3 | The Update Tool is a CLI distribution for Linux, MacOS and Windows distributions that streamlines updating WSO2 products. When you run The Update Tool, it will automatically download and install the latest updates for your WSO2 products. It will also take a backup of your current installation before updating it. 4 | 5 | If you have not taken updates using WSO2 Updates, we recommend referring the [new user page](../new-user/) for detailed instructions and information on how to proceed. 6 | 7 | !!! tip "Before you begin" 8 | - Before you run the Update Tool, **stop the product pack from running**. 9 | - If you have symbolic links (also known as symlinks) in the product pack, back up the original files as they could be modified during the update. 10 | - The updates commands should be performed in the terminal under the folder path of `/bin` 11 | - You may need to run the relevant update command twice. The first time you execute `./wso2update_`, the Update Tool will update itself. The second time you execute `./wso2update_` will update the product pack. 12 | 13 | !!! important 14 | The Update Tool is compatible with AMD64 (x86-64) and ARM64 (AArch64)* architectures, and there are six separate binaries for Windows, Linux, and MacOS and for each architecture. 15 | If your runtime environment isn't one of the these options, we recommend you keep a builder machine, run the Update Tool in the builder machine, and ship the updated packs to your runtime environment. 16 | 17 | _* Refer to the Note in the [ARM64 (AArch64) systems](#arm64-aarch64-systems) section below._ 18 | 19 | 20 | 21 | ### Update Commands for OS 22 | 23 | ##### AMD64 (x86-64) systems 24 | ```bash tab='Linux' 25 | $ ./wso2update_linux 26 | ``` 27 | 28 | ```bash tab='MacOS' 29 | $ ./wso2update_darwin 30 | ``` 31 | 32 | ```console tab='Windows' 33 | $ ./wso2update_windows.exe 34 | ``` 35 | 36 | ##### ARM64 (AArch64) systems 37 | 38 | !!! note 39 | The ARM64 (AArch64) architecture supported Update Tools are only available in **ARM64 compatible products**, which ships with the [Update Tool setup scripts](../set-up-update-tool/). 40 | 41 | ```bash tab='Linux' 42 | $ ./wso2update_linux_arm64 43 | ``` 44 | 45 | ```bash tab='MacOS' 46 | $ ./wso2update_darwin_arm64 47 | ``` 48 | 49 | ```console tab='Windows' 50 | $ ./wso2update_windows_arm64.exe 51 | ``` 52 | 53 | There are many features of the WSO2 Updates Tool: 54 | 55 | - The Update Tool updates the customized product distribution while merging the configurations and customized artifacts. 56 | - The Update Tool has the capability to update itself automatically. If the update tool has been self updated, command 57 | returns with `exit code 2`. 58 | - The Update Tool takes backups of the current pack before performing updates. These backups are used when reverting the 59 | pack to the previous state. 60 | 61 | Watch our [Webinar on Updates 2.0](https://youtu.be/Z2XeRhzkdpI?t=1050) to witness how you could receive updates with WSO2 Updates 2.0 62 | -------------------------------------------------------------------------------- /en/docs/updates/updates-portal.md: -------------------------------------------------------------------------------- 1 | 2 | WSO2 Update portal is also called 'WSO2 Updates Information Portal'. 3 | It is a UI presentation provisioned to all WSO2 users to visualize a cluster of information.
4 | Accessing the Updates Portal is easy. It requires you to be a WSO2 user to access the portal .
5 | Follow the below steps:
6 | 1. Sign in to the [Updates Portal](https://support.wso2.com/).
7 | 2. Enter your WSO2 user credentials and click on the 'Sign In' button.
8 | 3. The page will be directed to the 'WSO2 Updates Information Portal'.
9 | 10 | Main benefits that users would receive by using the Updates Portal are described below: 11 | 12 | * You would receive a comprehensive set of details of the Updates available, updates already installed, and your last updated date.
13 | * Update Levels for a specific product can be easily searched, and the user is able to refer descriptions and instructions related to a specific update.
14 | * It is feasible to access update details in the form of a comprehensive report and subsequently print it for future reference. Or disseminate the information to other teams within the organization.This approach ensures the availability of a detailed record of the updates, facilitating convenient retrieval of information when necessary.
15 | 16 | Learn how to recover reports by clicking the [FAQ section](../../updates/faq/#how-can-you-print-update-information-by-accessing-the-updates-portal/). -------------------------------------------------------------------------------- /en/docs/updates/using-wso2-docker-images.md: -------------------------------------------------------------------------------- 1 | ### Image Tagging with WSO2 Updates 2.0 2 | 3 | All the Docker images packaging basic Updates for the relevant product profiles (except Hotfixes) are hosted in [WSO2 private Docker registry](https://docker.wso2.com/). 4 | The docker images in the Docker Private Registry does stay in a special tagging format
5 | 6 | `` 7 | {WSO2_PRODUCT_VERSION}.{UPDATE_LEVEL}-{OS_PLATFORM} 8 | `` 9 | 10 | WSO2_PRODUCT_VERSION : displays the product version.
11 | 12 | UPDATE_LEVEL : displays update level.
13 | 14 | OS_PLATFORM : OS platform is shown (Images created for alpine and centos is shown as '-alpine' and '-centos' respectively. But Linux Ubuntu images are the default base OS and are not tagged specifically)
15 | 16 | For example, if WSO2 API Manager version 3.2.0 has a product Update level of 10, the relevant Alpine Linux based container image will include the following tags: 17 | 18 | `` 19 | apim.3.2.0.10-alpine 20 | `` 21 | 22 | It's good to know the difference between unique and special tags used in the updated docker images: 23 | lets take the same example - apim.3.2.0.10-alpine 24 | 25 | WSO2_PRODUCT_VERSION : apim.3.2.0
26 | UPDATE_LEVEL: 10
27 | OS_PLATFORM : alpine
28 | 29 | According to the above example update level of this docker image is 10, which is a unique tag getting you to a specific update level. A special update tag 0 can also be used to stay on the latest update level. 30 | 31 | 32 | 33 | 34 | 35 | 45 | -------------------------------------------------------------------------------- /en/docs/updates/whats-new.md: -------------------------------------------------------------------------------- 1 | 2 | The new updates model has several features that enhance the user experience. Below is a list of the key benefits of WSO2 Updates 2.0: 3 | 4 | * `Hotfixes` deliver quick fixes to customers for incidents. 5 | * "Update-levels" offer a streamlined approach for monitoring and effectively conveying the progress of your updates. 6 | * Significant reduction in time when downloading updates. 7 | * Updates can be made using single commands. 8 | * Aligns with current standards and protocols. 9 | -------------------------------------------------------------------------------- /en/docs/updates/wum-decommission.md: -------------------------------------------------------------------------------- 1 | Following is the impending decommission plan for WUM/In-Place tool. WSO2 2 | recommends all users to shift to the new WSO2 Updates 2.0 model to alleviate from future updates challenges. 3 |
4 | 5 | 6 | 7 | 8 | 9 | 19 | 20 | Listed below is the WSO2 Updates Release plan in detail 21 | 22 | | **Dates** | **Details** | 23 | |---------------------- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 24 | | **7th April 2021** | Announcement to all users stating the 'WUM/In-place decommission plan'. Users are able to get updates from WUM/In-place and Updates 2.0.
25 | | **7th May
2021
** | WSO2 Updates 2.0 receive priority to disperse updates over WUM/In-place. Users of Updates 2.0 receive updates sooner.
26 | | **7th June 2021** | Initial decommission date of WUM/In-place. However, this date was extended for user convenience. WUM/In-place users are advised to migrate to Updates 2.0 soon.
27 | | **7th August 2021** | Extended time given to WUM/In-place users to migrate to Updates 2.0, After this day users are able to run the WUM/In-place but there won't be updates given using WUM/In-place. Updates are solely delivered using Updates 2.0.
28 | | **7th March 2023** | WUM/In-place tool is decommissioned completely.
29 | -------------------------------------------------------------------------------- /en/mkdocs.yml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. 2 | # 3 | # WSO2 Inc. licenses this file to you under the Apache License, 4 | # Version 2.0 (the "License"); you may not use this file except 5 | # in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, 11 | # software distributed under the License is distributed on an 12 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 13 | # KIND, either express or implied. See the License for the 14 | # specific language governing permissions and limitations 15 | # under the License. 16 | 17 | # Project information 18 | site_name: WSO2 Updates 2.0 Documentation 19 | site_description: Documentation for WSO2 Updates 2.0 20 | site_author: WSO2 21 | site_url: https://updates.docs.wso2.com/en/latest/ 22 | 23 | # Repository 24 | repo_name: wso2/docs-updates 25 | repo_url: https://github.com/wso2/docs-updates 26 | edit_uri: https://github.com/wso2/docs-updates/edit/master/en/docs/ 27 | 28 | # Copyright 29 | copyright: WSO2 Updates 2.0 - Documentation 30 | 31 | # Configuration 32 | theme: material 33 | theme: 34 | name: material 35 | palette: 36 | primary: deep-orange 37 | accent: deep-orange 38 | custom_dir: theme/material 39 | logo: images/logo.svg 40 | favicon: images/favicon.png 41 | highlightjs: true 42 | feature: 43 | tabs: true 44 | language: 'en' 45 | 46 | # Navigation 47 | nav: 48 | - 'Home': index.md 49 | - Updates : 50 | - Get Started : 51 | - 'Overview': 'updates/overview.md' 52 | - 'New to WSO2 Updates': 'updates/new-user.md' 53 | - 'Set Up the Update Tool': 'updates/set-up-update-tool.md' 54 | # - 'Finding the update tool' : 'updates/finding-the-update-tool.md' 55 | # - 'Migrating to Updates 2.0' : 'updates/migrating-to-updates2.0.md' 56 | - 'Whats new in WSO2 Updates' : 'updates/whats-new.md' 57 | - How to Update : 58 | - 'Using the Update Tool': 'updates/update-tool.md' 59 | - 'Useful Update Commands': 'updates/update-commands.md' 60 | - 'Resolving Conflicts': 'updates/resolve-conflicts.md' 61 | - Using Docker Images: 62 | - Using Docker images to receive Updates: 'updates/how-to-use-docker-images-to-receive-updates.md' 63 | - Docker image tags with Updates 2.0: 'updates/using-wso2-docker-images.md' 64 | - Creating Custom Docker images: 'updates/customized-dockerfile.md' 65 | - Continuous Update : 66 | - 'Simple Setup': 'updates/continuous-update.md' 67 | - 'Advance Setup': 'updates/advance-continuous-update.md' 68 | - 'Hotfixes': 'updates/hotfixes.md' 69 | - 'Updates Portal': 'updates/updates-portal.md' 70 | - 'Best Practices': 'updates/best-practices.md' 71 | - 'Update Tool Setup Usage Guide': 'updates/update-tool-setup-usage-guide.md' 72 | - 'Troubleshooting Guide': 'updates/troubleshoot.md' 73 | - 'Frequently Asked Questions': 'updates/faq.md' 74 | - 'WUM/In-place Decommission Plan': 'updates/wum-decommission.md' 75 | - 'Reference Page': 'updates/reference.md' 76 | - '': page-not-found.md 77 | 78 | # Extensions 79 | markdown_extensions: 80 | - markdown_include.include: 81 | base_path: docs 82 | - markdown.extensions.admonition 83 | - markdown.extensions.codehilite: 84 | linenums: true 85 | use_pygments: false 86 | - markdown.extensions.def_list 87 | - markdown.extensions.footnotes 88 | - markdown.extensions.meta 89 | - markdown.extensions.toc: 90 | permalink: true 91 | - pymdownx.arithmatex 92 | - pymdownx.betterem: 93 | smart_enable: all 94 | - pymdownx.caret 95 | - pymdownx.critic 96 | - pymdownx.details 97 | - pymdownx.emoji: 98 | emoji_generator: !!python/name:pymdownx.emoji.to_svg 99 | - pymdownx.inlinehilite 100 | - pymdownx.keys 101 | - pymdownx.mark 102 | - pymdownx.smartsymbols 103 | - pymdownx.superfences 104 | - pymdownx.tasklist: 105 | custom_checkbox: true 106 | - pymdownx.tilde 107 | 108 | # Extra 109 | extra_css: 110 | - assets/lib/highlightjs/default.min.css 111 | - assets/css/theme.css 112 | - assets/css/lightbox.css 113 | extra_javascript: 114 | - assets/lib/highlightjs/highlight.min.js 115 | - assets/js/theme.js 116 | - assets/js/lightbox.js 117 | - assets/lib/backtotop/js/util.js 118 | - assets/lib/backtotop/js/main.js 119 | extra: 120 | social: 121 | - type: github 122 | link: https://github.com/wso2 123 | - type: twitter 124 | link: https://twitter.com/wso2 125 | - type: linkedin 126 | link: https://www.linkedin.com/company/wso2 127 | site_version: 2.0.0 128 | -------------------------------------------------------------------------------- /en/requirements.txt: -------------------------------------------------------------------------------- 1 | mkdocs==1.0.4 2 | Pygments==2.5.2 3 | pymdown-extensions==6.2 4 | mkdocs-minify-plugin==0.2.1 5 | mkdocs-markdownextradata-plugin==0.1.1 6 | mkdocs-redirects==1.0.0 7 | pathlib==1.0.1 8 | mkdocs-material==4.5.1 9 | markdown-include==0.5.1 10 | markdown==3.1 11 | mkdocs-redirects==1.0.0 12 | mkdocs-exclude==1.0.2 13 | -------------------------------------------------------------------------------- /en/theme/material/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wso2/docs-updates/3aca8f18b790359d9ea80f2605e35c50ddbff2c6/en/theme/material/images/favicon.png -------------------------------------------------------------------------------- /en/theme/material/images/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 20 | 21 | 25 | 26 | 34 | 38 | 47 | 55 | 60 | 61 | -------------------------------------------------------------------------------- /en/theme/material/main.html: -------------------------------------------------------------------------------- 1 | 18 | 19 | {% extends "base.html" %} 20 | 21 | 22 | 23 | 24 | 25 | {% block styles %} 26 | {{ super() }} 27 | 28 | 29 | 30 | {% endblock %} 31 | 32 | {% block fonts %} 33 | {% if font != false %} 34 | 93 | {% endif %} 94 | {% endblock %} 95 | 96 | {% block site_meta %} 97 | 98 | 99 | {% endblock %} 100 | 101 | 102 | 103 | {% block content %} 104 | {{ super() }} 105 | 106 | 107 | 108 | Top 109 | 110 | 112 | 113 | 121 | 122 | 123 | 124 | 125 | {% endblock %} 126 | 127 | 128 | {% block scripts %} 129 | 130 | {% if lang.t("search.language") != "en" %} 131 | {% set languages = lang.t("search.language").split(",") %} 132 | {% if languages | length and languages[0] != "" %} 133 | {% set path = "assets/javascripts/lunr/" %} 134 | 135 | {% for language in languages | map("trim") %} 136 | {% if language != "en" %} 137 | {% if language == "jp" %} 138 | 139 | {% endif %} 140 | {% if language in ("da", "de", "du", "es", "fi", "fr", "hu", "it", "jp", "no", "pt", "ro", "ru", "sv", "tr") %} 141 | 142 | {% endif %} 143 | {% endif %} 144 | {% endfor %} 145 | {% if languages | length > 1 %} 146 | 147 | {% endif %} 148 | {% endif %} 149 | {% endif %} 150 | 151 | {% for path in config["extra_javascript"] %} 152 | 153 | {% endfor %} 154 | {% endblock %} 155 | 156 | {% block analytics %} 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 171 | 172 | 173 | 181 | 182 | 183 | 184 | 185 | 195 | 196 | 197 | 198 | 199 | {% endblock %} 200 | 201 | 202 | -------------------------------------------------------------------------------- /en/theme/material/partials/footer.html: -------------------------------------------------------------------------------- 1 | {% import "partials/language.html" as lang with context %} 2 | 59 | -------------------------------------------------------------------------------- /en/theme/material/partials/header.html: -------------------------------------------------------------------------------- 1 | 18 | 19 | 88 | -------------------------------------------------------------------------------- /en/theme/material/partials/language/en.html: -------------------------------------------------------------------------------- 1 | {% macro t(key) %}{{ { 2 | "language": "en", 3 | "direction": "ltr", 4 | "clipboard.copy": "Copy to clipboard", 5 | "clipboard.copied": "Copied to clipboard", 6 | "edit.link.title": "Edit this page", 7 | "footer.previous": "Previous", 8 | "footer.next": "Next", 9 | "meta.comments": "Comments", 10 | "meta.source": "Source", 11 | "search.language": "en", 12 | "search.pipeline.stopwords": true, 13 | "search.pipeline.trimmer": true, 14 | "search.placeholder": "Search", 15 | "search.result.placeholder": "Type to start searching", 16 | "search.result.none": "No matching documents", 17 | "search.result.one": "1 matching document", 18 | "search.result.other": "# matching documents", 19 | "search.tokenizer": "[\s\-]+", 20 | "skip.link.title": "Skip to content", 21 | "source.link.title": "Go to repository", 22 | "toc.title": "On this page" 23 | }[key] }}{% endmacro %} 24 | -------------------------------------------------------------------------------- /en/theme/material/partials/nav-item.html: -------------------------------------------------------------------------------- 1 | {% set class = "md-nav__item" %} 2 | {% if nav_item.active %} 3 | {% set class = "md-nav__item md-nav__item--active" %} 4 | {% endif %} 5 | {% if nav_item.children %} 6 |
  • 7 | {% if nav_item.active %} 8 | 9 | {% else %} 10 | 11 | {% endif %} 12 | 15 | 28 |
  • 29 | {% elif nav_item == page %} 30 |
  • 31 | {% set toc_ = page.toc %} 32 | 33 | {% if toc_ | first is defined and "\x3ch1 id=" in page.content %} 34 | {% set toc_ = (toc_ | first).children %} 35 | {% endif %} 36 | {% if toc_ | first is defined %} 37 | 40 | {% endif %} 41 | 42 | {{ nav_item.title }} 43 | 44 | {% if toc_ | first is defined %} 45 | {% include "partials/toc.html" %} 46 | {% endif %} 47 |
  • 48 | {% else %} 49 |
  • 50 | 51 | {{ nav_item.title }} 52 | 53 |
  • 54 | {% endif %} 55 | -------------------------------------------------------------------------------- /en/theme/material/partials/nav.html: -------------------------------------------------------------------------------- 1 | 26 | -------------------------------------------------------------------------------- /en/theme/material/partials/tabs-item.html: -------------------------------------------------------------------------------- 1 | {% if nav_item.is_homepage %} 2 |
  • 3 | {% if not page.ancestors | length and nav | selectattr("url", page.url) %} 4 | 5 | 6 | 7 | {% else %} 8 | 9 | 10 | 11 | {% endif %} 12 |
  • 13 | {% elif nav_item.children and nav_item.children | length > 0 %} 14 | {% set title = title | default(nav_item.title) %} 15 | {% if (nav_item.children | first).children %} 16 | {% set nav_item = nav_item.children | first %} 17 | {% include "partials/tabs-item.html" %} 18 | {% else %} 19 |
  • 20 | {% if nav_item.active %} 21 | 22 | {{ title }} 23 | 24 | {% else %} 25 | 26 | {{ title }} 27 | 28 | {% endif %} 29 |
  • 30 | {% endif %} 31 | {% endif %} 32 | -------------------------------------------------------------------------------- /en/theme/material/partials/tabs.html: -------------------------------------------------------------------------------- 1 | {% set class = "md-tabs" %} 2 | {% if page.ancestors | length > 0 %} 3 | {% set class = "md-tabs md-tabs--active" %} 4 | {% endif %} 5 | 23 | -------------------------------------------------------------------------------- /en/theme/material/partials/toc.html: -------------------------------------------------------------------------------- 1 | {% import "partials/language.html" as lang with context %} 2 | 36 | -------------------------------------------------------------------------------- /en/theme/material/templates/2-column.html: -------------------------------------------------------------------------------- 1 | 18 | 19 | {% extends "base.html" %} 20 | 21 | {% block styles %} 22 | {{ super() }} 23 | 32 | {% endblock %} 33 | -------------------------------------------------------------------------------- /en/theme/material/templates/home-page.html: -------------------------------------------------------------------------------- 1 | 18 | 19 | {% extends "main.html" %} 20 | 21 | {% block styles %} 22 | {{ super() }} 23 | 52 | {% endblock %} 53 | -------------------------------------------------------------------------------- /en/theme/material/templates/no-nav.html: -------------------------------------------------------------------------------- 1 | 18 | 19 | {% extends "base.html" %} 20 | 21 | {% block styles %} 22 | {{ super() }} 23 | 40 | {% endblock %} 41 | 42 | {% block site_nav %}{% endblock %} 43 | 44 | {% block content %} 45 | {{ page.content }} 46 | {% block source %} 47 | {% if page and page.meta and page.meta.source %} 48 |

    {{ lang.t("meta.source") }}

    49 | {% set repo = config.repo_url %} 50 | {% if repo | last == "/" %} 51 | {% set repo = repo[:-1] %} 52 | {% endif %} 53 | {% set path = page.meta.path | default([""]) %} 54 | {% set file = page.meta.source %} 55 | 57 | {{ file }} 58 | 59 | {% endif %} 60 | {% endblock %} 61 | {% endblock %} 62 | -------------------------------------------------------------------------------- /en/theme/material/templates/single-column.html: -------------------------------------------------------------------------------- 1 | 18 | 19 | {% extends "main.html" %} 20 | 21 | {% block styles %} 22 | {{ super() }} 23 | 37 | {% endblock %} 38 | -------------------------------------------------------------------------------- /issue_template.md: -------------------------------------------------------------------------------- 1 | **Description:** 2 | 3 | 4 | **Suggested Labels:** 5 | 6 | 7 | **Suggested Assignees:** 8 | 9 | 10 | **Affected Product Version:** 11 | 12 | **OS, DB, other environment details and versions:** 13 | 14 | **Steps to reproduce:** 15 | 16 | 17 | **Related Issues:** 18 | -------------------------------------------------------------------------------- /pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Purpose 2 | > Describe the problems, issues, or needs driving this feature/fix and include links to related issues in the following format: Resolves issue1, issue2, etc. 3 | 4 | ## Goals 5 | > Describe the solutions that this feature/fix will introduce to resolve the problems described above 6 | 7 | ## Approach 8 | > Describe how you are implementing the solutions. Include an animated GIF or screenshot if the change affects the UI (email documentation@wso2.com to review all UI text). Include a link to a Markdown file or Google doc if the feature write-up is too long to paste here. 9 | 10 | ## User stories 11 | > Summary of user stories addressed by this change> 12 | 13 | ## Release note 14 | > Brief description of the new feature or bug fix as it will appear in the release notes 15 | 16 | ## Documentation 17 | > Link(s) to product documentation that addresses the changes of this PR. If no doc impact, enter “N/A” plus brief explanation of why there’s no doc impact 18 | 19 | ## Training 20 | > Link to the PR for changes to the training content in https://github.com/wso2/WSO2-Training, if applicable 21 | 22 | ## Certification 23 | > Type “Sent” when you have provided new/updated certification questions, plus four answers for each question (correct answer highlighted in bold), based on this change. Certification questions/answers should be sent to certification@wso2.com and NOT pasted in this PR. If there is no impact on certification exams, type “N/A” and explain why. 24 | 25 | ## Marketing 26 | > Link to drafts of marketing content that will describe and promote this feature, including product page changes, technical articles, blog posts, videos, etc., if applicable 27 | 28 | ## Automation tests 29 | - Unit tests 30 | > Code coverage information 31 | - Integration tests 32 | > Details about the test cases and coverage 33 | 34 | ## Security checks 35 | - Followed secure coding standards in http://wso2.com/technical-reports/wso2-secure-engineering-guidelines? yes/no 36 | - Ran FindSecurityBugs plugin and verified report? yes/no 37 | - Confirmed that this PR doesn't commit any keys, passwords, tokens, usernames, or other secrets? yes/no 38 | 39 | ## Samples 40 | > Provide high-level details about the samples related to this feature 41 | 42 | ## Related PRs 43 | > List any other related PRs 44 | 45 | ## Migrations (if applicable) 46 | > Describe migration steps and platforms on which migration has been tested 47 | 48 | ## Test environment 49 | > List all JDK versions, operating systems, databases, and browser/versions on which this feature/fix was tested 50 | 51 | ## Learning 52 | > Describe the research phase and any blog posts, patterns, libraries, or add-ons you used to solve the problem. --------------------------------------------------------------------------------