aboutsummaryrefslogtreecommitdiff
path: root/emulab_support.py
diff options
context:
space:
mode:
Diffstat (limited to 'emulab_support.py')
-rw-r--r--emulab_support.py110
1 files changed, 3 insertions, 107 deletions
diff --git a/emulab_support.py b/emulab_support.py
index 6fe0055..99a903c 100644
--- a/emulab_support.py
+++ b/emulab_support.py
@@ -19,24 +19,15 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301 USA
-import socket
-import paramiko
-import time
import os
+import time
import re
from ast import literal_eval
-import configparser
+from ssh_support import *
import warnings
warnings.filterwarnings("ignore")
-def get_ssh_client():
- ssh_client = paramiko.SSHClient()
- ssh_client.load_system_host_keys()
- ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
-
- return ssh_client
-
def ops_server(testbed):
'''
Return server name of the ops-server (is testbed specific)
@@ -59,73 +50,6 @@ def full_name(testbed, node_name):
return node_name + '.' + testbed.exp_name + '.' + \
testbed.proj_name + '.' + testbed.url
-def execute_command(testbed, hostname, command, time_out = 3):
- '''
- Remote execution of a list of shell command on hostname. By
- default this function will exit (timeout) after 3 seconds.
-
- @param testbed: testbed info
- @param hostname: host name or ip address of the node
- @param command: *nix shell command
- @param time_out: time_out value in seconds, error will be generated if
- no result received in given number of seconds, the value None can
- be used when no timeout is needed
-
- @return: stdout resulting from the command
- '''
- ssh_client = get_ssh_client()
-
- try:
- ssh_client.connect(hostname, 22,
- testbed.username, testbed.password,
- look_for_keys = True, timeout = time_out)
- stdin, stdout, stderr = ssh_client.exec_command(command)
- err = str(stderr.read()).strip('b\'\"\\n')
- if err != "":
- print(err)
- output = str(stdout.read()).strip('b\'\"\\n')
- ssh_client.close()
-
- return output
-
- except Exception as e:
- print(str(e))
- return
-
-def copy_file_to_testbed(testbed, hostname, text, file_name):
- '''
- Write a string to a given remote file.
- Overwrite the complete file if it already exists!
-
- @param testbed: testbed info
- @param hostname: host name or ip address of the node
- @param text: string to be written in file
- @param file_name: file name (including full path) on the host
- '''
- ssh_client = get_ssh_client()
-
- try:
- ssh_client.connect(hostname, 22,
- testbed.username,
- testbed.password,
- look_for_keys=True)
-
- cmd = "touch " + file_name + \
- "; chmod a+rwx " + file_name
-
- stdin, stdout, stderr = ssh_client.exec_command(cmd)
- err = str(stderr.read()).strip('b\'\"\\n')
- if err != "":
- print(err)
-
- sftp_client = ssh_client.open_sftp()
- remote_file = sftp_client.open(file_name, 'w')
-
- remote_file.write(text)
- remote_file.close()
-
- except Exception as e:
- print(str(e))
def get_experiment_list(testbed, project_name = None):
'''
@@ -297,32 +221,4 @@ def complete_experiment_graph(testbed, nodes, p2plinks):
elif link.node_b.name == node.name and \
link.int_b.ip == item[1]:
link.int_b.name = item[0]
-
-def setup_vlan(testbed, node_name, vlan_id, int_name):
- '''
- Gets the interface (ethx) to link mapping
-
- @param testbed: testbed info
- @param node_name: the node to create the VLAN on
- @param vlan_id: the VLAN id
- @param int_name: the name of the interface
- '''
- print("Setting up VLAN on node " + node_name)
-
- node_full_name = full_name(node_name, testbed)
- cmd = "sudo ip link add link " + \
- str(int_name) + \
- " name " + str(int_name) + \
- "." + str(vlan_id) + \
- " type vlan id " + str(vlan_id)
- execute_command(testbed, node_full_name, cmd)
- cmd = "sudo ifconfig " + \
- str(int_name) + "." + \
- str(vlan_id) + " up"
- execute_command(node_full_name, cmd, testbed)
- cmd = "sudo ethtool -K " + \
- str(int_name) + " rxvlan off"
- execute_command(node_full_name, cmd, testbed)
- cmd = "sudo ethtool -K " + \
- str(int_name) + " txvlan off"
- execute_command(node_full_name, cmd, testbed)
+ node.full_name = full_name(testbed, node.name)