blob: 777f5f299689b662a5ba7e1f4eb08f41de45a3d0 [file] [log] [blame]
Steve McIntyre30bf4db2014-08-12 18:08:22 +01001#! /usr/bin/python
2
3# Copyright 2014 Linaro Limited
Steve McIntyre6103e982014-09-18 23:37:54 +01004
Steve McIntyre30bf4db2014-08-12 18:08:22 +01005#
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 2 of the License, or
9# (at your option) any later version.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with this program; if not, write to the Free Software
18# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19# MA 02110-1301, USA.
20
21import time
22import logging
23
Steve McIntyre96f2c652015-02-12 04:25:55 +000024class SwitchErrors:
25 """ Error logging and statistics class """
26
27 def __init__(self):
28 self.errors_in = 0
29 self.errors_out = 0
30
31 def __repr__(self):
Steve McIntyrea67473a2015-02-12 08:26:33 +000032 return "<SwitchErrors: errors_in: %d, errors_out: %d>" % (self.errors_in, self.errors_out)
Steve McIntyre96f2c652015-02-12 04:25:55 +000033
34 # For now, just count the error. Later on we might add stats and
35 # analysis
36 def log_error_in(self, text):
37 self.errors_in += 1
38
39 # For now, just count the error. Later on we might add stats and
40 # analysis
41 def log_error_out(self, text):
42 self.errors_out += 1
43
Steve McIntyre30bf4db2014-08-12 18:08:22 +010044class SwitchDriver(object):
Steve McIntyre366046f2014-08-18 18:57:03 +010045
Steve McIntyre30bf4db2014-08-12 18:08:22 +010046 connection = None
47 hostname = ""
Steve McIntyre366046f2014-08-18 18:57:03 +010048 serial_number = ''
49
Steve McIntyre9936d002014-10-01 15:54:10 +010050 _allowed_port_modes = [ "trunk", "access" ]
Steve McIntyre366046f2014-08-18 18:57:03 +010051 _ports = []
52 _prompt_name = ''
53 _systemdata = []
Steve McIntyre30bf4db2014-08-12 18:08:22 +010054
Steve McIntyre2b4c07b2014-12-22 16:10:04 +000055 def _dump_list(self, data):
Steve McIntyre30bf4db2014-08-12 18:08:22 +010056 i = 0
Steve McIntyre2b4c07b2014-12-22 16:10:04 +000057 for line in data:
Steve McIntyre30bf4db2014-08-12 18:08:22 +010058 print "%d: \"%s\"" % (i, line)
59 i += 1
60
61 def _delay(self):
62 time.sleep(0.5)
63
Steve McIntyre366046f2014-08-18 18:57:03 +010064 # List the capabilities of the switch (and driver) - some things
65 # make no sense to abstract. Returns a dict of strings, each one
66 # describing an extra feature that that higher levels may care
67 # about
Steve McIntyre9b09b9d2014-09-24 15:08:10 +010068 def switch_get_capabilities(self):
Steve McIntyre366046f2014-08-18 18:57:03 +010069 return self._capabilities
70
71 # List the names of all the ports on the switch
Steve McIntyre9b09b9d2014-09-24 15:08:10 +010072 def switch_get_port_names(self):
Steve McIntyre366046f2014-08-18 18:57:03 +010073 return self._ports
74
75 def _is_port_name_valid(self, name):
Steve McIntyre366046f2014-08-18 18:57:03 +010076 for port in self._ports:
77 if name == port:
78 return True
79 return False
80
81 def _is_port_mode_valid(self, mode):
Steve McIntyre366046f2014-08-18 18:57:03 +010082 for allowed in self._allowed_port_modes:
83 if allowed == mode:
84 return True
85 return False
86