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)