Merge pull request #617 from mwhudson/subiquity-controller

make all subiquity controllers used inherit from SubiquityController
This commit is contained in:
Michael Hudson-Doyle 2019-12-20 11:44:21 +13:00 committed by GitHub
commit b1fb40507f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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, run_in_thread,
schedule_task, schedule_task,
) )
from subiquitycore.controller import NoUIController
from subiquity.controller import NoUIController
log = logging.getLogger('subiquity.controllers.error') log = logging.getLogger('subiquity.controllers.error')

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -85,11 +85,6 @@ class BaseController(ABC):
running. 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): def serialize(self):
return None return None
@ -154,12 +149,3 @@ class RepeatedController(BaseController):
def cancel(self): def cancel(self):
self.orig.cancel() self.orig.cancel()
class NoUIController(BaseController):
def start_ui(self):
raise Skip
def cancel(self):
pass