summaryrefslogtreecommitdiffstats
path: root/compass-tasks/hdsdiscovery
diff options
context:
space:
mode:
authorHarry Huang <huangxiangyu5@huawei.com>2017-11-17 14:53:44 +0800
committerHarry Huang <huangxiangyu5@huawei.com>2017-12-21 16:36:30 +0800
commit8646b8d62cf4ca7b6bccae537a0c9e72ba45eab3 (patch)
tree73a9a983e0dd1423e9df928a78a5023a09d5a7f9 /compass-tasks/hdsdiscovery
parent6234176ae292a75dcda5520324cb7857d6105988 (diff)
Merge compass-tasks-osa and compass-tasks-k8s
JIRA: COMPASS-568 rename compass-tasks to compass-tasks-base. add both osa and k8s support in compass-tasks Change-Id: I438f5b17e509d4cb751ced0ffe640ec70899882f Signed-off-by: Harry Huang <huangxiangyu5@huawei.com>
Diffstat (limited to 'compass-tasks/hdsdiscovery')
-rw-r--r--compass-tasks/hdsdiscovery/SNMP_CONFIG.md33
-rw-r--r--compass-tasks/hdsdiscovery/__init__.py13
-rw-r--r--compass-tasks/hdsdiscovery/base.py185
-rw-r--r--compass-tasks/hdsdiscovery/error.py26
-rw-r--r--compass-tasks/hdsdiscovery/hdmanager.py171
-rw-r--r--compass-tasks/hdsdiscovery/utils.py289
-rw-r--r--compass-tasks/hdsdiscovery/vendors/__init__.py13
-rw-r--r--compass-tasks/hdsdiscovery/vendors/appliance/__init__.py0
-rw-r--r--compass-tasks/hdsdiscovery/vendors/appliance/appliance.py34
-rw-r--r--compass-tasks/hdsdiscovery/vendors/appliance/plugins/__init__.py0
-rw-r--r--compass-tasks/hdsdiscovery/vendors/appliance/plugins/mac.py48
-rw-r--r--compass-tasks/hdsdiscovery/vendors/arista/__init__.py13
-rw-r--r--compass-tasks/hdsdiscovery/vendors/arista/arista.py33
-rw-r--r--compass-tasks/hdsdiscovery/vendors/arista/plugins/__init__.py13
-rw-r--r--compass-tasks/hdsdiscovery/vendors/arista/plugins/mac.py24
-rw-r--r--compass-tasks/hdsdiscovery/vendors/hp/__init__.py13
-rw-r--r--compass-tasks/hdsdiscovery/vendors/hp/hp.py33
-rw-r--r--compass-tasks/hdsdiscovery/vendors/hp/plugins/__init__.py13
-rw-r--r--compass-tasks/hdsdiscovery/vendors/hp/plugins/mac.py23
-rw-r--r--compass-tasks/hdsdiscovery/vendors/huawei/__init__.py13
-rw-r--r--compass-tasks/hdsdiscovery/vendors/huawei/huawei.py33
-rw-r--r--compass-tasks/hdsdiscovery/vendors/huawei/plugins/__init__.py13
-rw-r--r--compass-tasks/hdsdiscovery/vendors/huawei/plugins/mac.py63
-rw-r--r--compass-tasks/hdsdiscovery/vendors/ovswitch/__init__.py13
-rw-r--r--compass-tasks/hdsdiscovery/vendors/ovswitch/ovswitch.py76
-rw-r--r--compass-tasks/hdsdiscovery/vendors/ovswitch/plugins/__init__.py13
-rw-r--r--compass-tasks/hdsdiscovery/vendors/ovswitch/plugins/mac.py87
-rw-r--r--compass-tasks/hdsdiscovery/vendors/pica8/__init__.py13
-rw-r--r--compass-tasks/hdsdiscovery/vendors/pica8/pica8.py33
-rw-r--r--compass-tasks/hdsdiscovery/vendors/pica8/plugins/__init__.py13
-rw-r--r--compass-tasks/hdsdiscovery/vendors/pica8/plugins/mac.py24
31 files changed, 0 insertions, 1371 deletions
diff --git a/compass-tasks/hdsdiscovery/SNMP_CONFIG.md b/compass-tasks/hdsdiscovery/SNMP_CONFIG.md
deleted file mode 100644
index 337b542..0000000
--- a/compass-tasks/hdsdiscovery/SNMP_CONFIG.md
+++ /dev/null
@@ -1,33 +0,0 @@
-Install & Config Prerequisite Packages:
-
-1. Net-Snmp:
- a. #apt-get install -y snmpd snmp libsnmp-python
- b. #apt-get install -y snmp-mibs-downloader
- For Centos:
- # yum install net-snmp net-snmp-utils
-
- c. create vendor's mibs directory(for example):
- - #mkdir -p /root/.snmp/mibs/huawei
- - #vim /etc/snmp/snmp.conf (if not exists, create snmp.conf file)
- * add vendor;s mibs directory:
- mibdirs +/root/.snmp/mibs/huawei
- * comment the line:
- #mibs:
- d. copy vendor's mibs to that directory
- e. #vim /etc/default/snmpd
- * modify the directive from
- TRAPDRUN=no --> TRAPDRUN=yes
- For Centos:
- # vim /etc/sysconfig/snmpd
- * modify into or add the directive
- TRAPDRUN=yes
-
- f. #vim /etc/snmp/snmpd.conf
- * add the following line, where $ip is the ip address of manager machine:
- com2sec mynetwork $ip/24 public
- g. #service snmpd restart
-
- Note: net-snmp-config is used to see default configuration
-
-2. paramiko:
- #apt-get install python-paramiko
diff --git a/compass-tasks/hdsdiscovery/__init__.py b/compass-tasks/hdsdiscovery/__init__.py
deleted file mode 100644
index 4ee55a4..0000000
--- a/compass-tasks/hdsdiscovery/__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/base.py b/compass-tasks/hdsdiscovery/base.py
deleted file mode 100644
index 77b3b0b..0000000
--- a/compass-tasks/hdsdiscovery/base.py
+++ /dev/null
@@ -1,185 +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.
-
-"""
-Base class extended by specific vendor in vendors directory.
-A vendor needs to implement abstract methods of base class.
-"""
-import logging
-import re
-
-from abc import ABCMeta
-
-from compass.hdsdiscovery.error import TimeoutError
-from compass.hdsdiscovery import utils
-
-
-class BaseVendor(object):
- """Basic Vendor object."""
- __metaclass__ = ABCMeta
-
- def is_this_vendor(self, sys_info, **kwargs):
- """Determine if the host is associated with this vendor.
-
- This function must be implemented by vendor itself
- """
- raise NotImplementedError
-
-
-class BaseSnmpVendor(BaseVendor):
- """Base SNMP-based vendor plugin.
-
- .. note::
- It uses MIB-II sysDescr value to determine the vendor of the switch.
- """
-
- def __init__(self, matched_names):
- super(BaseSnmpVendor, self).__init__()
- self._matched_names = matched_names
-
- def is_this_vendor(self, sys_info, **kwargs):
- """Determine if the switch belongs to this vendor.
-
- Matching the system information retrieved from the switch.
- :param str sys_info: the system information retrieved from a switch
- Return True
- """
- if sys_info:
- for name in self._matched_names:
- if re.search(r"\b" + re.escape(name) + r"\b", sys_info,
- re.IGNORECASE):
- return True
- return False
-
-
-class BasePlugin(object):
- """Extended by vendor's plugin.
-
- This plugin processes request and retrieve info directly from the switch.
- """
- __metaclass__ = ABCMeta
-
- def process_data(self, oper='SCAN', **kwargs):
- """Each vendors will have some plugins to do some operations.
-
- Plugin will process request data and return expected result.
-
- :param oper: operation function name.
- :param kwargs: key-value pairs of arguments
- """
- raise NotImplementedError
-
- # At least one of these three functions below must be implemented.
- def scan(self, **kwargs):
- """Get multiple records at once."""
- pass
-
- def set(self, **kwargs):
- """Set value to desired variable."""
- pass
-
- def get(self, **kwargs):
- """Get one record from a host."""
- pass
-
-
-class BaseSnmpMacPlugin(BasePlugin):
- """Base snmp plugin."""
-
- def __init__(self, host, credential, oid='BRIDGE-MIB::dot1dTpFdbPort',
- vlan_oid='Q-BRIDGE-MIB::dot1qPvid'):
- super(BaseSnmpMacPlugin, self).__init__()
- self.host = host
- self.credential = credential
- self.oid = oid
- self.port_oid = 'ifName'
- self.vlan_oid = vlan_oid
-
- def process_data(self, oper='SCAN', **kwargs):
- """progress data."""
- func_name = oper.lower()
- return getattr(self, func_name)(**kwargs)
-
- def scan(self, **kwargs):
- """scan."""
- results = None
- try:
- results = utils.snmpwalk_by_cl(self.host, self.credential,
- self.oid)
- except TimeoutError as error:
- logging.debug("PluginMac:scan snmpwalk_by_cl failed: %s",
- error.message)
- return None
-
- mac_list = []
- for entity in results:
- if_index = entity['value']
- if entity and int(if_index):
- tmp = {}
- mac_numbers = entity['iid'].split('.')
- tmp['mac'] = self.get_mac_address(mac_numbers)
- tmp['port'] = self.get_port(if_index)
- tmp['vlan'] = self.get_vlan_id(if_index)
- mac_list.append(tmp)
-
- return mac_list
-
- def get_vlan_id(self, port):
- """Get vlan Id."""
- if not port:
- return None
-
- oid = '.'.join((self.vlan_oid, port))
- vlan_id = None
- result = None
- try:
- result = utils.snmpget_by_cl(self.host, self.credential, oid)
- except TimeoutError as error:
- logging.debug("[PluginMac:get_vlan_id snmpget_by_cl failed: %s]",
- error.message)
- return None
-
- vlan_id = result.split()[-1]
- return vlan_id
-
- def get_port(self, if_index):
- """Get port number."""
-
- if_name = '.'.join((self.port_oid, if_index))
- result = None
- try:
- result = utils.snmpget_by_cl(self.host, self.credential, if_name)
- except TimeoutError as error:
- logging.debug("[PluginMac:get_port snmpget_by_cl failed: %s]",
- error.message)
- return None
-
- # A result may be like "Value: FasterEthernet1/2/34
- port = result.split()[-1].split('/')[-1]
- return port
-
- def convert_to_hex(self, value):
- """Convert the integer from decimal to hex."""
-
- return "%0.2x" % int(value)
-
- def get_mac_address(self, mac_numbers):
- """Assemble mac address from the list."""
- if len(mac_numbers) != 6:
- logging.error("[PluginMac:get_mac_address] MAC address must be "
- "6 digitals")
- return None
-
- mac_in_hex = [self.convert_to_hex(num) for num in mac_numbers]
- return ":".join(mac_in_hex)
diff --git a/compass-tasks/hdsdiscovery/error.py b/compass-tasks/hdsdiscovery/error.py
deleted file mode 100644
index 5bcf1a2..0000000
--- a/compass-tasks/hdsdiscovery/error.py
+++ /dev/null
@@ -1,26 +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.
-
-"""hdsdiscovery module errors."""
-
-
-class TimeoutError(Exception):
- """Timeout error."""
-
- def __init__(self, message):
- super(TimeoutError, self).__init__(message)
- self.message = message
-
- def __str__(self):
- return repr(self.message)
diff --git a/compass-tasks/hdsdiscovery/hdmanager.py b/compass-tasks/hdsdiscovery/hdmanager.py
deleted file mode 100644
index 028d444..0000000
--- a/compass-tasks/hdsdiscovery/hdmanager.py
+++ /dev/null
@@ -1,171 +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.
-
-"""Manage hdsdiscovery functionalities."""
-import logging
-import os
-import re
-
-from compass.hdsdiscovery.error import TimeoutError
-from compass.hdsdiscovery import utils
-from compass.utils import setting_wrapper as setting
-from compass.utils import util
-
-
-UNREACHABLE = 'unreachable'
-NOTSUPPORTED = 'notsupported'
-ERROR = 'error'
-REPOLLING = 'repolling'
-
-
-class HDManager(object):
- """Process a request."""
-
- def __init__(self):
- base_dir = os.path.dirname(os.path.realpath(__file__))
- self.vendors_dir = os.path.join(base_dir, 'vendors')
- self.vendor_plugins_dir = os.path.join(self.vendors_dir, '?/plugins')
- self.snmp_sysdescr = 'sysDescr.0'
-
- def learn(self, host, credential, vendor, req_obj, oper="SCAN", **kwargs):
- """Insert/update record of switch_info.
-
- Get expected results from switch according to sepcific operation.
-
- :param req_obj: the object of a machine
- :param host: switch IP address
- :param credientials: credientials to access switch
- :param oper: operations of the plugin (SCAN, GETONE, SET)
- :param kwargs(optional): key-value pairs
- """
- plugin_dir = self.vendor_plugins_dir.replace('?', vendor)
- if not os.path.exists(plugin_dir):
- logging.error('No such directory: %s', plugin_dir)
- return None
-
- plugin = utils.load_module(req_obj, plugin_dir, host, credential)
- if not plugin:
- # No plugin found!
- # TODO(Grace): add more code to catch excpetion or unexpected state
- logging.error('no plugin %s to load from %s', req_obj, plugin_dir)
- return None
-
- return plugin.process_data(oper, **kwargs)
-
- def is_valid_vendor(self, host, credential, vendor):
- """Check if vendor is associated with this host and credential
-
- :param host: switch ip
- :param credential: credential to access switch
- :param vendor: the vendor of switch
- """
- vendor_dir = os.path.join(self.vendors_dir, vendor)
- if not os.path.exists(vendor_dir):
- logging.error('no such directory: %s', vendor_dir)
- return False
-
- sys_info, err = self.get_sys_info(host, credential)
- if not sys_info:
- logging.debug("[hdsdiscovery][hdmanager][is_valid_vendor]"
- "failded to get sys information: %s", err)
- return False
-
- instance = utils.load_module(vendor, vendor_dir)
- if not instance:
- logging.debug("[hdsdiscovery][hdmanager][is_valid_vendor]"
- "No such vendor found!")
- return False
-
- if instance.is_this_vendor(sys_info):
- logging.info("[hdsdiscovery][hdmanager][is_valid_vendor]"
- "vendor %s is correct!", vendor)
- return True
-
- return False
-
- def get_vendor(self, host, credential):
- """Check and get vendor of the switch.
-
- :param host: switch ip:
- :param credential: credential to access switch
- :return a tuple (vendor, switch_state, error)
- """
-
- switch_lists = util.load_configs(setting.MACHINE_LIST_DIR)
- switch_list = []
- for items in switch_lists:
- for item in items['MACHINE_LIST']:
- for k, v in item.items():
- switch_list.append(k)
- if host in switch_list:
- return ("appliance", "Found", "")
-
- # TODO(grace): Why do we need to have valid IP?
- # a hostname should also work.
- if not utils.valid_ip_format(host):
- logging.error("host '%s' is not valid IP address!", host)
- return (None, ERROR, "Invalid IP address %s!" % host)
-
- if not utils.is_valid_snmp_v2_credential(credential):
- logging.debug("******The credential %s of host %s cannot "
- "be used for either SNMP v2 or SSH*****",
- credential, host)
- return (None, ERROR, "Invalid credential")
-
- sys_info, err = self.get_sys_info(host, credential)
- if not sys_info:
- return (None, UNREACHABLE, err)
-
- # List all vendors in vendors directory -- a directory but hidden
- # under ../vendors
- all_vendors = [o for o in os.listdir(self.vendors_dir)
- if os.path.isdir(os.path.join(self.vendors_dir, o))
- and re.match(r'^[^\.]', o)]
-
- logging.debug("[get_vendor][available vendors]: %s ", all_vendors)
- logging.debug("[get_vendor] System Information is [%s]", sys_info)
-
- # TODO(grace): should not conver to lower. The vendor impl can choose
- # to do case-insensitive match
- # sys_info = sys_info.lower()
- vendor = None
- for vname in all_vendors:
- vpath = os.path.join(self.vendors_dir, vname)
- instance = utils.load_module(vname, vpath)
- if not instance:
- logging.error('no instance %s load from %s', vname, vpath)
- continue
-
- if instance.is_this_vendor(sys_info):
- logging.info("[get_vendor]****Found vendor '%s'****", vname)
- vendor = vname
- break
-
- if not vendor:
- logging.debug("[get_vendor] No vendor found! <==================")
- return (None, NOTSUPPORTED, "Not supported switch vendor!")
-
- return (vendor, REPOLLING, "")
-
- def get_sys_info(self, host, credential):
- """get sys info."""
- sys_info = None
- try:
- sys_info = utils.snmpget_by_cl(host,
- credential,
- self.snmp_sysdescr)
- except TimeoutError as error:
- return (None, error.message)
-
- return (sys_info, "")
diff --git a/compass-tasks/hdsdiscovery/utils.py b/compass-tasks/hdsdiscovery/utils.py
deleted file mode 100644
index 72adb0a..0000000
--- a/compass-tasks/hdsdiscovery/utils.py
+++ /dev/null
@@ -1,289 +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.
-
-"""Utility functions
- Including functions of get/getbulk/walk/set of snmp for three versions
-"""
-import imp
-import logging
-import re
-import subprocess
-
-from compass.hdsdiscovery.error import TimeoutError
-
-
-def load_module(mod_name, path, host=None, credential=None):
- """Load a module instance.
-
- :param str mod_name: module name
- :param str path: directory of the module
- :param str host: switch ip address
- :param str credential: credential used to access switch
- """
- try:
- mod_file, path, descr = imp.find_module(mod_name, [path])
- if mod_file:
- mod = imp.load_module(mod_name, mod_file, path, descr)
- if host and credential:
- instance = getattr(mod, mod.CLASS_NAME)(host, credential)
- else:
- instance = getattr(mod, mod.CLASS_NAME)()
-
- return instance
- except ImportError as exc:
- logging.error('No such module found: %s', mod_name)
- logging.exception(exc)
- return None
-
-
-def ssh_remote_execute(host, username, password, cmd):
- """SSH to execute script on remote machine
-
- :param host: ip of the remote machine
- :param username: username to access the remote machine
- :param password: password to access the remote machine
- :param cmd: command to execute
- """
- try:
- import paramiko
- if not cmd:
- logging.error("[hdsdiscovery][utils][ssh_remote_execute] command"
- "is None! Failed!")
- return None
-
- client = paramiko.SSHClient()
- client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- client.connect(host, username=username, password=password, timeout=15)
- stdin, stdout, stderr = client.exec_command(cmd)
- result = stdout.readlines()
- return result
-
- except ImportError as exc:
- logging.error("[hdsdiscovery][utils][ssh_remote_execute] failed to"
- "load module 'paramiko', donnot exist!")
- logging.exception(exc)
- return None
-
- except Exception as exc:
- logging.error("[hdsdiscovery][utils][ssh_remote_execute] failed: %s",
- cmd)
- logging.exception(exc)
- return None
-
- finally:
- stdin.close()
- stdout.close()
- stderr.close()
- client.close()
-
-
-def valid_ip_format(ip_address):
- """Valid the format of an Ip address."""
-
- if not re.match(r'^((([0-2]?\d{0,2}\.){3}([0-2]?\d{0,2}))'
- r'|(([\da-fA-F]{1,4}:){7}([\da-fA-F]{1,4})))$',
- ip_address):
- # check IP's format is match ipv4 or ipv6 by regex
- return False
-
- return True
-
-#################################################################
-# Implement snmpwalk and snmpget funtionality
-# The structure of returned dictionary will by tag/iid/value/type
-#################################################################
-AUTH_VERSIONS = {
- '1': 1,
- '2c': 2,
- '3': 3
-}
-
-
-def snmp_walk(host, credential, *args, **kwargs):
- """Impelmentation of snmpwalk functionality
-
- :param host: switch ip
- :param credential: credential to access switch
- :param args: OIDs
- :param kwargs: key-value pairs
- """
- try:
- import netsnmp
-
- except ImportError:
- logging.error("Module 'netsnmp' do not exist! Please install it first")
- return None
-
- if 'version' not in credential or 'community' not in credential:
- logging.error("[utils] missing 'version' and 'community' in %s",
- credential)
- return None
-
- version = None
- if credential['version'] in AUTH_VERSIONS:
- version = AUTH_VERSIONS[credential['version']]
-
- varbind_list = []
- for arg in args:
- varbind = netsnmp.Varbind(arg)
- varbind_list.append(varbind)
-
- var_list = netsnmp.VarList(*varbind_list)
-
- netsnmp.snmpwalk(var_list,
- DestHost=host,
- Version=version,
- Community=credential['community'],
- **kwargs)
-
- result = []
- if not var_list:
- logging.error("[hsdiscovery][utils][snmp_walk] retrived no record!")
- return result
-
- for var in var_list:
- response = {}
- response['elem_name'] = var.tag
- response['iid'] = var.iid
- response['value'] = var.val
- response['type'] = var.type
- result.append(response)
-
- return result
-
-
-def snmp_get(host, credential, object_type, **kwargs):
- """Impelmentation of snmp get functionality
-
- :param object_type: mib object
- :param host: switch ip
- :param credential: the dict of credential to access switch
- """
- try:
- import netsnmp
-
- except ImportError:
- logging.error("Module 'netsnmp' do not exist! Please install it first")
- return None
-
- if 'version' not in credential or 'community' not in credential:
- logging.error('[uitls][snmp_get] missing keywords in %s for %s',
- credential, host)
- return None
-
- version = None
- if credential['version'] in AUTH_VERSIONS:
- version = AUTH_VERSIONS[credential['version']]
-
- varbind = netsnmp.Varbind(object_type)
- res = netsnmp.snmpget(varbind,
- DestHost=host,
- Version=version,
- Community=credential['community'],
- **kwargs)
- if res and res[0]:
- return res[0]
-
- logging.info('no result found for %s %s', host, credential)
- return None
-
-
-SSH_CREDENTIALS = {"username": "", "password": ""}
-SNMP_V2_CREDENTIALS = {"version": "", "community": ""}
-
-
-def is_valid_snmp_v2_credential(credential):
- """check if credential is valid snmp v2 credential."""
- if credential.keys() != SNMP_V2_CREDENTIALS.keys():
- return False
- if credential['version'] != '2c':
- logging.error("The value of version in credential is not '2c'!")
- return False
- return True
-
-
-def is_valid_ssh_credential(credential):
- """check if credential is valid ssh credential."""
- if credential.keys() != SSH_CREDENTIALS.keys():
- return False
- return True
-
-
-def snmpget_by_cl(host, credential, oid, timeout=8, retries=3):
- """snmpget by credential."""
- if not is_valid_snmp_v2_credential(credential):
- logging.error("[utils][snmpget_by_cl] Credential %s cannot be used "
- "for SNMP request!", credential)
- return None
-
- version = credential['version']
- community = credential['community']
- cmd = "snmpget -v %s -c %s -Ob -r %s -t %s %s %s" % (
- version, community, retries, timeout, host, oid)
-
- returncode, output, err = exec_command(cmd)
-
- if returncode and err:
- logging.error("[snmpget_by_cl] %s", err)
- raise TimeoutError(err.strip('\n'))
-
- return output.strip('\n')
-
-
-def snmpwalk_by_cl(host, credential, oid, timeout=5, retries=3):
- """snmpwalk by credential."""
- if not is_valid_snmp_v2_credential(credential):
- logging.error("[utils][snmpwalk_by_cl] Credential %s cannot be used "
- "for SNMP request!", credential)
- return None
-
- version = credential['version']
- community = credential['community']
- cmd = "snmpwalk -v %s -c %s -Cc -r %s -t %s -Ob %s %s" % (
- version, community, retries, timeout, host, oid)
-
- returncode, output, err = exec_command(cmd)
-
- if returncode and err:
- logging.debug("[snmpwalk_by_cl] %s ", err)
- raise TimeoutError(err)
-
- result = []
- if not output:
- return result
-
- output = output.split('\n')
- for line in output:
- if not line:
- continue
- temp = {}
- arr = line.split(" ")
- temp['iid'] = arr[0].split('.', 1)[-1]
- temp['value'] = arr[-1]
- result.append(temp)
-
- return result
-
-
-def exec_command(command):
- """Execute command.
-
- Return a tuple: returncode, output and error message(None if no error).
- """
- sub_p = subprocess.Popen(command,
- shell=True,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- output, err_msg = sub_p.communicate()
- return (sub_p.returncode, output, err_msg)
diff --git a/compass-tasks/hdsdiscovery/vendors/__init__.py b/compass-tasks/hdsdiscovery/vendors/__init__.py
deleted file mode 100644
index 4ee55a4..0000000
--- a/compass-tasks/hdsdiscovery/vendors/__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/appliance/__init__.py b/compass-tasks/hdsdiscovery/vendors/appliance/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/compass-tasks/hdsdiscovery/vendors/appliance/__init__.py
+++ /dev/null
diff --git a/compass-tasks/hdsdiscovery/vendors/appliance/appliance.py b/compass-tasks/hdsdiscovery/vendors/appliance/appliance.py
deleted file mode 100644
index 3d66f4e..0000000
--- a/compass-tasks/hdsdiscovery/vendors/appliance/appliance.py
+++ /dev/null
@@ -1,34 +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.
-
-
-"""Vendor: Compass Appliance"""
-from compass.hdsdiscovery import base
-
-
-# Vendor_loader will load vendor instance by CLASS_NAME
-CLASS_NAME = 'Appliance'
-
-
-class Appliance(base.BaseSnmpVendor):
- """Fake SNMP object for compass appliance."""
-
- def __init__(self):
- base.BaseSnmpVendor.__init__(self, ['appliance'])
- self.__name = 'appliance'
-
- @property
- def name(self):
- """Get 'name' proptery."""
- return self.__name
diff --git a/compass-tasks/hdsdiscovery/vendors/appliance/plugins/__init__.py b/compass-tasks/hdsdiscovery/vendors/appliance/plugins/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/compass-tasks/hdsdiscovery/vendors/appliance/plugins/__init__.py
+++ /dev/null
diff --git a/compass-tasks/hdsdiscovery/vendors/appliance/plugins/mac.py b/compass-tasks/hdsdiscovery/vendors/appliance/plugins/mac.py
deleted file mode 100644
index cc14881..0000000
--- a/compass-tasks/hdsdiscovery/vendors/appliance/plugins/mac.py
+++ /dev/null
@@ -1,48 +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.
-
-"""Compass Appliance Mac module."""
-from compass.hdsdiscovery import base
-from compass.utils import setting_wrapper as setting
-from compass.utils import util
-
-import logging
-
-
-CLASS_NAME = "Mac"
-
-
-class Mac(base.BaseSnmpMacPlugin):
- """Processes MAC address."""
-
- def __init__(self, host, credential):
- self.host = host
- # self.credential = credential
- # return
-
- def scan(self):
- """Implemnets the scan method in BasePlugin class.
-
- .. note::
- Dummy scan function for compass appliance.
- Returns fixed mac addresses.
- """
- mac_list = None
- machine_lists = util.load_configs(setting.MACHINE_LIST_DIR)
- for items in machine_lists:
- for item in items['MACHINE_LIST']:
- for k, v in item.items():
- if k == self.host:
- mac_list = v
- return mac_list
diff --git a/compass-tasks/hdsdiscovery/vendors/arista/__init__.py b/compass-tasks/hdsdiscovery/vendors/arista/__init__.py
deleted file mode 100644
index 4ee55a4..0000000
--- a/compass-tasks/hdsdiscovery/vendors/arista/__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/arista/arista.py b/compass-tasks/hdsdiscovery/vendors/arista/arista.py
deleted file mode 100644
index 5eacea1..0000000
--- a/compass-tasks/hdsdiscovery/vendors/arista/arista.py
+++ /dev/null
@@ -1,33 +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.
-
-"""Vendor: Arista."""
-from compass.hdsdiscovery import base
-
-
-# Vendor_loader will load vendor instance by CLASS_NAME
-CLASS_NAME = 'Arista'
-
-
-class Arista(base.BaseSnmpVendor):
- """Arista Network switch object."""
-
- def __init__(self):
- base.BaseSnmpVendor.__init__(self, ['arista'])
- self._name = 'arista'
-
- @property
- def name(self):
- """Get 'name' proptery."""
- return self._name
diff --git a/compass-tasks/hdsdiscovery/vendors/arista/plugins/__init__.py b/compass-tasks/hdsdiscovery/vendors/arista/plugins/__init__.py
deleted file mode 100644
index 4ee55a4..0000000
--- a/compass-tasks/hdsdiscovery/vendors/arista/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/arista/plugins/mac.py b/compass-tasks/hdsdiscovery/vendors/arista/plugins/mac.py
deleted file mode 100644
index ed2f331..0000000
--- a/compass-tasks/hdsdiscovery/vendors/arista/plugins/mac.py
+++ /dev/null
@@ -1,24 +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.
-
-"""Pica8 Switch Mac module."""
-from compass.hdsdiscovery.base import BaseSnmpMacPlugin
-
-
-CLASS_NAME = 'Mac'
-
-
-class Mac(BaseSnmpMacPlugin):
- """Process MAC address by Arista switch."""
- pass
diff --git a/compass-tasks/hdsdiscovery/vendors/hp/__init__.py b/compass-tasks/hdsdiscovery/vendors/hp/__init__.py
deleted file mode 100644
index 4ee55a4..0000000
--- a/compass-tasks/hdsdiscovery/vendors/hp/__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/hp/hp.py b/compass-tasks/hdsdiscovery/vendors/hp/hp.py
deleted file mode 100644
index 7ddc5e9..0000000
--- a/compass-tasks/hdsdiscovery/vendors/hp/hp.py
+++ /dev/null
@@ -1,33 +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.
-
-"""Vendor: HP."""
-from compass.hdsdiscovery import base
-
-
-# Vendor_loader will load vendor instance by CLASS_NAME
-CLASS_NAME = 'Hp'
-
-
-class Hp(base.BaseSnmpVendor):
- """Hp switch object."""
-
- def __init__(self):
- base.BaseSnmpVendor.__init__(self, ['hp', 'procurve'])
- self.names = ['hp', 'procurve']
-
- @property
- def name(self):
- """Get 'name' proptery."""
- return self.names[0]
diff --git a/compass-tasks/hdsdiscovery/vendors/hp/plugins/__init__.py b/compass-tasks/hdsdiscovery/vendors/hp/plugins/__init__.py
deleted file mode 100644
index 4ee55a4..0000000
--- a/compass-tasks/hdsdiscovery/vendors/hp/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/hp/plugins/mac.py b/compass-tasks/hdsdiscovery/vendors/hp/plugins/mac.py
deleted file mode 100644
index 3bc81f4..0000000
--- a/compass-tasks/hdsdiscovery/vendors/hp/plugins/mac.py
+++ /dev/null
@@ -1,23 +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.
-
-"""HP Switch Mac module."""
-from compass.hdsdiscovery.base import BaseSnmpMacPlugin
-
-CLASS_NAME = 'Mac'
-
-
-class Mac(BaseSnmpMacPlugin):
- """Process MAC address by HP switch."""
- pass
diff --git a/compass-tasks/hdsdiscovery/vendors/huawei/__init__.py b/compass-tasks/hdsdiscovery/vendors/huawei/__init__.py
deleted file mode 100644
index 4ee55a4..0000000
--- a/compass-tasks/hdsdiscovery/vendors/huawei/__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/huawei/huawei.py b/compass-tasks/hdsdiscovery/vendors/huawei/huawei.py
deleted file mode 100644
index 19fd043..0000000
--- a/compass-tasks/hdsdiscovery/vendors/huawei/huawei.py
+++ /dev/null
@@ -1,33 +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.
-
-"""Huawei Switch."""
-from compass.hdsdiscovery import base
-
-
-# Vendor_loader will load vendor instance by CLASS_NAME
-CLASS_NAME = "Huawei"
-
-
-class Huawei(base.BaseSnmpVendor):
- """Huawei switch."""
-
- def __init__(self):
- base.BaseSnmpVendor.__init__(self, ["huawei"])
- self.__name = "huawei"
-
- @property
- def name(self):
- """Return switch name."""
- return self.__name
diff --git a/compass-tasks/hdsdiscovery/vendors/huawei/plugins/__init__.py b/compass-tasks/hdsdiscovery/vendors/huawei/plugins/__init__.py
deleted file mode 100644
index 4ee55a4..0000000
--- a/compass-tasks/hdsdiscovery/vendors/huawei/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/huawei/plugins/mac.py b/compass-tasks/hdsdiscovery/vendors/huawei/plugins/mac.py
deleted file mode 100644
index 49d3863..0000000
--- a/compass-tasks/hdsdiscovery/vendors/huawei/plugins/mac.py
+++ /dev/null
@@ -1,63 +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.
-
-"""Huawei Switch Mac module."""
-import logging
-
-from compass.hdsdiscovery.base import BaseSnmpMacPlugin
-from compass.hdsdiscovery import utils
-
-
-CLASS_NAME = "Mac"
-
-
-class Mac(BaseSnmpMacPlugin):
- """Processes MAC address."""
-
- def __init__(self, host, credential):
- super(Mac, self).__init__(
- host, credential,
- 'HUAWEI-L2MAM-MIB::hwDynFdbPort')
-
- def scan(self):
- """Implemnets the scan method in BasePlugin class.
-
- .. note::
- In this mac module, mac addesses were retrieved by
- snmpwalk commandline.
- """
- results = utils.snmpwalk_by_cl(self.host, self.credential, self.oid)
-
- if not results:
- logging.info("[Huawei][mac] No results returned from SNMP walk!")
- return None
-
- mac_list = []
-
- for entity in results:
- # The format of 'iid' is like '248.192.1.214.34.15.31.1.48'
- # The first 6 numbers will be the MAC address
- # The 7th number is its vlan ID
- numbers = entity['iid'].split('.')
- mac = self.get_mac_address(numbers[:6])
- vlan = numbers[6]
- port = self.get_port(entity['value'])
-
- tmp = {}
- tmp['port'] = port
- tmp['mac'] = mac
- tmp['vlan'] = vlan
- mac_list.append(tmp)
-
- return mac_list
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
diff --git a/compass-tasks/hdsdiscovery/vendors/pica8/__init__.py b/compass-tasks/hdsdiscovery/vendors/pica8/__init__.py
deleted file mode 100644
index 4ee55a4..0000000
--- a/compass-tasks/hdsdiscovery/vendors/pica8/__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/pica8/pica8.py b/compass-tasks/hdsdiscovery/vendors/pica8/pica8.py
deleted file mode 100644
index 856817e..0000000
--- a/compass-tasks/hdsdiscovery/vendors/pica8/pica8.py
+++ /dev/null
@@ -1,33 +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.
-
-"""Vendor: Pica8."""
-from compass.hdsdiscovery import base
-
-
-# Vendor_loader will load vendor instance by CLASS_NAME
-CLASS_NAME = 'Pica8'
-
-
-class Pica8(base.BaseSnmpVendor):
- """Pica8 switch object."""
-
- def __init__(self):
- base.BaseSnmpVendor.__init__(self, ['pica8'])
- self._name = 'pica8'
-
- @property
- def name(self):
- """Get 'name' proptery."""
- return self._name
diff --git a/compass-tasks/hdsdiscovery/vendors/pica8/plugins/__init__.py b/compass-tasks/hdsdiscovery/vendors/pica8/plugins/__init__.py
deleted file mode 100644
index 4ee55a4..0000000
--- a/compass-tasks/hdsdiscovery/vendors/pica8/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/pica8/plugins/mac.py b/compass-tasks/hdsdiscovery/vendors/pica8/plugins/mac.py
deleted file mode 100644
index d5ccfc0..0000000
--- a/compass-tasks/hdsdiscovery/vendors/pica8/plugins/mac.py
+++ /dev/null
@@ -1,24 +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.
-
-"""Pica8 Switch Mac module."""
-from compass.hdsdiscovery.base import BaseSnmpMacPlugin
-
-
-CLASS_NAME = 'Mac'
-
-
-class Mac(BaseSnmpMacPlugin):
- """Process MAC address by Pica8 switch."""
- pass