Merge ~hloeung/juju-upgrader:master into juju-upgrader:master

Proposed by Haw Loeung
Status: Merged
Approved by: Haw Loeung
Approved revision: 1fe22e2a852fe2067ce47dec5acdd3672df03561
Merged at revision: 507e9f6d95bb245b288fbe83dbf4985cd88e1a42
Proposed branch: ~hloeung/juju-upgrader:master
Merge into: juju-upgrader:master
Diff against target: 64 lines (+19/-3)
2 files modified
juju-upgrader (+10/-2)
juju_utils.py (+9/-1)
Reviewer Review Type Date Requested Status
Thomas Cuthbert (community) Approve
Canonical IS Reviewers Pending
Review via email: mp+383382@code.launchpad.net

Commit message

Default to upgrade all models and pause after a bunch done

We ensure _all_ models are upgraded rather than having to rely on the operator to remember to specify --percent=100. The --percent option was added to handle larger controllers with important models, this pause achieves the same thing with staggering model upgrades.

To post a comment you must log in.
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

This merge proposal is being monitored by mergebot. Change the status to Approved to merge.

Revision history for this message
Thomas Cuthbert (tcuthbert) wrote :

LGTM +1

review: Approve
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

Change successfully merged at revision 507e9f6d95bb245b288fbe83dbf4985cd88e1a42

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/juju-upgrader b/juju-upgrader
2index 878349b..7de4fad 100755
3--- a/juju-upgrader
4+++ b/juju-upgrader
5@@ -170,8 +170,8 @@ def parse_args():
6 parser.add_argument(
7 "--percent",
8 type=float,
9- default=15,
10- help="Attempt upgrades on a maximum of PERCENT percent of the non-empty models. (default: 15) "
11+ default=100,
12+ help="Attempt upgrades on a maximum of PERCENT percent of the non-empty models. (default: 100) "
13 "Has no effect on empty models, which are always upgraded.",
14 )
15 parser.add_argument(
16@@ -199,6 +199,13 @@ def parse_args():
17 default=False,
18 help="Answer yes to any confirmation prompts. (default: False)",
19 )
20+ parser.add_argument(
21+ "--pause",
22+ action="store_true",
23+ dest='pause',
24+ default=True,
25+ help="Pause between bunch of models. (default: True)",
26+ )
27
28 args = parser.parse_args()
29
30@@ -426,6 +433,7 @@ def juju_upgrader(args, stats):
31 ignore_errors=True,
32 dry_run=args.dry_run,
33 proposed=args.proposed,
34+ pause=args.pause,
35 )
36 not_upgraded = juju_utils.upgrade_models(
37 'healthy',
38diff --git a/juju_utils.py b/juju_utils.py
39index 5043c26..346c8bc 100644
40--- a/juju_utils.py
41+++ b/juju_utils.py
42@@ -65,7 +65,9 @@ def find_model(models, name):
43 return None
44
45
46-def upgrade_models(title, models, version, delay, percent, ignore_errors=False, dry_run=False, proposed=False):
47+def upgrade_models(
48+ title, models, version, delay, percent, ignore_errors=False, dry_run=False, proposed=False, pause=True
49+):
50 if len(models) < 1:
51 return []
52 num_models = len(models)
53@@ -86,6 +88,12 @@ def upgrade_models(title, models, version, delay, percent, ignore_errors=False,
54 progress(' Failed upgrade, return code {}'.format(ret))
55 continue
56 time.sleep(delay)
57+ # Pause upgrade after 40 models.
58+ if pause and index % 40 == 0:
59+ answer = input(r"Continue upgrading more models ('no' to abort)? ")
60+ if answer.lower().startswith('no'):
61+ print('Not continuing with upgrade')
62+ break
63 progress('Attempted upgrade on {} models'.format(index + 1))
64 return skipped
65

Subscribers

People subscribed via source and target branches