From 31e8ab2021fd107e56ec129b0093747e0314c900 Mon Sep 17 00:00:00 2001
From: thl-cmk <thl-cmk@outlook.com>
Date: Fri, 9 Jun 2023 16:37:17 +0000
Subject: [PATCH] Delete ciscosupport.py

---
 bin/ciscoapi/ciscosupport.py | 268 -----------------------------------
 1 file changed, 268 deletions(-)
 delete mode 100755 bin/ciscoapi/ciscosupport.py

diff --git a/bin/ciscoapi/ciscosupport.py b/bin/ciscoapi/ciscosupport.py
deleted file mode 100755
index 20472cc..0000000
--- a/bin/ciscoapi/ciscosupport.py
+++ /dev/null
@@ -1,268 +0,0 @@
-#!/usr/bin/env python
-# -*- encoding: utf-8; py-indent-offset: 4 -*-
-
-#
-# 15.04.2017 : Th.L. : Support for Cisco API
-#
-#  https://developer.cisco.com/docs/support-apis/
-#
-
-import logging
-import os
-import time
-import random
-import sys
-import json
-import copy
-import ciscoapi
-
-
-# sleep random time
-def sleep_random(max_minutes):
-    # set logg modul name <file>:<module>.<function>
-    logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
-
-    sleep_time = random.randint(1, 60 * max_minutes)
-    logger.info('%d seconds' % sleep_time)
-    time.sleep(sleep_time)
-    return
-
-
-def set_logging(loglevel):
-    numeric_level = getattr(logging, loglevel.upper(), None)
-    if not isinstance(numeric_level, int):
-        # set default loglevel if loglevel not valid
-        logging.basicConfig(level=logging.WARNING, format='%(asctime)s %(levelname)s %(name)s %(message)s')
-        logging.getLogger().setLevel(logging.WARNING)
-    else:
-        logging.basicConfig(level=numeric_level, format='%(asctime)s %(levelname)s %(name)s %(message)s')
-        logging.getLogger().setLevel(numeric_level)
-    return
-
-
-# read list of files from dir (eq. (P)IDs or SERIALs) (don't change to uppercase)
-# **kwargs: refresh_time:int in days
-def get_ids_from_dir(dir, **kwargs):
-    # set logg modul name <file>:<module>.<function>
-    logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
-    refresh_time = int(kwargs.get('refresh_time', 0)) * 86400
-    starttime = int(time.time())
-    ids = []
-    for (dirpath, dirnames, filenames) in os.walk(dir):
-        for id in filenames:
-            modifytime = int(os.path.getmtime(dirpath + '/' + id))
-            if (starttime - modifytime) > refresh_time:
-                ids.append(str(id).replace('_', '/'))
-        # do not read subdirs
-        break
-    # insert cleanup here (filter unwanted names, chars, etc...)
-    return ids
-
-
-# read list of sub directories from directory (PIDs) (don't anything)
-def get_subdirs_from_dir(base_dir):
-    # set logg modul name <file>:<module>.<function>
-    logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
-
-    sub_dirs = []
-    for (dirpath, sub_dirs, filenames) in os.walk(base_dir):
-        break
-    # insert cleanup here (filter unwanted names, chars, etc...)
-    return sub_dirs
-
-
-# read list of IOS/IOSXE Versions from directory (don't change to uppercase)
-def get_version_from_dir(dir):
-    # set logg modul name <file>:<module>.<function>
-    logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
-
-    versions = []
-    for (dirpath, dirnames, filenames) in os.walk(dir):
-        for id in filenames:
-            versions.append(str(id))
-        # do not read subdirs
-        break
-    # insert cleanup here (filter unwanted names, chars, etc...)
-    return versions
-
-
-# delete (P)IDs or SERIALs files from directory (requests)
-def remove_ids_from_dir(ids, dir):
-    # set logg modul name <file>:<module>.<function>
-    logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
-
-    for id in ids:
-        try:
-            os.remove(dir + id.replace('/', '_'))
-        except OSError:
-            pass
-
-
-# remove (P)IDs or SERIALs from list of (P)ID or serials
-def remove_ids_from_list(ids, dir):
-    # set logg modul name <file>:<module>.<function>
-    logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
-
-    knownids = []
-    for (dirpath, dirnames, filenames) in os.walk(dir):
-        knownids.extend(filenames)
-        # do not read subdirs
-        break
-
-    for knownid in knownids:
-        knownid = knownid.replace('_', '/')
-        for id in ids:
-            if knownid == id:
-                ids.remove(id)
-    return ids
-
-
-# returns al list of ids to refresh,
-# expects a directory with ids to check, the time interval, a list of IDs to add
-# if remove True it will delete the ID files from refresh_dir
-def refresh_ids_from_dir(refresh_dir, refresh_time, ids, remove):
-    # set logg modul name <file>:<module>.<function>
-    logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
-
-    refresh_dir = expand_path(refresh_dir)
-    # get seconds from # of days (days * 24 * 60 * 60 --> days * 86400)
-    refresh_time = int(refresh_time) * 86400
-    starttime = int(time.time())
-    refresh_ids = get_ids_from_dir(refresh_dir)
-    if refresh_ids != []:
-        for id in refresh_ids:
-            modifytime = int(os.path.getmtime(refresh_dir + id.replace('/', '_')))
-            if (starttime - modifytime) > refresh_time:
-                ids.append(id)
-                if remove:
-                    try:
-                        os.remove(refresh_dir + id.replace('/', '_'))
-                    except OSError:
-                        pass
-    return ids
-
-
-# check if dir exists, if not try to create it.
-# return True if dir exists or creation was ok.
-# return False if dir not exists and creation was not ok
-def check_dir_and_create(dir):
-    # set logg modul name <file>:<module>.<function>
-    logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
-
-    directory = os.path.dirname(dir)
-    if not os.path.exists(directory):
-        try:
-            os.makedirs(directory)
-        except:
-            return False
-    return True
-
-
-# expand homedir and add '/' if necessary and create directory if it not exists
-def expand_path(path):
-    # set logg modul name <file>:<module>.<function>
-    logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
-
-    homedir = os.path.expanduser('~')
-
-    if path.startswith('~'):
-        path = homedir + path[1:]
-
-    if not path.endswith('/'):
-        path += '/'
-
-    if not check_dir_and_create(path):
-        return ''
-
-    return path
-
-
-#  get cisco product series by pid
-def get_cisco_product_series_by_pid(pids, access_token):
-
-    set_logging('info')
-    # set logg modul name <file>:<module>.<function>
-    logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
-
-    conf_file = '~/etc/ciscoapi/ciscoapi.json'
-    conf_file = os.path.expanduser(conf_file)
-
-    productseriesfile = '~/var/ciscoapi/productinfo'
-    product_series = {}
-
-    if os.path.isfile(conf_file):
-        with open(conf_file) as f:
-            try:
-                config = json.load(f)
-                productseriesfile = config['productinfo'].get('productseriesfile', productseriesfile)
-            except ValueError as e:
-                logging.warning(f'snmp_cisco_eox:status:JSON load error: {e}')
-
-    productseriesfile = expand_path(productseriesfile) + 'productseries.json'
-
-    if os.path.isfile(productseriesfile):
-        with open(productseriesfile) as f:
-            product_series = json.load(f)
-
-    requestpids = copy.deepcopy(pids)
-    if product_series != {}:
-        keys = product_series.keys()
-        for pid in requestpids:
-            if pid in keys:
-                requestpids.remove(pid)
-
-    if requestpids != []:
-        product_infos = ciscoapi.get_product_mdf_information_by_pid(pids, access_token)
-
-        for entry in product_infos:
-            product_series.update({entry.get('product_id'): entry.get('product_series')})
-
-    with open(productseriesfile, 'w') as f:
-        json.dump(product_series, f)
-
-    return_product_series ={}
-    for pid in pids:
-        return_product_series.update({pid: product_series.get(pid, 'not found')})
-
-    return return_product_series
-
-
-# remove empty directories
-def remove_empty_sub_dirs(base_dir):
-    # set logg modul name <file>:<module>.<function>
-    logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
-
-    subdirs = get_subdirs_from_dir(base_dir)
-    for subdir in subdirs:
-        try:
-            os.rmdir(base_dir + subdir)
-        except OSError as e:
-            logger.debug('can not delete: %s, Error:%s' % (base_dir + subdir, e))
-            pass
-
-
-# move contents of source_dir to destination_dir
-# only one level deep, lave source_dir
-def move_dir(source_dir, destination_dir, **kwargs):
-    refresh_time = int(kwargs.get('refresh_time', 0)) * 86400
-    starttime = int(time.time())
-
-    sub_dirs = get_subdirs_from_dir(source_dir)
-    for sub_dir in sub_dirs:
-        files = get_ids_from_dir(source_dir + sub_dir)
-        if len(files) > 0:
-            source_path = expand_path(source_dir + sub_dir)
-            destination_path = expand_path(destination_dir + sub_dir)
-            for file in files:
-                source_file = source_path + file
-                destination_file = destination_path + file
-                modifytime = int(os.path.getmtime(source_file))
-                if (starttime - modifytime) > refresh_time:
-                    try:
-                        os.rename(source_file, destination_file)  # rename (move) contents of not_found to request
-                    except OSError as e:
-                        logging.warning('ciscoapisupport:move_dir:error:%s, source: %s, destionation: %s' % (e, source_file, destination_file))
-
-    remove_empty_sub_dirs(source_dir)
-
-
-- 
GitLab