blob: 7d9132704ed595386e3a4efc8bb855041bf8302d [file] [log] [blame]
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os
import asus_ap_configurator
import belkin_ap_configurator
import buffalo_ap_configurator
import dlink_ap_configurator
import dlink_dir655_ap_configurator
import dlinkwbr1310_ap_configurator
import linksys_ap_configurator
import linksyse2000_ap_configurator
import linksysE4200_ap_configurator
import Netgear3700_ap_configurator
import netgear4500_ap_configurator
import trendnet_ap_configurator
import netgear614_ap_configurator
class APConfiguratorFactory(object):
"""Class that instantiates all available APConfigurators."""
def __init__(self, config_dict_file_path):
if not os.path.exists(config_dict_file_path):
raise IOError('The configuration file at path %s is missing' %
str(config_dict_file_path))
f = open(config_dict_file_path)
contents = f.read()
f.close()
config_list = None
try:
config_list = eval(contents)
except Exception, e:
raise RuntimeError('%s is an invalid data file.' %
config_dict_file_path)
self.ap_list = []
self._build_all_instances_of_configurator(config_list,
'LinksysAPConfigurator',
linksys_ap_configurator.LinksysAPConfigurator)
self._build_all_instances_of_configurator(config_list,
'DLinkAPConfigurator',
dlink_ap_configurator.DLinkAPConfigurator)
self._build_all_instances_of_configurator(config_list,
'TrendnetAPConfigurator',
trendnet_ap_configurator.TrendnetAPConfigurator)
self._build_all_instances_of_configurator(config_list,
'DLinkDIR655APConfigurator',
dlink_dir655_ap_configurator.DLinkDIR655APConfigurator)
self._build_all_instances_of_configurator(config_list,
'BuffaloAPConfigurator',
buffalo_ap_configurator.BuffaloAPConfigurator)
self._build_all_instances_of_configurator(config_list,
'AsusAPConfigurator',
asus_ap_configurator.AsusAPConfigurator)
self._build_all_instances_of_configurator(config_list,
'Netgear3700APConfigurator',
Netgear3700_ap_configurator.Netgear3700APConfigurator)
self._build_all_instances_of_configurator(config_list,
'LinksysE4200APConfigurator',
linksysE4200_ap_configurator.LinksysAPConfigurator)
self._build_all_instances_of_configurator(config_list,
'linksyse2000APConfigurator',
linksyse2000_ap_configurator.linksyse2000APConfigurator)
self._build_all_instances_of_configurator(config_list,
'Netgear4500APConfigurator',
netgear4500_ap_configurator.NetgearAPConfigurator)
self._build_all_instances_of_configurator(config_list,
'belkinAPConfigurator',
belkin_ap_configurator.belkinAPConfigurator)
self._build_all_instances_of_configurator(config_list,
'Netgear614APConfigurator',
netgear614_ap_configurator.NetgearAPConfigurator)
self._build_all_instances_of_configurator(config_list,
'dlinkwbr1310APConfigurator',
dlinkwbr1310_ap_configurator.dlinkwbr1310APConfigurator)
def _build_all_instances_of_configurator(self, config_list, name,
configurator):
for current in config_list:
if current['class_name'] == name:
self.ap_list.append(configurator(current))
def get_ap_configurators(self):
return self.ap_list
def get_ap_configurator_by_short_name(self, name):
for ap in self.ap_list:
if ap.get_router_short_name() == name:
return ap
return None
def turn_off_all_routers(self):
for ap in self.ap_list:
ap.power_down_router()