diff options
Diffstat (limited to 'compass-tasks/hdsdiscovery/vendors/ovswitch')
4 files changed, 0 insertions, 189 deletions
diff --git a/compass-tasks/hdsdiscovery/vendors/ovswitch/__init__.py b/compass-tasks/hdsdiscovery/vendors/ovswitch/__init__.py deleted file mode 100644 index 4ee55a4..0000000 --- a/compass-tasks/hdsdiscovery/vendors/ovswitch/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2014 Huawei Technologies Co. Ltd -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/compass-tasks/hdsdiscovery/vendors/ovswitch/ovswitch.py b/compass-tasks/hdsdiscovery/vendors/ovswitch/ovswitch.py deleted file mode 100644 index 4d03328..0000000 --- a/compass-tasks/hdsdiscovery/vendors/ovswitch/ovswitch.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright 2014 Huawei Technologies Co. Ltd -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Open Vswitch module.""" -import logging -import re - -from compass.hdsdiscovery import base -from compass.hdsdiscovery import utils - - -# Vendor_loader will load vendor instance by CLASS_NAME -CLASS_NAME = "OVSwitch" - - -class OVSwitch(base.BaseVendor): - """Open Vswitch.""" - def __init__(self): - self.__name = "Open vSwitch" - - def is_this_vendor(self, sys_info, host=None, credential=None, **kwargs): - """Determine if the hostname is accociated witH this vendor. - - :param host: swtich's IP address - :param credential: credential to access switch - """ - result = sys_info - if host and credential: - if utils.is_valid_ssh_credential(credential): - user = credential['username'] - pwd = credential['password'] - - else: - msg = ("[OVSwitch]The format of credential %r is not for SSH " - "or incorrect Keywords! " % credential) - logging.info(msg) - return False - - cmd = "ovs-vsctl -V" - result = None - try: - result = utils.ssh_remote_execute(host, user, pwd, cmd) - logging.debug('%s result for %s is %s', cmd, host, result) - if not result: - return False - except Exception as exc: - logging.error("No vendor or connection failed to run %s", cmd) - logging.exception(exc) - return False - - if isinstance(result, str): - result = [result] - - for line in result: - if not line: - continue - if re.search(r"\b" + re.escape(self.__name) + r"\b", line): - return True - - return False - - @property - def name(self): - """Open Vswitch name.""" - return self.__name diff --git a/compass-tasks/hdsdiscovery/vendors/ovswitch/plugins/__init__.py b/compass-tasks/hdsdiscovery/vendors/ovswitch/plugins/__init__.py deleted file mode 100644 index 4ee55a4..0000000 --- a/compass-tasks/hdsdiscovery/vendors/ovswitch/plugins/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2014 Huawei Technologies Co. Ltd -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/compass-tasks/hdsdiscovery/vendors/ovswitch/plugins/mac.py b/compass-tasks/hdsdiscovery/vendors/ovswitch/plugins/mac.py deleted file mode 100644 index 5f497a0..0000000 --- a/compass-tasks/hdsdiscovery/vendors/ovswitch/plugins/mac.py +++ /dev/null @@ -1,87 +0,0 @@ -# Copyright 2014 Huawei Technologies Co. Ltd -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Open Vswitch Mac address module.""" -import logging - -from compass.hdsdiscovery import base -from compass.hdsdiscovery import utils - - -CLASS_NAME = "Mac" - - -class Mac(base.BasePlugin): - """Open Vswitch MAC address module.""" - def __init__(self, host, credential): - self.host = host - self.credential = credential - - def process_data(self, oper="SCAN", **kwargs): - """Dynamically call the function according 'oper' - - :param oper: operation of data processing - """ - func_name = oper.lower() - return getattr(self, func_name)(**kwargs) - - def scan(self, **kwargs): - """Implemnets the scan method in BasePlugin class. - - .. note:: - In this module, mac addesses were retrieved by ssh. - """ - try: - user = self.credential['username'] - pwd = self.credential['password'] - except KeyError: - logging.error("Cannot find username and password in credential") - return None - - cmd = ("BRIDGES=$(ovs-vsctl show |grep Bridge |cut -f 2 -d '\"');" - "for br in $BRIDGES; do" - "PORTS=$(ovs-ofctl show $br |grep addr |cut -f 1 -d ':' " - "|egrep -v 'eth|wlan|LOCAL'|awk -F '(' '{print $1}');" - "for port in $PORTS; do" - "RESULT=$(ovs-appctl fdb/show $br |" - "awk '$1 == '$port' {print $1" "$2" "$3}');" - "echo '$RESULT'" - "done;" - "done;") - output = None - try: - output = utils.ssh_remote_execute(self.host, user, pwd, cmd) - except Exception as error: - logging.exception(error) - return None - - logging.debug("[scan][output] output is %s", output) - if not output: - return None - - fields_arr = ['port', 'vlan', 'mac'] - - result = [] - for line in output: - if not line or line == '\n': - continue - - values_arr = line.split() - temp = {} - for field, value in zip(fields_arr, values_arr): - temp[field] = value - - result.append(temp.copy()) - - return result |