Fix pep8 violations in csit/libraries/SwitchClasses/BaseSwitch.py
[integration/test.git] / test / csit / libraries / SwitchClasses / BaseSwitch.py
1 """
2 Base Switch Object Definition
3 Authors: james.luhrsen@hp.com
4 Created: 2014-09-20
5 """
6 import importlib
7 from xml.etree.ElementTree import *  # noqa
8
9
10 class BaseSwitch(object):
11     '''
12     Switch Base Class
13     '''
14
15     make = ''
16     model = ''
17
18     mgmt_protocol = ''
19     ssh_key = ''
20     mgmt_ip = ''
21     mgmt_port = ''
22     mgmt_user = ''
23     mgmt_password = ''
24     mgmt_prompt = ''
25
26     connection_index = ''
27
28     initialization_type = ''
29
30     of_controller_ip = ''
31
32     connection_configs = []
33
34     initialization_cmds = []
35
36     base_openflow_config = []
37
38     openflow_enable_config = []
39
40     openflow_enable_validations = []
41
42     openflow_disable_config = []
43     openflow_disable_validations = []
44
45     dump_all_flows = []
46
47     src_mac = ''
48     dst_mac = ''
49     ip_src = ''
50     ip_dst = ''
51     table_id = ''
52     action = ''
53
54     datapath_id_output_string = ''
55     datapath_id_output_command = ''
56     datapath_id = ''
57
58     def set_connection_index(self, idx):
59         self.connection_index = idx
60
61     def set_controller_ip(self, ip):
62         self.of_controller_ip = ip
63
64     def set_mgmt_ip(self, ip):
65         self.mgmt_ip = ip
66
67     def set_mgmt_user(self, user):
68         self.mgmt_user = user
69
70     def set_ssh_key(self, key):
71         self.ssh_key = key
72
73     def update_datapath_id(self):
74         raise NotImplementedError("Please implement this method")
75
76     def create_flow_match_elements(self, flow_xml):
77         flow_tree = fromstring(flow_xml)
78
79         self.table_id = flow_tree.find('{urn:opendaylight:flow:inventory}table_id').text
80
81         instructions_element = flow_tree.find('{urn:opendaylight:flow:inventory}instructions')
82         instruction_element = instructions_element.find('{urn:opendaylight:flow:inventory}instruction')
83         apply_actions = instruction_element.find('{urn:opendaylight:flow:inventory}apply-actions')
84         action = apply_actions.find('{urn:opendaylight:flow:inventory}action')
85         output_action = action.find('{urn:opendaylight:flow:inventory}output-action')
86         output_node_connector = output_action.find('{urn:opendaylight:flow:inventory}output-node-connector')
87         self.action = output_node_connector.text
88
89         match_element = flow_tree.find('{urn:opendaylight:flow:inventory}match')
90         ethernet_match_element = match_element.find('{urn:opendaylight:flow:inventory}ethernet-match')
91
92         ethernet_source = ethernet_match_element.find('{urn:opendaylight:flow:inventory}ethernet-source')
93         ethernet_source_address = ethernet_source.find('{urn:opendaylight:flow:inventory}address')
94         self.src_mac = ethernet_source_address.text
95
96         ethernet_destination = ethernet_match_element.find('{urn:opendaylight:flow:inventory}ethernet-destination')
97         ethernet_destination_address = ethernet_destination.find('{urn:opendaylight:flow:inventory}address')
98         self.dst_mac = ethernet_destination_address.text
99
100         self.ip_src = match_element.find('{urn:opendaylight:flow:inventory}ipv4-source').text
101         self.ip_dst = match_element.find('{urn:opendaylight:flow:inventory}ipv4-destination').text
102
103     def convert_hex_to_decimal_as_string(self, hex_string):
104         # TODO: need to add error checking in case the hex_string is
105         #       not fully hex
106         return str(int(hex_string, 16))
107
108     def get_switch(self, switch_type):
109         '''
110         Generic method that will allow Robot Code to pass a string
111         to this "keyword - Get Switch" and create an object of that
112         type.  (EX: Get Switch  OVS)
113         '''
114
115         # TODO: what if the module "switch_type" does not exist.  Need some
116         #       error checking for that.
117         module = importlib.import_module(switch_type)
118         return getattr(module, switch_type)()