PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB` REDROOM
PHP 5.6.40
Preview: DataSourceAliYun.py Size: 2.97 KB
//lib/python3.6/site-packages/cloudinit/sources/DataSourceAliYun.py

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

import logging
from typing import List

from cloudinit import dmi, sources
from cloudinit.event import EventScope, EventType
from cloudinit.sources import DataSourceEc2 as EC2
from cloudinit.sources import DataSourceHostname

LOG = logging.getLogger(__name__)

ALIYUN_PRODUCT = "Alibaba Cloud ECS"


class DataSourceAliYun(EC2.DataSourceEc2):

    dsname = "AliYun"
    metadata_urls = ["http://100.100.100.200"]

    # The minimum supported metadata_version from the ec2 metadata apis
    min_metadata_version = "2016-01-01"
    extended_metadata_versions: List[str] = []

    # Aliyun metadata server security enhanced mode overwrite
    @property
    def imdsv2_token_put_header(self):
        return "X-aliyun-ecs-metadata-token"

    def __init__(self, sys_cfg, distro, paths):
        super(DataSourceAliYun, self).__init__(sys_cfg, distro, paths)
        self.default_update_events[EventScope.NETWORK].add(EventType.BOOT)

    def get_hostname(self, fqdn=False, resolve_ip=False, metadata_only=False):
        hostname = self.metadata.get("hostname")
        is_default = False
        if hostname is None:
            hostname = "localhost.localdomain"
            is_default = True
        return DataSourceHostname(hostname, is_default)

    def get_public_ssh_keys(self):
        return parse_public_keys(self.metadata.get("public-keys", {}))

    def _get_cloud_name(self):
        if _is_aliyun():
            return EC2.CloudNames.ALIYUN
        else:
            return EC2.CloudNames.NO_EC2_METADATA


def _is_aliyun():
    return dmi.read_dmi_data("system-product-name") == ALIYUN_PRODUCT


def parse_public_keys(public_keys):
    keys = []
    for _key_id, key_body in public_keys.items():
        if isinstance(key_body, str):
            keys.append(key_body.strip())
        elif isinstance(key_body, list):
            keys.extend(key_body)
        elif isinstance(key_body, dict):
            key = key_body.get("openssh-key", [])
            if isinstance(key, str):
                keys.append(key.strip())
            elif isinstance(key, list):
                keys.extend(key)
    return keys


class DataSourceAliYunLocal(DataSourceAliYun):
    """Datasource run at init-local which sets up network to query metadata.

    In init-local, no network is available. This subclass sets up minimal
    networking with dhclient on a viable nic so that it can talk to the
    metadata service. If the metadata service provides network configuration
    then render the network configuration for that instance based on metadata.
    """

    perform_dhcp_setup = True


# Used to match classes to dependencies
datasources = [
    (DataSourceAliYunLocal, (sources.DEP_FILESYSTEM,)),  # Run at init-local
    (DataSourceAliYun, (sources.DEP_FILESYSTEM, sources.DEP_NETWORK)),
]

# Return a list of data sources that match this set of dependencies
def get_datasource_list(depends):
    return sources.list_from_depends(depends, datasources)

Directory Contents

Dirs: 3 × Files: 30

Name Size Perms Modified Actions
azure DIR
- drwxr-xr-x 2026-01-24 23:01:14
Edit Download
helpers DIR
- drwxr-xr-x 2026-01-24 23:01:14
Edit Download
- drwxr-xr-x 2026-01-24 23:01:14
Edit Download
12.67 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
2.97 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
8.23 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
72.95 KB lrw-r--r-- 2026-01-23 08:56:46
Edit Download
1.90 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
3.86 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
8.09 KB lrw-r--r-- 2026-01-23 08:56:46
Edit Download
10.97 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
4.14 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
35.75 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
8.79 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
13.82 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
5.31 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
14.03 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
17.05 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
15.13 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
13.00 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
1.34 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
4.38 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
15.76 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
10.33 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
14.59 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
12.66 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
7.84 KB lrw-r--r-- 2026-01-23 08:56:46
Edit Download
15.43 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
33.97 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
5.48 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
36.04 KB lrw-r--r-- 2026-01-23 08:56:46
Edit Download
4.48 KB lrw-r--r-- 2023-12-04 11:47:40
Edit Download
42.99 KB lrw-r--r-- 2026-01-23 08:56:46
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).
© 2026 REDROOM — Secure File Manager. All rights reserved. Built with ❤️ & Red Dark UI