Server IP : 195.201.23.43 / Your IP : 3.135.248.144 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 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, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /lib/python3/dist-packages/uaclient/entitlements/ |
Upload File : |
from typing import Any, Dict, Optional, Tuple from uaclient import api, contract, event_logger, messages, system from uaclient.entitlements.entitlement_status import ( CanEnableFailure, CanEnableFailureReason, ) from uaclient.entitlements.repo import RepoEntitlement from uaclient.files.state_files import ( AnboxCloudData, anbox_cloud_credentials_file, ) from uaclient.types import MessagingOperationsDict event = event_logger.get_event_logger() class AnboxEntitlement(RepoEntitlement): name = "anbox-cloud" title = messages.ANBOX_TITLE description = messages.ANBOX_DESCRIPTION help_doc_url = messages.urls.ANBOX_HOME_PAGE help_text = messages.ANBOX_HELP_TEXT repo_key_file = "ubuntu-pro-anbox-cloud.gpg" repo_url_tmpl = "{}" affordance_check_series = True supports_access_only = True origin = "Anbox" @property def messaging(self) -> MessagingOperationsDict: if not self.access_only: return {"post_enable": [messages.ANBOX_RUN_INIT_CMD]} else: return {} def can_enable(self) -> Tuple[bool, Optional[CanEnableFailure]]: ret, reason = super().can_enable() if not ret: return ret, reason if system.is_container() and not self.access_only: return ( False, CanEnableFailure( CanEnableFailureReason.ONLY_ACCESS_ONLY_SUPPORTED, messages.ANBOX_FAIL_TO_ENABLE_ON_CONTAINER, ), ) return True, None def _perform_enable(self, progress: api.ProgressWrapper) -> bool: ret = super()._perform_enable(progress) if not ret: return ret directives = self.entitlement_cfg.get("entitlement", {}).get( "directives", {} ) machine_token = self.cfg.machine_token["machineToken"] client = contract.UAContractClient(self.cfg) anbox_images_machine_access = client.get_resource_machine_access( machine_token, "anbox-images" ) anbox_cloud_data = AnboxCloudData( anbox_images_url=anbox_images_machine_access.get("entitlement", {}) .get("directives", {}) .get("url", ""), anbox_images_resource_token=anbox_images_machine_access.get( "resourceToken", "" ), anbox_cloud_apt_url=directives.get("aptURL", ""), anbox_cloud_apt_token=directives.get("aptKey", ""), ) anbox_cloud_credentials_file.write(anbox_cloud_data) return True def _perform_disable(self, progress: api.ProgressWrapper): super()._perform_disable(progress) anbox_cloud_credentials_file.delete() return True # TODO: remove this function # This is just a placeholder until we can deliver the Anbox # resourceToken from the contracts without relying on the # enableByDefault obligation def _should_enable_by_default( self, obligations: Dict[str, Any], resourceToken: Optional[str] ) -> bool: return FalsePrivate