HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux WebLive 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/local/qcloud/monitor/barad/plugin/collector/utils/vpc.py
import urllib2

import constant
from cutils import generate_config

META_URL = generate_config(constant.PLUGIN_CONFIG_PATH,
                           "MetaDataServer")["metadata_url"]

un_vpc_id = None


class VpcIdManager(object):

    def __init__(self):
        self.conf = "/etc/un_vpc_id"

    def get_un_vpc_id(self):
        global un_vpc_id
        if un_vpc_id: return un_vpc_id
        un_vpc_id = self.get_un_vpc_id_from_local()

        if not un_vpc_id:
            un_vpc_id = self.get_un_vpc_id_from_meta()
            self.set_un_vpc_id_to_local(un_vpc_id)
        return un_vpc_id

    def set_un_vpc_id_to_local(self, un_vpc_id):
        with open(self.conf, "w+") as f:
            f.write(un_vpc_id)
        return True

    def get_un_vpc_id_from_local(self):
        un_vpc_id = ""
        try:
            with open(self.conf, "r") as f:
                un_vpc_id = f.read()
        except IOError:
            pass
        return un_vpc_id

    def get_un_vpc_id_from_meta(self):
        un_vpc_id = ""

        try:
            # Get mac address
            url = META_URL + 'mac'
            response = urllib2.urlopen(url, timeout=2)
            content = response.read()
            mac = content
            if not mac: return un_vpc_id

            # Get vpc id by mac address
            url = META_URL + 'network/interfaces/macs/' + mac + '/vpc-id'
            response = urllib2.urlopen(url, timeout=2)
            content = response.read()
            if content: un_vpc_id = content
        except Exception:
            un_vpc_id = ''

        return un_vpc_id

    un_vpc_id = property(get_un_vpc_id)