HEX
Server: nginx/1.22.0
System: Linux iZuf6jdxbygmf6cco977lcZ 5.10.84-10.4.al8.x86_64 #1 SMP Tue Apr 12 12:31:07 CST 2022 x86_64
User: root (0)
PHP: 7.4.29
Disabled: passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,readlink,symlink,popepassthru,stream_socket_server,fsocket,popen
Upload Files
File: //lib/python3.6/site-packages/cloudinit/distros/aliyun.py
# vi: ts=4 expandtab
#
#    Copyright (C) 2016 Alibaba Cloud Inc.
#
#    Author: KaiHuan <kaihuan.pkh@alibaba-inc.com>

import os
import re

from cloudinit.distros import rhel, get_lsb_release
from cloudinit import log as logging
from cloudinit import util
from cloudinit.distros import rhel_util

LOG = logging.getLogger(__name__)


class ImageType(object):
    IMAGE_QBOOT = 'qboot'
    IMAGE_NORMAL = 'normal'
    IMAGE_UNKNOW = 'unknow'


class Distro(rhel.Distro):

    def __init__(self, name, cfg, path):
        rhel.Distro.__init__(self, name, cfg, path)
        self.cname = 'aliyunlinux'
        self.rpmgpgkey_path = '/etc/pki/rpm-gpg/RPM-GPG-KEY-aliyun-release'
        self.image_id_type = ImageType.IMAGE_NORMAL

        # some hack code for ALinux7
        if self.major_version == '17':
            self.cname = 'ALinux'
            self._release = '7.01'
            self.rpmgpgkey_path = None

        if self.major_version in ('2', '3'):
            self.rpmgpgkey_path = None

    def get_fn_release(self):
        partterns = (
            r'Aliyun Linux release\d* (\d+.\d+).*',
            r'Alibaba Cloud Linux \(Aliyun Linux\) release\d* (\d+.\d+).*',
            r'Alibaba Cloud Linux release\d* (\d+.\d+).*')
        for parttern in partterns:
            reg = re.compile(parttern)
            check_files = ('/etc/issue',
                           '/etc/issue.net',
                           '/etc/system-release')
            for fn in check_files:
                if os.path.exists(fn):
                    out = reg.findall(util.load_file(fn).strip())
                    if out:
                        return out[0]
        return ''

    def get_image_type(self):
        check_files = ('/etc/image-id',)
        reg = re.compile("Quick Boot")
        for fn in check_files:
            if os.path.exists(fn):
                out = reg.search(util.load_file(fn).strip())
                if out:
                    self.image_id_type = ImageType.IMAGE_QBOOT
                    break
        return self.image_id_type