|
| 1 | +--- |
| 2 | +categories: |
| 3 | + - provisioning |
| 4 | +stability-level: default |
| 5 | +# Specify the Feature Development tracker issue for the feature. |
| 6 | +# This must be an issue tracked in https://github.com/orgs/wildfly/projects/7/views/1. |
| 7 | +# To create a Feature Development tracker issue, go to https://github.com/wildfly/wildfly-proposals/issues/new/choose |
| 8 | +# and select 'Feature Development' |
| 9 | +issue: https://github.com/wildfly/wildfly-proposals/issues/705 |
| 10 | +# Provide the github ids of the members of the feature team, organized by role. |
| 11 | +# Provide a single id for the 'assignee' role. Use a yaml list for the 'sme' and |
| 12 | +# 'outside-perspective' roles, even if there is only one person in a role. |
| 13 | +feature-team: |
| 14 | + developer: Pedro Hos |
| 15 | + sme: |
| 16 | + - Jeff Mesnil |
| 17 | + outside-perspective: |
| 18 | + - Vojtech Salbaba |
| 19 | + - Symone Simpkins |
| 20 | +# This should be blank during initial development of a feature. It may be used |
| 21 | +# after the feature is completed if a subsequent issue is field to track promotion |
| 22 | +# of this feature to a higher stability level |
| 23 | +promoted-by: |
| 24 | +--- |
| 25 | += Add ability to update WildFly to a specific version of a manifest using wildfly-channels. |
| 26 | +:author: Bartosz Spyrko-Smietanko |
| 27 | +:email: bspyrkos@redhat.com |
| 28 | +:toc: left |
| 29 | +:icons: font |
| 30 | +:idprefix: |
| 31 | +:idseparator: - |
| 32 | + |
| 33 | +== Overview |
| 34 | + |
| 35 | +Currently, Prospero update operation always picks the latest available manifest(s) version(s) to update to. Some users might prefer to perform an update to a concrete version that they can pre-test. |
| 36 | + |
| 37 | +This proposal adds a new parameter to the `update perform` and `update prepare` operations that will accept a version of a manifest version. |
| 38 | + |
| 39 | +=== User Stories |
| 40 | + |
| 41 | + - As an admin I want to use a logical or physical manifest version to update the server to a specific version. |
| 42 | + - As an admin I want to be able to perform a downgrade if a specified version is lower than a current version. Such operation should result in a warning that the user has to accept. |
| 43 | + - As an admin I want to be able to perform a downgrade in a non-interactive way by specifying a command-line flag. |
| 44 | + - As an admin I want to be prevented from downgrading a manifest version unless the new version is specified explicitly. |
| 45 | + |
| 46 | + |
| 47 | +==== Nice-to-have: |
| 48 | + - As an admin customer I want to be able to see a list of potential manifest versions I can update (or downgrade to). |
| 49 | + |
| 50 | +== Issue Metadata |
| 51 | + |
| 52 | +=== Related Issues |
| 53 | + |
| 54 | + - https://github.com/wildfly-extras/prospero/issues/754 |
| 55 | + - https://github.com/wildfly/wildfly-proposals/pull/577 |
| 56 | + - https://issues.redhat.com/browse/EAP7-2291 |
| 57 | + |
| 58 | +=== Affected Projects or Components |
| 59 | + |
| 60 | + - https://github.com/wildfly-extras/prospero[Prospero] |
| 61 | + - https://github.com/wildfly-extras/wildfly-installation-manager-api[Installation Manager API] |
| 62 | + - https://github.com/wildfly/wildfly-core[WildFly Core] |
| 63 | + - https://github.com/hal/console[HAL Console] |
| 64 | + |
| 65 | +=== Other Interested Projects |
| 66 | + |
| 67 | +=== Relevant Installation Types |
| 68 | + |
| 69 | +* Traditional standalone server (unzipped or provisioned by Galleon) |
| 70 | +* Managed domain |
| 71 | + |
| 72 | +== Requirements |
| 73 | + |
| 74 | +==== Hard requirements: |
| 75 | +- Add a `--version` parameter to the update operation with values in format `<CHANNEL_NAME>::<VERSION>` |
| 76 | +- If the `--version` parameter is present, the `update perform` and `update prepare` operations use a manifest with this version to provision the server. |
| 77 | +- If the `--version` provided is lower than the current version, the user should be warned and asked to confirm the operation. |
| 78 | +- If the `--version` is used in conjunction with `--yes` flag, the downgrade confirmation is skipped. |
| 79 | +- If a server is subscribed to multiple channels, the customer has to provide versions of all the involved manifests. |
| 80 | +- If the `--version` is not specified and the `update` operation would result in a manifest downgrade, the operation should fail as an error. |
| 81 | +- Above changes need to be available in JBoss CLI and HAL console. |
| 82 | + |
| 83 | +==== Nice-to-have requirements: |
| 84 | +- A new `update list-versions` operation should present a list of possible manifest updates and downgrades. |
| 85 | +- If the channel uses a URL manifest, the user should be able to provide the URL of the new manifest. Note, providing a version for a URL-based channel should be considered an error. |
| 86 | + |
| 87 | +==== Non-requirements: |
| 88 | +- When the server is subscribed to multiple channels, update operation does not verify the compatibility of selected versions. |
| 89 | +- "Fixing" a server to a manifest version - i.e. the update operation *does not* change the channel configuration. If before the update server was subscribed to a `org.wildfly.channels:wildfly`, the version will not be added after the update. |
| 90 | + |
| 91 | +=== Future Work |
| 92 | + |
| 93 | +- Supporting rollback to a logical/physical manifest. |
| 94 | +- __Possibly listing available versions in `update list` operation.__ |
| 95 | + |
| 96 | +== Backwards Compatibility |
| 97 | + |
| 98 | +This change would prevent a downgrade without an explicit `--version` argument. Some users may have used this option, but this is not a recommended use case. |
| 99 | + |
| 100 | +=== Default Configuration |
| 101 | + |
| 102 | +n/a |
| 103 | + |
| 104 | +=== Importing Existing Configuration |
| 105 | + |
| 106 | +n/a |
| 107 | + |
| 108 | +=== Deployments |
| 109 | + |
| 110 | +n/a |
| 111 | + |
| 112 | +=== Interoperability |
| 113 | + |
| 114 | +n/a |
| 115 | + |
| 116 | +== Implementation Plan |
| 117 | + |
| 118 | +=== Logical version resolution |
| 119 | +__TBD__ |
| 120 | + |
| 121 | +== Admin Clients |
| 122 | + |
| 123 | +=== JBoss CLI |
| 124 | + |
| 125 | +The `--version` attribute will have to be added to the installer `update` operation. The behaviour should be the same as described above for Prospero. |
| 126 | + |
| 127 | +If the `list-versions` operation is implemented in Prospero, analogous operation will have to be added to the CLI. |
| 128 | + |
| 129 | +=== Web console |
| 130 | + |
| 131 | +The "Online update" and "Offline using archives" operations will have to be extended by adding a selection box allowing users to choose an Update version. When selected, the updated component list should show components from this update. |
| 132 | + |
| 133 | +== Security Considerations |
| 134 | + |
| 135 | +n/a |
| 136 | + |
| 137 | +[[test_plan]] |
| 138 | +== Test Plan |
| 139 | + |
| 140 | +__Note: Prospero does not support stability levels, therefore this issue need to be considered for default stability level.__ |
| 141 | + |
| 142 | +Unit and integration tests verifying the new functionality will be added in Prospero. Additional tests in WildFly Core will be added to verify command implementation but will not execute real update operations. |
| 143 | + |
| 144 | +The changes do not affect the performance of existing operations, however the mapping of Logical Version of a manifest to a physical one may take longer time. |
| 145 | + |
| 146 | +=== Manual tests: |
| 147 | + |
| 148 | +* Verify the help content for the new parameter is present. |
| 149 | +* Verify the scenarios in *Integration tests* using JBoss CLI and Web Console. |
| 150 | + |
| 151 | +=== Miscellaneous checks: |
| 152 | +n/a |
| 153 | + |
| 154 | +=== Integration tests: |
| 155 | +* Update a server to a certain version ignoring newer, available version |
| 156 | +* Downgrade a server to a specified version |
| 157 | +** verify the flag `--yes` skips the confirmation |
| 158 | +* Update a server subscribed to multiple channels |
| 159 | +** verify that the operation requires all the channel versions to be present. |
| 160 | +* Verify `--version` works both with logical and physical versions. |
| 161 | + |
| 162 | +=== Compatibility tests |
| 163 | +n/a |
| 164 | + |
| 165 | +== Community Documentation |
| 166 | + |
| 167 | +Prospero documentation will describe how to use the new functionality. The new parameter will also be described in the Prospero help page. |
| 168 | + |
| 169 | +The JBoss CLI help information will also be updated with the changes. |
| 170 | + |
| 171 | +Finally, an article on wildfly.org can be published showcasing the ability to update/downgrade a WildFly server. |
| 172 | + |
| 173 | +== Release Note Content |
| 174 | + |
| 175 | +Add an ability to perform an update/downgrade to an arbitrary version of a WildFly channel. |
0 commit comments