aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python/Classify.py
AgeCommit message (Expand)AuthorFilesLines
2021-10-06docstring: Docstring warnings fixed.Viliam Luc1-14/+14
2021-06-10FIX: Pylint reducepmikus1-1/+1
2020-03-27CSIT-1597 API cleanup: aclJan Gelety1-43/+42
2019-12-10CSIT-1597 API cleanup: classifyJan Gelety1-19/+37
2019-11-28Python3: resources and librariesJan Gelety1-237/+153
2019-09-26CSIT-1471: Policer - VAT API to PAPIpremkumarv1-234/+113
2019-08-07FIX: macip_acl_rule needs binary mac dataJan Gelety1-2/+2
2019-08-06Add: Dot1Q + L2BD + GBPPeter Mikus1-4/+19
2019-07-17Use PapiSocketProvider for most PAPI callsVratko Polak1-13/+13
2019-07-12PapiExecutor always verifiesVratko Polak1-23/+15
2019-07-10FIX: use correct slicing of classify mask/match stringJan Gelety1-28/+75
2019-06-28VAT-to-PAPI: ClassifyTibor Frank1-375/+603
2018-09-05Fix various pylint violationsVratko Polak1-2/+1
2018-04-25Fix warnings reported by gen_doc.shVratko Polak1-18/+18
2017-08-16CSIT-777: L2 keywords for MACIP ACL testsJan Gelety1-2/+4
2017-08-14CSIT-777: L1 keywords for MACIP ACL testsJan Gelety1-5/+138
2017-07-06CSIT-622: Stateful Security Groups perf testsJan Gelety1-1/+155
2017-02-27HC Test: update plugin-ACL testsselias1-1/+1
2017-02-15HC Test: ACL updatesselias1-1/+32
2016-12-16Pylint fixesTibor Frank1-10/+8
2016-10-04Fix pylint warnings in python librariesselias1-13/+17
2016-08-25CSIT-233 IPv4 IPFIX - baseline testsselias1-0/+38
2016-07-21CSIT-49: HC Test: Policy - security groupsselias1-0/+43
2016-06-16IACL MAC filtering testsPatrik Hrnciar1-7/+68
2016-06-07iACL TCP/UDP testsPatrik Hrnciar1-6/+141
2016-05-11Add iACL IPv4/IPv6 tests.Patrik Hrnciar1-0/+86
/span> for interfaces in range(len_interfaces)] vec.append(if_per_thread) return vec def stat_entry_to_python(api, e): # Scalar index if e.type == 1: return e.scalar_value return None if e.type == 2: return simple_counter_vec_list(api, e.simple_counter_vec) if e.type == 3: return combined_counter_vec_list(api, e.combined_counter_vec) if e.type == 4: return e.error_value return None class VPPStats: def __init__(self, socketname='/var/run/stats.sock'): self.api = ffi.dlopen('libvppapiclient.so') rv = self.api.stat_segment_connect(socketname.encode()) if rv != 0: raise IOError() def heartbeat(self): return self.api.stat_segment_heartbeat() def ls(self, patterns): return self.api.stat_segment_ls(make_string_vector(self.api, patterns)) def dump(self, counters): stats = {} rv = self.api.stat_segment_dump(counters) # Raise exception and retry if rv == ffi.NULL: raise IOError() rv_len = self.api.stat_segment_vec_len(rv) for i in range(rv_len): n = ffi.string(rv[i].name).decode() e = stat_entry_to_python(self.api, rv[i]) if e is not None: stats[n] = e return stats def get_counter(self, name): retries = 0 while True: try: dir = self.ls(name) return self.dump(dir).values()[0] except Exception as e: if retries > 10: return None retries += 1 pass def disconnect(self): self.api.stat_segment_disconnect() def set_errors(self): '''Return all errors counters > 0''' retries = 0 while True: try: error_names = self.ls(['/err/']) error_counters = self.dump(error_names) break except Exception as e: if retries > 10: return None retries += 1 pass return {k: error_counters[k] for k in error_counters.keys() if error_counters[k]} def set_errors_str(self): '''Return all errors counters > 0 pretty printed''' s = 'ERRORS:\n' error_counters = self.set_errors() for k in sorted(error_counters): s += '{:<60}{:>10}\n'.format(k, error_counters[k]) return s