make all subiquity controllers used inherit from SubiquityController

There is going to be a chunk of subiquity specific functionality coming
for autoinstalls, this gives us somewhere to put it.
This commit is contained in:
Michael Hudson-Doyle 2019-12-18 11:53:58 +13:00
parent df02e85cab
commit cfc38e1c1b
16 changed files with 76 additions and 42 deletions

41
subiquity/controller.py Normal file
View File

@ -0,0 +1,41 @@
# Copyright 2019 Canonical, Ltd.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import logging
from subiquitycore.controller import (
BaseController,
Skip,
)
log = logging.getLogger("subiquity.controller")
class SubiquityController(BaseController):
def configured(self):
"""Let the world know that this controller's model is now configured.
"""
if self.model_name is not None:
self.app.base_model.configured(self.model_name)
class NoUIController(SubiquityController):
def start_ui(self):
raise Skip
def cancel(self):
pass

View File

@ -35,7 +35,8 @@ from subiquitycore.async_helpers import (
run_in_thread,
schedule_task,
)
from subiquitycore.controller import NoUIController
from subiquity.controller import NoUIController
log = logging.getLogger('subiquity.controllers.error')

View File

@ -27,12 +27,12 @@ from subiquitycore.async_helpers import (
schedule_task,
SingleInstanceTask,
)
from subiquitycore.controller import BaseController
from subiquitycore.utils import (
arun_command,
run_command,
)
from subiquity.controller import SubiquityController
from subiquity.controllers.error import ErrorReportKind
from subiquity.models.filesystem import (
align_up,
@ -59,7 +59,7 @@ PREP_GRUB_SIZE_BYTES = 8 * 1024 * 1024 # 8MiB
UEFI_GRUB_SIZE_BYTES = 512 * 1024 * 1024 # 512MiB EFI partition
class FilesystemController(BaseController):
class FilesystemController(SubiquityController):
model_name = "filesystem"

View File

@ -15,14 +15,13 @@
import logging
from subiquitycore.controller import BaseController
from subiquity.controller import SubiquityController
from subiquity.ui.views import IdentityView
log = logging.getLogger('subiquity.controllers.identity')
class IdentityController(BaseController):
class IdentityController(SubiquityController):
model_name = "identity"

View File

@ -38,13 +38,13 @@ from subiquitycore.async_helpers import (
schedule_task,
)
from subiquitycore.context import Status
from subiquitycore.controller import BaseController
from subiquitycore.utils import (
arun_command,
astart_command,
run_command,
)
from subiquity.controller import SubiquityController
from subiquity.controllers.error import ErrorReportKind
from subiquity.ui.views.installprogress import ProgressView
@ -91,7 +91,7 @@ def install_step(label, level=None, childlevel=None):
return decorate
class InstallProgressController(BaseController):
class InstallProgressController(SubiquityController):
def __init__(self, app):
super().__init__(app)

View File

@ -16,15 +16,15 @@
import logging
from subiquitycore.async_helpers import schedule_task
from subiquitycore.controller import BaseController
from subiquity.controller import SubiquityController
from subiquity.models.keyboard import KeyboardSetting
from subiquity.ui.views import KeyboardView
log = logging.getLogger('subiquity.controllers.keyboard')
class KeyboardController(BaseController):
class KeyboardController(SubiquityController):
model_name = "keyboard"
signals = [

View File

@ -22,8 +22,8 @@ from subiquitycore.async_helpers import (
run_in_thread,
SingleInstanceTask,
)
from subiquitycore.controller import BaseController
from subiquity.controller import SubiquityController
from subiquity.ui.views.mirror import MirrorView
log = logging.getLogger('subiquity.controllers.mirror')
@ -36,7 +36,7 @@ class CheckState(enum.IntEnum):
DONE = enum.auto()
class MirrorController(BaseController):
class MirrorController(SubiquityController):
model_name = "mirror"
signals = [

View File

@ -15,8 +15,10 @@
from subiquitycore.controllers.network import NetworkController
from subiquity.controller import SubiquityController
class NetworkController(NetworkController):
class NetworkController(NetworkController, SubiquityController):
def done(self):
self.configured()

View File

@ -16,14 +16,13 @@
import logging
import os
from subiquitycore.controller import BaseController
from subiquity.controller import SubiquityController
from subiquity.ui.views.proxy import ProxyView
log = logging.getLogger('subiquity.controllers.proxy')
class ProxyController(BaseController):
class ProxyController(SubiquityController):
model_name = "proxy"

View File

@ -25,10 +25,13 @@ from subiquitycore.async_helpers import (
SingleInstanceTask,
)
from subiquitycore.controller import (
BaseController,
Skip,
)
from subiquity.controller import (
SubiquityController,
)
log = logging.getLogger('subiquity.controllers.refresh')
@ -39,7 +42,7 @@ class CheckState(enum.IntEnum):
UNAVAILABLE = enum.auto()
class RefreshController(BaseController):
class RefreshController(SubiquityController):
signals = [
('snapd-network-change', 'snapd_network_changed'),

View File

@ -28,7 +28,7 @@ from curtin.reporter.handlers import (
LogHandler,
)
from subiquitycore.controller import NoUIController
from subiquity.controller import NoUIController
class LogHandler(LogHandler):

View File

@ -21,10 +21,13 @@ from subiquitycore.async_helpers import (
schedule_task,
)
from subiquitycore.controller import (
BaseController,
Skip,
)
from subiquity.controller import (
SubiquityController,
)
from subiquity.models.snaplist import SnapSelection
from subiquity.ui.views.snaplist import SnapListView
@ -99,7 +102,7 @@ class SnapdSnapInfoLoader:
return self.tasks[snap]
class SnapListController(BaseController):
class SnapListController(SubiquityController):
model_name = "snaplist"
signals = [

View File

@ -17,9 +17,9 @@ import logging
import subprocess
from subiquitycore.async_helpers import schedule_task
from subiquitycore.controller import BaseController
from subiquitycore import utils
from subiquity.controller import SubiquityController
from subiquity.ui.views.ssh import SSHView
log = logging.getLogger('subiquity.controllers.ssh')
@ -31,7 +31,7 @@ class FetchSSHKeysFailure(Exception):
self.output = output
class SSHController(BaseController):
class SSHController(SubiquityController):
model_name = "ssh"

View File

@ -16,15 +16,14 @@
import logging
import os
from subiquitycore.controller import BaseController
from subiquity.controller import SubiquityController
from subiquity.ui.views import WelcomeView
log = logging.getLogger('subiquity.controllers.welcome')
class WelcomeController(BaseController):
class WelcomeController(SubiquityController):
model_name = "locale"

View File

@ -21,9 +21,10 @@ import shlex
from collections import OrderedDict
from urwid import Text
from subiquitycore.controller import BaseController
from subiquitycore.ui.utils import Color
from subiquitycore.utils import run_command
from subiquity.controller import SubiquityController
from subiquity.ui.views import ZdevView
@ -627,7 +628,7 @@ class ZdevInfo:
return self.type
class ZdevController(BaseController):
class ZdevController(SubiquityController):
def __init__(self, app):
super().__init__(app)

View File

@ -85,11 +85,6 @@ class BaseController(ABC):
running.
"""
def configured(self):
"""Let the world know that this controller's model is now configured.
"""
self.app.base_model.configured(self.model_name)
def serialize(self):
return None
@ -154,12 +149,3 @@ class RepeatedController(BaseController):
def cancel(self):
self.orig.cancel()
class NoUIController(BaseController):
def start_ui(self):
raise Skip
def cancel(self):
pass