コード例 #1
0
def connect_cloud_agent(manager, method="geo"):
    cloud_agents = get_cloud_agents(manager)
    client_info = ipinfo()
    if not client_info['hostname']:
        client_info['hostname'] = socket.gethostname()
    elif "No" in client_info['hostname']:
        client_info['hostname'] = socket.gethostname()

    if method == "geo":
        connected_cloud_agent, connected_cloud_agent_ip = geo_connect(client_info, cloud_agents)
    elif method == "net":
        connected_cloud_agent, connected_cloud_agent_ip = net_connect(cloud_agents)
    else:
        print "Unknown method to connect to a cloud agent!"
        return None
    ## Post the info the the centralized manager
    client_info['locator'] = connected_cloud_agent

    num_tries = 0
    while (not notify_manager(manager, method, client_info)) and (num_tries < 3):
        num_tries += 1

    if num_tries == 3:
        print "Try to notify the manager 3 times but all failed."

    return {'name' : connected_cloud_agent, 'ip' : connected_cloud_agent_ip}
コード例 #2
0
def get_node_details(node_ip_file, outputFolder):
    nodes = json.load(open(node_ip_file))
    for user in nodes.keys():
        user_ip = nodes[user]
        user_info = ipinfo(user_ip)
        ## print user_info
        writeJson(outputFolder, user, user_info)
コード例 #3
0
def get_first_mile_groups(inputFolder, silent_mode=True, outputFolder=os.getcwd() + "/data/", outputFileName="firstmile_group"):
    ## Get user QoE files
    qoe_files = glob.glob(inputFolder + "*")

    users = {}
    srv_info = {}

    ## Process each user QoE file
    for user_qoe_file in qoe_files:
        user_file_name = ntpath.basename(user_qoe_file)
        user_name = user_file_name.split('_')[0]
        ## print user_file_name
        srvs = get_all_servers(user_qoe_file)

        for srv in srvs:
            if srv not in users.keys():
                users[srv] = []

            if user_name not in users[srv]:
                users[srv].append(user_name)

        if silent_mode:
            continue

        if srv not in srv_info.keys():
            cur_srv_info = ipinfo(srv)
            srv_info[srv] = cur_srv_info

    if not silent_mode:
        writeJson(outputFolder, outputFileName, users)

    return users
コード例 #4
0
def connect_cloud_agent(manager, method="geo"):
    cloud_agents = get_cloud_agents(manager)
    client_info = ipinfo()
    if not client_info['hostname']:
        client_info['hostname'] = socket.gethostname()
    elif "No" in client_info['hostname']:
        client_info['hostname'] = socket.gethostname()

    if method == "geo":
        connected_cloud_agent, connected_cloud_agent_ip = geo_connect(
            client_info, cloud_agents)
    elif method == "net":
        connected_cloud_agent, connected_cloud_agent_ip = net_connect(
            cloud_agents)
    else:
        print "Unknown method to connect to a cloud agent!"
        return None
    ## Post the info the the centralized manager
    client_info['locator'] = connected_cloud_agent

    num_tries = 0
    while (not notify_manager(manager, method,
                              client_info)) and (num_tries < 3):
        num_tries += 1

    if num_tries == 3:
        print "Try to notify the manager 3 times but all failed."

    return {'name': connected_cloud_agent, 'ip': connected_cloud_agent_ip}
コード例 #5
0
def get_ext_ip():
    ext_ip_info = ipinfo()
    ext_ip = ext_ip_info['ip']
    node_info = get_node_info(ext_ip, "client")
    hostname = socket.gethostname()
    if node_info['name'] == node_info['ip']:
        node_info['name'] = hostname
    return ext_ip, node_info
コード例 #6
0
def get_ext_ip():
    node_info = get_node_info()
    ext_ip = node_info['ip']
    if not node_info:
        ext_ip = get_ext_ip_from_websites()
        node_info = ipinfo()
    hostname = socket.gethostname()
    if node_info['name'] == node_info['ip']:
        node_info['name'] = hostname
    return ext_ip, node_info
コード例 #7
0
def get_ext_ip():
    node_info = get_node_info()
    ext_ip = node_info['ip']
    if not node_info:
        ext_ip = get_ext_ip_from_websites()
        node_info = ipinfo()
    hostname = socket.gethostname()
    if node_info['name'] == node_info['ip']:
        node_info['name'] = hostname
    return ext_ip, node_info
コード例 #8
0
def get_hop_by_user(hop_file):
    ### Get client name and attache to the closest cache agent
    client_name = getMyName()
    # client_name = '75-130-96-12.static.oxfr.ma.charter.com'
    hop_data_folder = os.getcwd() + '/hopData/'
    hops_on_user = json.load(open(hop_file))
    if client_name in hops_on_user.keys():
        hops = hops_on_user[client_name]
        for hop in hops.keys():
            hop_info = ipinfo(hop)
            save_ipinfo(hop_data_folder, hop_info)
            print hop_info
コード例 #9
0
def read_user_info(user_name):
    default_user_path = "./clientsInfo/nodes/"
    fileName = default_user_path + user_name + ".json"
    if os.path.exists(fileName):
        user_info = json.load(open(fileName))
    else:
        user_ip = host2ip(user_name)
        if is_ip(user_ip):
            user_info = ipinfo(user_ip)
            writeJson(default_user_path, user_name, user_info)
        else:
            user_info = {}
    return user_info
