subiquity/system_setup/models/system_setup.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

82 lines
2.8 KiB
Python
Raw Normal View History

2021-07-02 08:26:21 +00:00
# Copyright 2015 Canonical, Ltd.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3.
2021-07-02 08:26:21 +00:00
#
# 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 General Public License for more details.
2021-07-02 08:26:21 +00:00
#
# You should have received a copy of the GNU General Public License
2021-07-02 08:26:21 +00:00
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import asyncio
import functools
2021-07-02 08:26:21 +00:00
import logging
from subiquity.models.identity import IdentityModel
from subiquity.models.locale import LocaleModel
from subiquity.models.subiquity import SubiquityModel
from subiquity.server.types import InstallerChannels
from .wslconfadvanced import WSLConfigurationAdvancedModel
from .wslconfbase import WSLConfigurationBaseModel
from .wslsetupoptions import WSLSetupOptionsModel
2021-07-02 08:26:21 +00:00
log = logging.getLogger("system_setup.models.system_setup")
2021-07-02 08:26:21 +00:00
HOSTS_CONTENT = """\
127.0.0.1 localhost
127.0.1.1 {hostname}
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
"""
2021-08-12 14:31:27 +00:00
2021-07-02 08:26:21 +00:00
class SystemSetupModel(SubiquityModel):
"""The overall model for subiquity."""
target = "/"
def __init__(self, root, hub, install_model_names, postinstall_model_names):
2021-07-02 08:26:21 +00:00
# Parent class init is not called to not load models we don't need.
self.root = root
if root != "/":
self.target = root
self.chroot_prefix = []
2021-07-02 08:26:21 +00:00
self.packages = []
self.userdata = {}
self.locale = LocaleModel(self.chroot_prefix)
self.wslsetupoptions = WSLSetupOptionsModel()
2021-07-02 08:26:21 +00:00
self.identity = IdentityModel()
self.network = None
self.wslconfbase = WSLConfigurationBaseModel()
self.wslconfadvanced = WSLConfigurationAdvancedModel()
2021-07-02 08:26:21 +00:00
2021-08-25 02:56:07 +00:00
self._confirmation = asyncio.Event()
self._confirmation_task = None
2021-07-02 08:26:21 +00:00
2021-08-17 09:50:29 +00:00
self._configured_names = set()
self._install_model_names = install_model_names
self._postinstall_model_names = postinstall_model_names
self._cur_install_model_names = install_model_names.default_names
self._cur_postinstall_model_names = postinstall_model_names.default_names
2021-08-25 02:56:07 +00:00
self._install_event = asyncio.Event()
self._postinstall_event = asyncio.Event()
all_names = set()
all_names.update(install_model_names.all())
all_names.update(postinstall_model_names.all())
for name in all_names:
hub.subscribe(
(InstallerChannels.CONFIGURED, name),
functools.partial(self._configured, name),
)