Add series upgrade support
This commit is contained in:
parent
0d650e2896
commit
e4cfb975aa
|
@ -53,10 +53,13 @@ class OSBaseCharm(CharmBase):
|
||||||
super().__init__(framework, key)
|
super().__init__(framework, key)
|
||||||
self.state.set_default(is_started=False)
|
self.state.set_default(is_started=False)
|
||||||
self.state.set_default(is_paused=False)
|
self.state.set_default(is_paused=False)
|
||||||
|
self.state.set_default(series_upgrade=False)
|
||||||
self.framework.observe(self.on.install, self)
|
self.framework.observe(self.on.install, self)
|
||||||
self.framework.observe(self.on.update_status, self)
|
self.framework.observe(self.on.update_status, self)
|
||||||
self.framework.observe(self.on.pause_action, self)
|
self.framework.observe(self.on.pause_action, self)
|
||||||
self.framework.observe(self.on.resume_action, self)
|
self.framework.observe(self.on.resume_action, self)
|
||||||
|
self.framework.observe(self.on.pre_series_upgrade, self)
|
||||||
|
self.framework.observe(self.on.post_series_upgrade, self)
|
||||||
|
|
||||||
def on_install(self, event):
|
def on_install(self, event):
|
||||||
logging.info("Installing packages")
|
logging.info("Installing packages")
|
||||||
|
@ -70,6 +73,11 @@ class OSBaseCharm(CharmBase):
|
||||||
|
|
||||||
def update_status(self):
|
def update_status(self):
|
||||||
logging.info("Updating status")
|
logging.info("Updating status")
|
||||||
|
if self.state.series_upgrade:
|
||||||
|
self.model.unit.status = BlockedStatus(
|
||||||
|
'Ready for do-release-upgrade and reboot. '
|
||||||
|
'Set complete when finished.')
|
||||||
|
return
|
||||||
if self.state.is_paused:
|
if self.state.is_paused:
|
||||||
self.model.unit.status = MaintenanceStatus(
|
self.model.unit.status = MaintenanceStatus(
|
||||||
"Paused. Use 'resume' action to resume normal service.")
|
"Paused. Use 'resume' action to resume normal service.")
|
||||||
|
@ -96,6 +104,24 @@ class OSBaseCharm(CharmBase):
|
||||||
_svcs.extend(svc)
|
_svcs.extend(svc)
|
||||||
return list(set(_svcs))
|
return list(set(_svcs))
|
||||||
|
|
||||||
|
def on_pre_series_upgrade(self, event):
|
||||||
|
_, messages = os_utils.manage_payload_services(
|
||||||
|
'pause',
|
||||||
|
services=self.services(),
|
||||||
|
charm_func=None)
|
||||||
|
self.state.is_paused = True
|
||||||
|
self.state.series_upgrade = True
|
||||||
|
self.update_status()
|
||||||
|
|
||||||
|
def on_post_series_upgrade(self, event):
|
||||||
|
_, messages = os_utils.manage_payload_services(
|
||||||
|
'resume',
|
||||||
|
services=self.services(),
|
||||||
|
charm_func=None)
|
||||||
|
self.state.is_paused = False
|
||||||
|
self.state.series_upgrade = False
|
||||||
|
self.update_status()
|
||||||
|
|
||||||
def on_pause_action(self, event):
|
def on_pause_action(self, event):
|
||||||
_, messages = os_utils.manage_payload_services(
|
_, messages = os_utils.manage_payload_services(
|
||||||
'pause',
|
'pause',
|
||||||
|
|
Loading…
Reference in New Issue