コード例 #10
0
def read_hop_info(hopinfo_path, hop_ip):
    default_hop_path = hopinfo_path + hop_ip + ".json"
    if os.path.exists(default_hop_path):
        try:
            hop_info = json.load(open(default_hop_path))
        except:
            os.remove(default_hop_path)
            if is_ip(hop_ip):
                hop_info = ipinfo(hop_ip)
                save_ipinfo(hopinfo_path, hop_info)
            else:
                hop_info = {}
    else:
        if not is_ip(hop_ip):
            hop_ip = host2ip(hop_ip)

        if is_ip(hop_ip):
            hop_info = ipinfo(hop_ip)
            save_ipinfo(hopinfo_path, hop_info)
        else:
            hop_info = {}
    return hop_info
コード例 #11
0
def getMyName():
	hostname = socket.gethostname()

	if '.' not in hostname:
		ext_ip = get_ext_ip()
		myInfo = ipinfo(ext_ip)
		if "hostname" in myInfo.keys():
			if '.' in myInfo["hostname"]:
				hostname = myInfo["hostname"]
		if ext_ip == "221.199.217.144":
			hostname = "planetlab1.research.nicta.com.au"

		if '.' not in hostname:
			hostname = ext_ip
	return hostname
コード例 #12
0
def getMyName():
    hostname = socket.gethostname()

    if '.' not in hostname:
        ext_ip = get_ext_ip()
        myInfo = ipinfo(ext_ip)
        if "hostname" in myInfo.keys():
            if '.' in myInfo["hostname"]:
                hostname = myInfo["hostname"]
        if ext_ip == "221.199.217.144":
            hostname = "planetlab1.research.nicta.com.au"

        if '.' not in hostname:
            hostname = ext_ip
    return hostname
コード例 #13
0
def get_hop_by_host(cdn_host):
    hop_data_folder = os.getcwd() + '/hopData/'

    hops = traceroute(cdn_host)
    print hops

    hop_ids = sorted(hops.keys(), key=int)
    for hop_id in hop_ids:
        cur_hop_ip = hops[hop_id]['IP']
        if cur_hop_ip is '*':
            continue

        if not is_reserved(cur_hop_ip):
            hop_info = ipinfo(cur_hop_ip)
            save_ipinfo(hop_data_folder, hop_info)
            print hop_info
コード例 #14
0
def getMyName():
	hostname = socket.gethostname()
	not_found_names = {
		"221.199.217.144" : "planetlab1.research.nicta.com.au",
		"221.199.217.145" : "planetlab2.research.nicta.com.au"
	}

	if '.' not in hostname:
		ext_ip = get_ext_ip()
		myInfo = ipinfo(ext_ip)
		if "hostname" in myInfo.keys():
			if '.' in myInfo["hostname"]:
				hostname = myInfo["hostname"]
		elif ext_ip in not_found_names.keys():
			hostname = not_found_names[ext_ip]

		if '.' not in hostname:
			hostname = ext_ip
	return hostname
コード例 #15
0
def getMyName():
    hostname = socket.gethostname()
    not_found_names = {
        "221.199.217.144": "planetlab1.research.nicta.com.au",
        "221.199.217.145": "planetlab2.research.nicta.com.au"
    }

    if '.' not in hostname:
        ext_ip = get_ext_ip()
        myInfo = ipinfo(ext_ip)
        if "hostname" in myInfo.keys():
            if '.' in myInfo["hostname"]:
                hostname = myInfo["hostname"]
        elif ext_ip in not_found_names.keys():
            hostname = not_found_names[ext_ip]

        if '.' not in hostname:
            hostname = ext_ip
    return hostname
コード例 #16
0
def read_hop_info(hopinfo_path, hop_ip):
    default_hop_path = hopinfo_path + hop_ip + ".json"
    if os.path.exists(default_hop_path):
        try:
            node_info = json.load(open(default_hop_path))
            return node_info
        except:
            os.remove(default_hop_path)

    if not is_ip(hop_ip):
        hop_ip = host2ip(hop_ip)

    if is_ip(hop_ip):
        hop_info = ipinfo(hop_ip)
        node_info = {}
        node_info['ip'] = hop_ip
        node_info['name'] = hop_info['hostname']
        if not hop_info['city']:
            node_info['city'] = ""
        else:
            try:
                node_info['city'] = str(hop_info['city'])
            except:
                node_info['city'] = hop_info['city'].encode('utf-8')
        node_info['region'] = str(hop_info['region'])
        node_info['country'] = str(hop_info['country'])
        node_info['AS'] = hop_info['AS']
        try:
            node_info['ISP'] = str(hop_info['ISP'])
        except:
            node_info['ISP'] = hop_info['ISP'].encode('utf-8')
        node_info['latitude'] = hop_info['latitude']
        node_info['longitude'] = hop_info['longitude']
    else:
        node_info = {}

    return node_info
コード例 #17
0
def read_hop_info(hopinfo_path, hop_ip):
    default_hop_path = hopinfo_path + hop_ip + ".json"
    if os.path.exists(default_hop_path):
        try:
            node_info = json.load(open(default_hop_path))
            return node_info
        except:
            os.remove(default_hop_path)

    if not is_ip(hop_ip):
        hop_ip = host2ip(hop_ip)

    if is_ip(hop_ip):
        hop_info = ipinfo(hop_ip)
        node_info = {}
        node_info['ip'] = hop_ip
        node_info['name'] = hop_info['hostname']
        if not hop_info['city']:
            node_info['city'] = ""
        else:
            try:
                node_info['city'] = str(hop_info['city'])
            except:
                node_info['city'] = hop_info['city'].encode('utf-8')
        node_info['region'] = str(hop_info['region'])
        node_info['country'] = str(hop_info['country'])
        node_info['AS'] = hop_info['AS']
        try:
            node_info['ISP'] = str(hop_info['ISP'])
        except:
            node_info['ISP'] = hop_info['ISP'].encode('utf-8')
        node_info['latitude'] = hop_info['latitude']
        node_info['longitude'] = hop_info['longitude']
    else:
        node_info = {}

    return node_info