Skip to content

Commit 14d9dec

Browse files
committed
Prospero update operation to a specific version
Issue: #705
1 parent d3e1101 commit 14d9dec

File tree

2 files changed

+178
-0
lines changed

2 files changed

+178
-0
lines changed

_data/wildfly-categories.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,6 @@ categories:
135135
- name: WildFly Galleon
136136
id: wf-galleon
137137
description: Provision WildFly with Galleon Feature Packs and Layers
138+
- name: Provisioning
139+
id: provisioning
140+
description: Provisioning tooling including Wildfly Channels and Prospero
Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
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

Comments
 (0)