+++ /dev/null
-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()
-#~ 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)
-
+++ /dev/null
-#!/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.vm_iface))
- upload_limit_commands.append("tc class add dev %s parent 1: classid 1:1 htb rate %dkb ceil %dkb" % (self.vm_iface, self.upload_limit, self.upload_limit))
- upload_limit_commands.append("tc qdisc add dev %s parent 1:1 handle 10: sfq perturb 10" % (self.vm_iface))
- upload_limit_commands.append("tc filter add dev %s parent 1:0 protocol ip u32 match ip dst %s match ip dport %d 0xffff classid 1:1" % (self.vm_iface, self.vm_address, 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.host_iface))
- download_limit_commands.append("tc class add dev %s parent 1: classid 1:1 htb rate %dkb ceil %dkb" % (self.host_iface, self.download_limit, self.download_limit))
- download_limit_commands.append("tc qdisc add dev %s parent 1:1 handle 10: sfq perturb 10" % (self.host_iface))
- download_limit_commands.append("tc filter add dev %s parent 1:0 protocol ip u32 match ip src %s classid 1:1" % (self.host_iface, self.vm_address))
-
- return download_limit_commands
-
- def get_flush_commands(self):
- flush_commands = []
- flush_commands.append("tc qdisc del dev %s root handle 1:" % (self.host_iface))
- flush_commands.append("tc qdisc del dev %s root handle 1:" % (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", 10150, "eth0",
- "172.16.10.0", 10150, "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())
+++ /dev/null
-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;
-
- #~ 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
-
+++ /dev/null
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<clients>
- <client id="tribler">
- <run type="script">
- <file>Tribler/Tools/cmdline.py</file>
- <interpreter>python </interpreter>
- <prefix>PYTHONPATH=.</prefix>
- <suffix></suffix>
- </run>
- <upload_limit_option></upload_limit_option>
- <download_limit_option></download_limit_option>
- <port_option>-p</port_option>
- <logging_dir_option>-l</logging_dir_option>
- <download_dir_option>-d</download_dir_option>
- </client>
- <client id="libtorrent">
- <run type="executable">
- <file>hrktorrent</file>
- <interpreter></interpreter>
- <prefix></prefix>
- <suffix></suffix>
- </run>
- <port_option>-p</port_option>
- <download_dir_option>-d</download_dir_option>
- </client>
- <client id="transmission">
- <run type="executable">
- <file>src/transmission-cli</file>
- <interpreter></interpreter>
- <prefix></prefix>
- <suffix></suffix>
- </run>
- <upload_limit_option>-u</upload_limit_option>
- <download_limit_option>-d</download_limit_option>
- <port_option>-p</port_option>
- <logging_dir_option>-l</logging_dir_option>
- <download_dir_option>-o</download_dir_option>
- </client>
-</clients>
+++ /dev/null
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<nodes>
- <node id="1">
- <public_address>141.85.224.201</public_address>
- <public_port>10150</public_port>
- <private_address>172.30.10.0</private_address>
- <private_port>10150</private_port>
- <ssh_port>10122</ssh_port>
- <clients>
- <client id="tribler">
- <base>/home/p2p/p2p-clients/tribler/</base>
- </client>
- <client id="libtorrent">
- <base>/home/p2p/p2p-clients/libtorrent/</base>
- </client>
- <client id="transmission">
- <base>/home/p2p/p2p-clients/transmission/</base>
- </client>
- </clients>
- </node>
- <node id="2">
- <public_address>141.85.224.202</public_address>
- <public_port>10250</public_port>
- <private_address>172.30.20.0</private_address>
- <private_port>10250</private_port>
- <ssh_port>10222</ssh_port>
- <clients>
- <client id="tribler">
- <base>/home/p2p/p2p-clients/tribler/</base>
- </client>
- <client id="libtorrent">
- <base>/home/p2p/p2p-clients/libtorrent/</base>
- </client>
- <client id="transmission">
- <base>/home/p2p/p2p-clients/transmission/</base>
- </client>
- </clients>
- </node>
-</nodes>
+++ /dev/null
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<swarm>
- <instance id="1">
- <node>1</node>
- <client>triber</client>
- <upload_limit>512</upload_limit>
- <download_limit>256</download_limit>
- <port>9999</port>
- <download_dir>/this/dir</download_dir>
- <logging_dir>/this/dir</logging_dir>
- <actions>
- <action type="start" delay="00:05:00" />
- <action type="stop" delay="00:10:00" />
- <action type="start" delay="00:15:00" />
- <action type="stop" delay="00:20:00" />
- <action type="start" delay="00:25:00" />
- <action type="start" delay="end" />
- </actions>
- </instance>
- <instance id="2">
- <node>2</node>
- <client>transmission</client>
- <upload_limit></upload_limit>
- <download_limit></download_limit>
- <port></port>
- <download_dir></download_dir>
- <logging_dir></logging_dir>
- <actions>
- <action type="start" delay="00:05:00" />
- <action type="stop" delay="01:00:00" />
- <action type="start" delay="02:00:00" />
- <action type="start" delay="end" />
- </actions>
- </instance>
- <instance id="3">
- <node>3</node>
- <client>libtorrent</client>
- <upload_limit></upload_limit>
- <download_limit></download_limit>
- <port></port>
- <download_dir></download_dir>
- <logging_dir></logging_dir>
- <actions>
- <action type="start" delay="00:00:00" />
- <action type="start" delay="end" />
- </actions>
- </instance>
-</swarm>