aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/autobuilder/lib/daft.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/autobuilder/lib/daft.py')
-rw-r--r--lib/python2.7/site-packages/autobuilder/lib/daft.py118
1 files changed, 0 insertions, 118 deletions
diff --git a/lib/python2.7/site-packages/autobuilder/lib/daft.py b/lib/python2.7/site-packages/autobuilder/lib/daft.py
deleted file mode 100644
index 925efa7e..00000000
--- a/lib/python2.7/site-packages/autobuilder/lib/daft.py
+++ /dev/null
@@ -1,118 +0,0 @@
-import os
-import ConfigParser as configparser
-
-class DeployScanner(object):
- '''
- In charge of scanning deployed daft bbb devices
- '''
-
- __MAGIC_SERVER_ADDRESS = '192.168.30.1' # DAFT uses this address for this internal network
- __MAGIC_SSH_PORT = 2233 # it is hardcoded as per DAFT implementation manual
-
- def __init__(self, *args, **kwargs):
- self.devsconf_fp = kwargs.get('devsconf_file', None)
- if not self.devsconf_fp:
- raise Exception('not fed devsconf file')
- self.ign_leases = kwargs.get('ign_leases', True)
- if not self.ign_leases:
- self.leases_file_path = kwargs.get('leases_file', None)
- if not self.leases_file_path:
- raise Exception('not fed leases file')
-
- def getDevices(self):
- '''
- Creates relation of deployed devices
- Returns:
- List of dictionaries containing info about devices deployed.
- '''
-
- def _map_config(conf, leases=None):
- """
- Creates a list with dictionaries for DUT config
- information, if DHCP leases isn't none also validate
- if the DUT IP is active.
- """
-
- mapped_config = []
-
- for entry in conf:
- append = False
- if leases:
- for active in leases:
- if conf['bb_ip'] == active['ip']:
- append = True
- break
- else:
- append = True
-
- if append:
- mapped_config.append({
- 'dut_label': entry['device'],
- 'dut_family': entry['device_type'],
- 'dut_sshport': str(self.__MAGIC_SSH_PORT),
- 'ctrl_address': entry['bb_ip'],
- 'server_address': self.__MAGIC_SERVER_ADDRESS
- })
-
- return mapped_config
-
- conf = self.__fetch_confs()
- if not conf:
- raise Exception('There are no configurations as per BBB devices')
-
- leases = None
- if not self.ign_leases:
- leases = self.__active_leases()
- if not leases:
- raise Exception('DHCP server has not registered any host yet')
-
- return _map_config(conf, leases)
-
- def __fetch_confs(self):
- '''
- Read and parse BBB configuration file and return result as dictionary
- '''
- config = configparser.SafeConfigParser()
- config.read(self.devsconf_fp)
- configurations = []
- for device in config.sections():
- device_config = dict(config.items(device))
- device_config["device"] = device
- device_config["device_type"] = device.rstrip('1234567890_')
- configurations.append(device_config)
- return configurations
-
- def __active_leases(self):
- """
- Read the active leases from dnsmasq leases file and return a list of
- active leases as dictionaries.
- Args:
- file_name (str): Path to leases file, e.g. /path/to/file/dnsmasq.leases
- Returns:
- List of dictionaries containing the active leases.
- The dictionaries have the following format:
- {
- "mac": "device_mac_address",
- "ip": "device_ip_address",
- "hostname": "device_host_name",
- "client_id": "client_id_or_*_if_unset"
- }
- """
- with open(self.leases_file_path) as lease_file:
- leases = lease_file.readlines()
-
- leases_list = []
-
- # dnsmasq.leases contains rows with the following format:
- # <lease_expiry_time_as_epoch_format> <mac> <ip> <hostname> <domain>
- # See:
- #http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2005q1/000143.html
- for lease in leases:
- lease = lease.split()
- leases_list.append({
- "mac": lease[1],
- "ip": lease[2],
- "hostname": lease[3],
- "client_id": lease[4],
- })
- return leases_list