changes in dir client xml
authorMarius Sandu-Popa <sandupopamarius@gmail.com>
Fri, 29 Jan 2010 14:47:50 +0000 (16:47 +0200)
committerMarius Sandu-Popa <sandupopamarius@gmail.com>
Fri, 29 Jan 2010 14:48:09 +0000 (16:48 +0200)
bt_comm/client/Client.py [new file with mode: 0644]
bt_comm/client/ParserConf.py [deleted file]
bt_comm/client/SSHCommander.py
bt_comm/client/XMLParser.py [deleted file]
bt_comm/xml/SSHCommander.py [deleted file]
bt_comm/xml/TrafficControl.py [deleted file]

diff --git a/bt_comm/client/Client.py b/bt_comm/client/Client.py
new file mode 100644 (file)
index 0000000..df47042
--- /dev/null
@@ -0,0 +1,74 @@
+import sys, socket
+import pickle
+from Util import *
+MSGLEN = 1024
+HOST = "127.0.0.1"
+PORT = 10001
+
+class MySocket:
+       def __init__(self, sock=None):
+               if sock is None:
+                       self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+               else:
+                       self.sock = sock
+
+       def connect(self, host, port):
+               self.sock.connect((host, port))
+               print "connected to %s %s"%(host, port)
+
+       def send_msg(self, msg):
+               totalsent = 0
+               while totalsent < len(msg):
+                       sent = self.sock.send(msg[totalsent:])
+                       if sent == 0:
+                               raise RuntimeError,     "socket connection broken"
+                       totalsent = totalsent + sent
+       
+       def send_command(self, msg_type, config_data):
+               self.send_msg(msg_type)
+               response = self.recv_msg()
+               if response == ACK_MSG:
+                       print "aici"
+                       
+                       self.send_dict(config_data)
+                       print "am trimis"
+                       response = self.recv_msg()
+               
+               return response
+
+       def recv_msg(self):
+               msg = ''
+               chunk = self.sock.recv(MSGLEN)
+               if chunk == '':
+                               raise RuntimeError,     "socket connection broken"
+               msg = msg + chunk
+               print msg
+               return msg
+
+       # send a pickled dictionary
+       def send_dict(self, data):
+               dumped_data = pickle.dumps(data)        
+               self.send_msg(dumped_data)
+
+if __name__ == "__main__":
+
+       s = MySocket()
+       s.connect(HOST, PORT)
+       # test 1
+       #s.send_msg("hello")
+       # test 2
+       #dd = {'a':1, 'b':2}
+       #s.send_dict(dd)
+       #s.recv_msg()
+
+       # test config
+       config_data = [{CLIENT:"tribler", FILE:"Tribler/Tools/cmdline.py",
+               RUN_TYPE:"script",
+               INTERPRETER:"python", PREFIX:"PYTHONPATH=.",SUFFIX:"",
+               UP_LIMIT_OPTION:"",DL_LIMIT_OPTION:"", PORT_OPTION:"-p",
+               LOG_DIR_OPTION:"-l",DL_DIR_OPTION:"-d"}]        
+
+       response = s.send_command(CONFIG_MSG, config_data)
+       print response
+
+
diff --git a/bt_comm/client/ParserConf.py b/bt_comm/client/ParserConf.py
deleted file mode 100644 (file)
index e69de29..0000000
index 71cfc41..716a065 100644 (file)
@@ -2,14 +2,31 @@ import paramiko
 import os
 paramiko.util.log_to_file('/tmp/paramiko.log')
 
-client = paramiko.SSHClient()
-client.load_system_host_keys()
-client.connect(hostname='141.85.37.237',  username='marius', password='marius')
-#client.connect(hostname='p2p-next-07.grid.pub.ro',  username='p2p')
-stdin, stdout, stderr = client.exec_command('touch gugu dudu')
-stdin, stdout, stderr = client.exec_command('ls -l')
-print stdout.readlines()
-client.close()
+class SSHCommander:
+       def __init__(self, hostname, username, password):
+               self.sshclient = paramiko.SSHClient()
+               self.sshclient.load_system_host_keys()
+               self.sshclient.connect(hostname=hostname,  username=username, password=password)
+
+       def emitCommand(self, comm):
+               stdin, stdout, stderr = self.sshclient.exec_command(comm)
+               print stdout.readlines()
+       
+       def closeConnection(self):
+               self.sshclient.close()
+               
+
+sshc = SSHCommander("141.85.37.93", "marius", "marius")
+sshc.emitCommand("transmissioncli -D -U \[isoHunt\]\ ubuntu-9.10-desktop-i386.iso.torrent &> out.log")
+#sshc.closeConnection()
+
+#~ #client.connect(hostname='p2p-next-07.grid.pub.ro',  username='p2p')
+#~ stdin, stdout, stderr = client.exec_command('touch gugu dudu')
+#~ stdin, stdout, stderr = client.exec_command('ls -l')
+#~ print stdout.readlines()
+#~ client.close()
+
+
 #~ host = "p2p-next-09.grid.pub.ro"
 #~ port = 22
 #~ transport = paramiko.Transport((host, port))
