| Server IP : 167.99.224.18 / Your IP : 216.73.216.136 Web Server : Apache/2.4.41 (Ubuntu) System : Linux wordpress-ubuntu-s-1vcpu-1gb-nyc1-01 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.0.25 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/lib/python3/dist-packages/uaclient/entitlements/ |
Upload File : |
from typing import Optional, Tuple # noqa: F401
from uaclient import event_logger, messages, system, util
from uaclient.entitlements import repo
from uaclient.entitlements.base import IncompatibleService
from uaclient.types import ( # noqa: F401
MessagingOperations,
MessagingOperationsDict,
StaticAffordance,
)
event = event_logger.get_event_logger()
REALTIME_KERNEL_DOCS_URL = "https://ubuntu.com/realtime-kernel"
class RealtimeKernelEntitlement(repo.RepoEntitlement):
name = "realtime-kernel"
title = "Real-Time Kernel"
description = "Beta-version Ubuntu Kernel with PREEMPT_RT patches"
help_doc_url = REALTIME_KERNEL_DOCS_URL
repo_key_file = "ubuntu-advantage-realtime-kernel.gpg"
is_beta = True
apt_noninteractive = True
supports_access_only = True
def _check_for_reboot(self) -> bool:
"""Check if system needs to be rebooted."""
reboot_required = system.should_reboot(
installed_pkgs=set(self.packages),
installed_pkgs_regex=set(["linux-.*-realtime"]),
)
event.needs_reboot(reboot_required)
return reboot_required
@property
def incompatible_services(self) -> Tuple[IncompatibleService, ...]:
from uaclient.entitlements.fips import (
FIPSEntitlement,
FIPSUpdatesEntitlement,
)
from uaclient.entitlements.livepatch import LivepatchEntitlement
return (
IncompatibleService(
FIPSEntitlement, messages.REALTIME_FIPS_INCOMPATIBLE
),
IncompatibleService(
FIPSUpdatesEntitlement,
messages.REALTIME_FIPS_UPDATES_INCOMPATIBLE,
),
IncompatibleService(
LivepatchEntitlement, messages.REALTIME_LIVEPATCH_INCOMPATIBLE
),
)
@property
def static_affordances(self) -> Tuple[StaticAffordance, ...]:
return (
(
messages.REALTIME_ERROR_INSTALL_ON_CONTAINER,
lambda: system.is_container(),
False,
),
)
@property
def messaging(
self,
) -> MessagingOperationsDict:
pre_enable = None # type: Optional[MessagingOperations]
if not self.access_only:
pre_enable = [
(
util.prompt_for_confirmation,
{
"msg": messages.REALTIME_BETA_PROMPT,
"assume_yes": self.assume_yes,
"default": True,
},
)
]
return {
"pre_enable": pre_enable,
"pre_disable": [
(
util.prompt_for_confirmation,
{
"msg": messages.REALTIME_PRE_DISABLE_PROMPT,
"assume_yes": self.assume_yes,
},
)
],
}