CasperSecurity

Current Path : /lib/python3/dist-packages/cloudinit/cmd/
Upload File :
Current File : //lib/python3/dist-packages/cloudinit/cmd/cloud_id.py

#!/usr/bin/env python3

# This file is part of cloud-init. See LICENSE file for license information.

"""Commandline utility to list the canonical cloud-id for an instance."""

import argparse
import json
import sys

from cloudinit.cmd.devel import read_cfg_paths
from cloudinit.cmd.status import RunningStatus, get_status_details
from cloudinit.log import log_util
from cloudinit.sources import METADATA_UNKNOWN, canonical_cloud_id

NAME = "cloud-id"


def get_parser(parser=None):
    """Build or extend an arg parser for the cloud-id utility.

    @param parser: Optional existing ArgumentParser instance representing the
        query subcommand which will be extended to support the args of
        this utility.

    @returns: ArgumentParser with proper argument configuration.
    """
    default_instance_json = read_cfg_paths().get_runpath("instance_data")
    if not parser:
        parser = argparse.ArgumentParser(
            prog=NAME,
            description="Report the canonical cloud-id for this instance",
        )
    parser.add_argument(
        "-j",
        "--json",
        action="store_true",
        default=False,
        help="Report all standardized cloud-id information as json.",
    )
    parser.add_argument(
        "-l",
        "--long",
        action="store_true",
        default=False,
        help="Report extended cloud-id information as tab-delimited string.",
    )
    parser.add_argument(
        "-i",
        "--instance-data",
        type=str,
        default=default_instance_json,
        help=(
            "Path to instance-data.json file. "
            f"Default is {default_instance_json}"
        ),
    )
    return parser


def handle_args(name, args):
    """Handle calls to 'cloud-id' cli.

    Print the canonical cloud-id on which the instance is running.

    @return: 0 on success, 1 on error, 2 on disabled, 3 on cloud-init not run.
    """
    status_details = get_status_details()
    if status_details.running_status == RunningStatus.DISABLED:
        sys.stdout.write("{0}\n".format(status_details.running_status.value))
        return 2
    elif status_details.running_status == RunningStatus.NOT_STARTED:
        sys.stdout.write("{0}\n".format(status_details.running_status.value))
        return 3

    try:
        with open(args.instance_data) as file:
            instance_data = json.load(file)
    except IOError:
        return log_util.error(
            "File not found '%s'. Provide a path to instance data json file"
            " using --instance-data" % args.instance_data
        )
    except ValueError as e:
        return log_util.error(
            "File '%s' is not valid json. %s" % (args.instance_data, e)
        )
    v1 = instance_data.get("v1", {})
    cloud_id = canonical_cloud_id(
        v1.get("cloud_name", METADATA_UNKNOWN),
        v1.get("region", METADATA_UNKNOWN),
        v1.get("platform", METADATA_UNKNOWN),
    )
    if args.json:
        sys.stderr.write("DEPRECATED: Use: cloud-init query v1\n")
        v1["cloud_id"] = cloud_id
        response = json.dumps(  # Pretty, sorted json
            v1, indent=1, sort_keys=True, separators=(",", ": ")
        )
    elif args.long:
        response = "%s\t%s" % (cloud_id, v1.get("region", METADATA_UNKNOWN))
    else:
        response = cloud_id
    sys.stdout.write("%s\n" % response)
    return 0


def main():
    """Tool to query specific instance-data values."""
    parser = get_parser()
    sys.exit(handle_args(NAME, parser.parse_args()))


if __name__ == "__main__":
    main()
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY