__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
from uaclient import (
config,
daemon,
entitlements,
event_logger,
exceptions,
messages,
timer,
util,
)
from uaclient.cli import cli_util
from uaclient.cli.commands import ProArgument, ProArgumentGroup, ProCommand
from uaclient.cli.disable import perform_disable
from uaclient.cli.parser import HelpCategory
from uaclient.files import machine_token, state_files
from uaclient.timer.update_messaging import update_motd_messages
event = event_logger.get_event_logger()
@cli_util.verify_json_format_args
@cli_util.assert_root
@cli_util.assert_attached()
@cli_util.assert_lock_file("pro detach")
def action_detach(args, *, cfg, **kwargs) -> int:
"""Perform the detach action for this machine.
@return: 0 on success, 1 otherwise
"""
ret = _detach(
cfg, assume_yes=args.assume_yes, json_output=(args.format == "json")
)
if ret == 0:
daemon.start()
timer.stop()
event.process_events()
return ret
def _detach(cfg: config.UAConfig, assume_yes: bool, json_output: bool) -> int:
"""Detach the machine from the active Ubuntu Pro subscription,
:param cfg: a ``config.UAConfig`` instance
:param assume_yes: Assume a yes answer to any prompts requested.
In this case, it means automatically disable any service during
detach.
:param json_output: output should be json only
@return: 0 on success, 1 otherwise
"""
to_disable = []
for ent_name in entitlements.entitlements_disable_order(cfg):
try:
ent = entitlements.entitlement_factory(
cfg=cfg,
name=ent_name,
)
except exceptions.EntitlementNotFoundError:
continue
# For detach, we should not consider that a service
# cannot be disabled because of dependent services,
# since we are going to disable all of them anyway
ret, _ = ent.can_disable(ignore_dependent_services=True)
if ret:
to_disable.append(ent)
if to_disable:
event.info(messages.DETACH_WILL_DISABLE.pluralize(len(to_disable)))
for ent in to_disable:
event.info(" {}".format(ent.name))
if not util.prompt_for_confirmation(assume_yes=assume_yes):
return 1
for ent in to_disable:
perform_disable(
ent,
cfg,
json_output=json_output,
assume_yes=assume_yes,
update_status=False,
)
machine_token_file = machine_token.get_machine_token_file(cfg)
machine_token_file.delete()
state_files.delete_state_files()
update_motd_messages(cfg)
event.info(messages.DETACH_SUCCESS)
return 0
detach_command = ProCommand(
"detach",
help=messages.CLI_ROOT_DETACH,
description=messages.CLI_DETACH_DESC,
action=action_detach,
help_category=HelpCategory.OTHER,
argument_groups=[
ProArgumentGroup(
arguments=[
ProArgument(
"--assume-yes",
help=messages.CLI_ASSUME_YES.format(command="detach"),
action="store_true",
),
ProArgument(
"--format",
help=messages.CLI_FORMAT_DESC.format(default="cli"),
action="store",
choices=["cli", "json"],
default="cli",
),
]
)
],
)
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| __init__.py | File | 9.28 KB | 0644 |
|
| api.py | File | 2.4 KB | 0644 |
|
| attach.py | File | 5.48 KB | 0644 |
|
| auto_attach.py | File | 958 B | 0644 |
|
| cli_util.py | File | 8.08 KB | 0644 |
|
| collect_logs.py | File | 1.6 KB | 0644 |
|
| commands.py | File | 3.68 KB | 0644 |
|
| config.py | File | 10.72 KB | 0644 |
|
| cve.py | File | 6.73 KB | 0644 |
|
| cves.py | File | 3.78 KB | 0644 |
|
| detach.py | File | 3.38 KB | 0644 |
|
| disable.py | File | 10.65 KB | 0644 |
|
| enable.py | File | 18.81 KB | 0644 |
|
| fix.py | File | 28.63 KB | 0644 |
|
| formatter.py | File | 8.75 KB | 0644 |
|
| help.py | File | 1.67 KB | 0644 |
|
| parser.py | File | 2.72 KB | 0644 |
|
| refresh.py | File | 2.42 KB | 0644 |
|
| security_status.py | File | 2.79 KB | 0644 |
|
| status.py | File | 2.37 KB | 0644 |
|
| system.py | File | 1.05 KB | 0644 |
|