diff --git a/bt_comm/client/XMLParser.py b/bt_comm/client/XMLParser.py
deleted file mode 100644 (file)
index 1f473b5..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-from lxml import etree 
-
-class SwarmInstance:
-       def __init__(self, id, node_id, list):
-               self.id = id;
-               self.node_id = node_id;
-               self.btclient = list[0];
-               self.upload_limit = list[1];
-               self.download_limit = list[2];
-               self.port = list[3];
-               self.download_dir = list[4];
-               self.upload_dir = list[5];
-       
-       def __str__(self):
-               return '[%s: %s: %s: %s: %s: %s: %s: %s]' \
-                       %(self.id, self.node_id, self.btclient, self.upload_limit, \
-                               self.download_limit, self.port, self.upload_dir, self.download_dir);
-       
-class NodeConfig:
-       def __init__(self, list):
-               self.id = list[0];
-               self.public_address = list[1];
-               self.public_port = list[2];
-               self.private_address = list[3];
-               self.private_port = list[4];
-               self.ssh_port= list[5];
-               self.clients_base_dir = list[6];
-       
-       #~ def __str__(self):
-               #~ return '[%s: %s: %s: %s: %s: %s: %s]' \
-                       #~ %(self.id, self.btclient, self.upload_limit, self.download_limit, self.port, self.upload_dir, self.download_dir);
-
-class ClientConfig:
-       def __init__(self, id, node_path, filetype, options):
-               self.id = id;
-               self.filetype = filetype;
-               self.options = options;
-               #~ self.upload_limit_option= list[2];
-               #~ self.download_limit_option = list[3];
-               #~ self.port_option = list[4];
-               #~ self.logging_dir_option = list[5];
-               #~ self.download_dir_option = list[6];
-       
-       #~ def __str__(self):
-               #~ return '[%s: %s: %s: %s: %s: %s: %s]' \
-                       #~ %(self.id, self.btclient, self.upload_limit, self.download_limit, self.port, self.upload_dir, self.download_dir);
-                       
-class FileType:
-       def __init__(self, list):
-               self.type = list[0];
-               self.file = list[1];
-               self.interpreter = list[2];
-               self.prefix = list[3];
-               self.sufix = list[4];
-       
-       def __str__(self):
-               return '[%s: %s: %s: %s: %s: %s: %s]' \
-                       %(self.id, self.btclient, self.upload_limit, self.download_limit, self.port, self.upload_dir, self.download_dir);
-
-try:
-       tree = etree.parse("clients.xml")
-       root = tree.getroot()
-       clients_options = {}
-       for elem in root:
-               id = elem.get("id")
-               options = [elem2.text for elem2 in elem[1:]]
-               filetype =  [elem[0].get("type")]
-               filetype.extend([elem2.text for elem2 in elem[0]])
-               clients_options[id] = [filetype, options]
-       
-       print clients_options
-except IOError as e:
-       print e
-
-try:
-       tree = etree.parse("nodes.xml")
-       root = tree.getroot()
-       nodes = {}
-       for elem in root:
-               id = elem.get("id")
-               list = [elem2.text for elem2 in elem[:len(elem)-1]]
-               client_paths = {}
-               for elem2 in elem[len(elem)-1]:
-                       client_id = elem2.get("id");
-                       client_paths [client_id]=elem2[0].text;
-               nodes[id] = [client_paths, list]
-       print nodes
-       print "=================================="
-except IOError as e:
-       print e
-
-try:
-       tree = etree.parse("swarm.xml")
-       root = tree.getroot()
-       swarm = {}
-       for elem in root:
-               id = elem.get("id")
-               list = [elem2.text for elem2 in elem[:len(elem)-1]]
-               swarm[id] = list
-       print swarm
-       print "=================================="
-except IOError as e:
-       print e
-       
diff --git a/bt_comm/xml/SSHCommander.py b/bt_comm/xml/SSHCommander.py
deleted file mode 100644 (file)
index 716a065..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-import paramiko
-import os
-paramiko.util.log_to_file('/tmp/paramiko.log')
-
-class SSHCommander:
-       def __init__(self, hostname, username, password):
-               self.sshclient = paramiko.SSHClient()
-               self.sshclient.load_system_host_keys()
-               self.sshclient.connect(hostname=hostname,  username=username, password=password)
-
-       def emitCommand(self, comm):
-               stdin, stdout, stderr = self.sshclient.exec_command(comm)
-               print stdout.readlines()
-       
-       def closeConnection(self):
-               self.sshclient.close()
-               
-
-sshc = SSHCommander("141.85.37.93", "marius", "marius")
-sshc.emitCommand("transmissioncli -D -U \[isoHunt\]\ ubuntu-9.10-desktop-i386.iso.torrent &> out.log")
-#sshc.closeConnection()
-
-#~ #client.connect(hostname='p2p-next-07.grid.pub.ro',  username='p2p')
-#~ stdin, stdout, stderr = client.exec_command('touch gugu dudu')
-#~ stdin, stdout, stderr = client.exec_command('ls -l')
-#~ print stdout.readlines()
-#~ client.close()
-
-
-#~ host = "p2p-next-09.grid.pub.ro"
-#~ port = 22
-#~ transport = paramiko.Transport((host, port))
-
-#~ privatekeyfile = os.path.expanduser('~/.ssh/id_rsa')
-#~ mykey = paramiko.RSAKey.from_private_key_file(privatekeyfile)
-#~ username = 'p2p'
-#~ transport.connect(username = username, pkey = mykey)
-
diff --git a/bt_comm/xml/TrafficControl.py b/bt_comm/xml/TrafficControl.py
deleted file mode 100644 (file)
index 2c28f08..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/usr/bin/env python
-
-"""
- Traffic control interface for Linux tc
- 2010, Razvan Deaconescu, razvan.deaconescu@cs.pub.ro
-"""
-
-import sys
-import sqlite3
-import os.path
-
-DEBUG = False
-
-class TrafficControl:
-    """
-    Basic class interface to Linux tc
-    """
-    
-    def __init__(self, node_type):
-        self.node_type = node_type
-        self.upload_limit = -1
-        self.download_limit = -1
-
-    def config(self, host_address, host_port, host_iface,
-            vm_address = None, vm_port = -1, vm_iface = None):
-        self.host_address = host_address
-        self.host_port = host_port
-        self.host_iface = host_iface
-        self.vm_address = vm_address
-        self.vm_port = vm_port
-        self.vm_iface = vm_iface
-
-    """
-    Set upload limit. Argument in KB/s (kilobytes/s)
-    """
-    def set_upload_limit(self, upload_limit):
-        self.upload_limit = upload_limit
-
-    """
-    Set download limit. Argument in KB/s (kilobytes/s)
-    """
-    def set_download_limit(self, download_limit):
-        self.download_limit = download_limit
-
-    def get_upload_limit_commands(self):
-        upload_limit_commands = []
-        upload_limit_commands.append("tc qdisc add dev %s root handle 1: htb default 90" % (self.host_iface))
-        upload_limit_commands.append("tc class add dev %s parent 1: classid 1:1 htb rate %dkbps ceil %dkbps" % (self.host_iface, self.upload_limit, self.upload_limit))
-       upload_limit_commands.append("tc class add dev %s parent 1:1 classid 1:10 htb rate %dkbps ceil %dkbps" % (self.host_iface, self.upload_limit, self.upload_limit))
-        upload_limit_commands.append("tc qdisc add dev %s parent 1:10 handle 10: sfq perturb 10" % (self.host_iface))
-        upload_limit_commands.append("tc filter add dev %s parent 1:0 protocol ip u32 match ip sport %d 0xffff flowid 1:10" % (self.host_iface, self.vm_port))
-
-        return upload_limit_commands
-
-    def get_download_limit_commands(self):
-        download_limit_commands = []
-        download_limit_commands.append("tc qdisc add dev %s root handle 1: htb default 90" % (self.vm_iface))
-        download_limit_commands.append("tc class add dev %s parent 1: classid 1:1 htb rate %dkbps ceil %dkbps" % (self.vm_iface, self.download_limit, self.download_limit))
-       download_limit_commands.append("tc class add dev %s parent 1:1 classid 1:10 htb rate %dkbps ceil %dkbps" % (self.vm_iface, self.download_limit, self.download_limit))
-        download_limit_commands.append("tc qdisc add dev %s parent 1:10 handle 10: sfq perturb 10" % (self.vm_iface))
-        download_limit_commands.append("tc filter add dev %s parent 1:0 protocol ip u32 match ip dst %s/32 flowid 1:10" % (self.vm_iface, self.vm_address))
-
-        return download_limit_commands
-
-    def get_flush_commands(self):
-        flush_commands = []
-        flush_commands.append("tc qdisc del dev %s root" % (self.host_iface))
-        flush_commands.append("tc qdisc del dev %s root" % (self.vm_iface))
-
-        return flush_commands
-
-
-def print_commands(commands, header):
-    print "\n\t== %s ==\n" % (header)
-    
-    for c in commands:
-        print c
-
-def main():
-
-    """
-    Test case
-    """
-
-    tc = TrafficControl("openvz")
-    tc.config("141.85.224.201", 22, "eth1",
-            "172.16.10.1", 22, "venet0")
-    tc.set_upload_limit(512)
-    tc.set_download_limit(256)
-
-    upload_limit_commands = tc.get_upload_limit_commands()
-    download_limit_commands = tc.get_download_limit_commands()
-    flush_commands = tc.get_flush_commands()
-
-    print_commands(upload_limit_commands, "upload limit commands")
-    print_commands(download_limit_commands, "download limit commands")
-    print_commands(flush_commands, "flush commands")
-
-if __name__ == "__main__":
-    sys.exit(main())