def buttonevent_preview(self, event):
		print('debug: Preview...')
		self.options_generation()
		#system_preview = copy.deepcopy(self.system)
		tree = ET.parse(self.options.config_file)
		root = tree.getroot()
		system_preview = chris.System(root.attrib['name'], [])
		allnode, alllb, allimage = get_nodes.get_nodes(self.options.key_file, get_keys.get_keys(True, self.options.key_file))
		system_preview.reconfig(root, False, allnode, self.options, alllb)
		#system_preview.name = 'temp'
		if not reconfig_single.reconfig_single(self.options, system_preview, self.allnode, self.alllb, modifyxml = False):
			print('Error; reconfig_single()')
			return
		tree = ET.parse('configuration.preview.xml')
		root = tree.getroot()
		#print('debug: finish parsing')
		system_preview = chris.System(root.attrib['name'], [])
		if not system_preview.reconfig(root, False, allnode, self.options, alllb, preview = True):
			print('Error: Preview Failed')
			return
		#	#print('Warning: This faile might already cause some changes to the system')
		#	exit()
		print('hi')
		self.tree_generation(self.m_treeCtrl2, system_preview = system_preview)
		self.m_treeCtrl2.ExpandAll()
		self.m_staticText11.SetLabel("After Reconfig (Estimated)")
		self.m_treeCtrl2.Update()
def main():
    __ensure_memcached_is_running()
    mc = memcache.Client([MEMCACHED_ADDR + ':' + MEMCACHED_PORT], debug = 0)
    m_nodes = {}
    print "Gathering nodes' information"
    nodes = get_nodes(sys.argv[1])
    mc.set('nodes', pickle.dumps(nodes))
    # print "Setting up nodes' pairs"
    # set_pairs_by_nodes_and_pairs_filename(nodes, sys.argv[2]);
    for node_key in nodes:
        m_nodes[node_key] = MNode()
    print "All set up. Setting locations."
    counter = 0
    flag = True
    for key, m_node in m_nodes.items():
        if flag:
            m_node.x = counter
            m_node.y = 180
            counter = counter + 22
            if counter > 360:
                counter = 0
                flag = False
        else:
            m_node.x = 180
            m_node.y = counter
            counter = counter + 22
        mc.set(key, m_node.to_memcached_str())
def main():
    __ensure_memcached_is_running()
    mc = memcache.Client([MEMCACHED_ADDR + ":" + MEMCACHED_PORT], debug=0)
    m_nodes = {}
    print "Gathering nodes' information"
    nodes = get_nodes(sys.argv[1])
    mc.set("nodes", pickle.dumps(nodes))
    # print "Setting up nodes' pairs"
    # set_pairs_by_nodes_and_pairs_filename(nodes, sys.argv[2]);
    for node_key in nodes:
        m_nodes[node_key] = MNode()
    print "All set up. Forking to background."
    print "Entering mobility loop."
    if os.fork() != 0:
        exit(0)
    while __continue(mc):
        for key, m_node in m_nodes.items():
            move_m_node(m_node)
            mc.set(key, m_node.to_memcached_str())
        time.sleep(UPDATE_INTERVAL)
    mc.set("sheldon_exit", 0)
    if options.gui == "y":
        get_keys.get_keys(False, options.key_file)
    else:
        print("Error: Please edit or specify the key file to provide keys")
    exit()

# key file existed
providers = get_keys.get_keys(True, options.key_file)
if providers == None:
    print("Error: No valid provider")
    exit()

# ..... key file existed .....

# ----- get nodes -----
allnode, alllb, allimage = get_nodes.get_nodes(options.key_file, providers)
if len(allnode) < 1:
    print("Error: No node")
    exit()
if len(alllb) < 1:
    print("Warning: No loadbalancer")

# ..... get nodes and load balancers .....

# ----- Beginning mode -----
if options.mode == "b" or not os.path.exists(options.config_file):
    print("debug: Beginning Mode")
    # cluntering with GUI
    if options.gui == "y":
        guithread = gui_cluster.GUI_Thread_Cluster(allnode, alllb, options.config_file, allimage)
        guithread.setDaemon(True)
def set_pairs_by_filenames(nodes_file, pairs_file):
    set_pairs_by_nodes_and_pairs_filename(get_nodes(nodes_file), pairs_file)