diff --git a/RestApi/Python/RestApi_v2/Modules/bps_restpy/restPyWrapper.py b/RestApi/Python/RestApi_v2/Modules/bps_restpy/restPyWrapper.py index 6ee52cf..4451c43 100644 --- a/RestApi/Python/RestApi_v2/Modules/bps_restpy/restPyWrapper.py +++ b/RestApi/Python/RestApi_v2/Modules/bps_restpy/restPyWrapper.py @@ -15,7 +15,7 @@ class TlsAdapter(HTTPAdapter): def init_poolmanager(self, connections, maxsize, block): self.poolmanager = PoolManager(num_pools=connections, maxsize=maxsize, block=block) -### this BPS REST API wrapper is generated for version: 10.00.1.33 +### this BPS REST API wrapper is generated for version: 10.30.134-noarch-bps class BPS(object): def __init__(self, host, user, password, checkVersion=True): @@ -25,24 +25,24 @@ def __init__(self, host, user, password, checkVersion=True): self.sessionId = None self.session = requests.Session() self.session.mount('https://', TlsAdapter()) - self.clientVersion = BPS.__lver('10.00') + self.clientVersion = BPS.__lver('10.30') self.serverVersions = None self.checkVersion = checkVersion self.printRequests = False - self.topology = DataModelProxy(wrapper=self, name='topology') - self.reports = DataModelProxy(wrapper=self, name='reports') - self.testmodel = DataModelProxy(wrapper=self, name='testmodel') self.administration = DataModelProxy(wrapper=self, name='administration') - self.evasionProfile = DataModelProxy(wrapper=self, name='evasionProfile') - self.capture = DataModelProxy(wrapper=self, name='capture') - self.superflow = DataModelProxy(wrapper=self, name='superflow') self.network = DataModelProxy(wrapper=self, name='network') - self.loadProfile = DataModelProxy(wrapper=self, name='loadProfile') + self.superflow = DataModelProxy(wrapper=self, name='superflow') + self.capture = DataModelProxy(wrapper=self, name='capture') self.results = DataModelProxy(wrapper=self, name='results') + self.loadProfile = DataModelProxy(wrapper=self, name='loadProfile') + self.testmodel = DataModelProxy(wrapper=self, name='testmodel') + self.appProfile = DataModelProxy(wrapper=self, name='appProfile') + self.topology = DataModelProxy(wrapper=self, name='topology') self.statistics = DataModelProxy(wrapper=self, name='statistics') - self.strikes = DataModelProxy(wrapper=self, name='strikes') self.strikeList = DataModelProxy(wrapper=self, name='strikeList') - self.appProfile = DataModelProxy(wrapper=self, name='appProfile') + self.reports = DataModelProxy(wrapper=self, name='reports') + self.strikes = DataModelProxy(wrapper=self, name='strikes') + self.evasionProfile = DataModelProxy(wrapper=self, name='evasionProfile') self.remote = DataModelProxy(wrapper=self, name='remote') ### connect to the system @@ -209,6 +209,21 @@ def _administration_atiLicensing_operations_importAtiLicense(self, filename, nam """ return self._wrapper.__import('/administration/atiLicensing/operations/importAtiLicense', **{'filename': filename, 'name': name}) + ### Schedules a time for Result Database purge, and an interval at which this will take place. + @staticmethod + def _administration_operations_configPurge(self, configPurge): + """ + Schedules a time for Result Database purge, and an interval at which this will take place. + :param configPurge (object): + object of object with fields + name (string): + purgeTime (string): + interval (string): + testsPriority (bool): + purgeEnabled (bool): + """ + return self._wrapper.__post('/administration/operations/configPurge', **{'configPurge': configPurge}) + ### Exports everything including test models, network configurations and others from system.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. @staticmethod def _administration_operations_exportAllTests(self, filepath): @@ -548,6 +563,82 @@ def _loadProfile_operations_saveAs(self, name): """ return self._wrapper.__post('/loadProfile/operations/saveAs', **{'name': name}) + ### null + @staticmethod + def _loadProfile_operations_search(self, searchString, limit, sort, sortorder): + """ + :param searchString (string): Search application profile name matching the string given. + :param limit (string): The limit of rows to return + :param sort (string): Parameter to sort by. + :param sortorder (string): The sort order (ascending/descending) + :return loadprofile (list): + list of object with fields + name (string): + label (string): + createdBy (string): + createdOn (string): + revision (number): + description (string): + """ + return self._wrapper.__post('/loadProfile/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + + ### Search dynamic profiles operation. Used in searching live profiles used by Live Appsim component. + @staticmethod + def _loadProfile_operations_searchDynamic(self, searchString, limit='25', sort='name', sortorder='ascending', offset='0'): + """ + Search dynamic profiles operation. Used in searching live profiles used by Live Appsim component. + :param searchString (string): Live profile string name to search. + :param limit (string): The limit of rows to return + :param sort (string): Parameter to sort by. + :param sortorder (string): The sort order (ascending/descending) + :param offset (string): The offset to begin from + :return loadprofile (list): + list of object with fields + name (string): + """ + return self._wrapper.__post('/loadProfile/operations/searchDynamic', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder, 'offset': offset}) + + ### null + @staticmethod + def _network_networkModel_path_advanced_operations_deletePathFile(self, file): + """ + :param file (string): The file name to delete. + """ + return self._wrapper.__post('/network/networkModel/path_advanced/operations/deletePathFile', **{'file': file}) + + ### Imports a file resource and stores it in the dedicated storage path. Supported file extension: .csvThis operation can not be executed from the RESTApi Browser, and it needs to be executed from a remote system through a REST call + @staticmethod + def _network_networkModel_path_advanced_operations_importPathFile(self, name, filename, force): + """ + Imports a file resource and stores it in the dedicated storage path. Supported file extension: .csvThis operation can not be executed from the RESTApi Browser, and it needs to be executed from a remote system through a REST call + :param name (string): The name of the object being imported + :param filename (string): The file path containing the object to be imported. File extension: .csv + :param force (bool): Force to import the file and the object having the same name will be replaced. + """ + return self._wrapper.__import('/network/networkModel/path_advanced/operations/importPathFile', **{'name': name, 'filename': filename, 'force': force}) + + ### null + @staticmethod + def _network_networkModel_path_advanced_operations_listPathFile(self, recurse=True, root='/var/ipc/paths'): + """ + :param recurse (bool): + :param root (string): + :return files (object): + """ + return self._wrapper.__post('/network/networkModel/path_advanced/operations/listPathFile', **{'recurse': recurse, 'root': root}) + + ### Adds the given network to the list of most recently opened network configurations. + @staticmethod + def _network_operations_addOpenRecent(self, testName): + """ + Adds the given network to the list of most recently opened network configurations. + :param testName (object): The test model config + object of object with fields + objectType (string): For network config use: neighborhood + name (string): + """ + return self._wrapper.__post('/network/operations/addOpenRecent', **{'testName': testName}) + ### Deletes a given Network Neighborhood Config from the database. @staticmethod def _network_operations_delete(self, name): @@ -578,6 +669,18 @@ def _network_operations_exportNetwork(self, name, attachments, filepath): """ return self._wrapper.__export('/network/operations/exportNetwork', **{'name': name, 'attachments': attachments, 'filepath': filepath}) + ### Get the most recently opened network configurations + @staticmethod + def _network_operations_getRecent(self): + """ + Get the most recently opened network configurations + :return recentlyOpened (list): + list of object with fields + objectType (string): + name (string): + """ + return self._wrapper.__post('/network/operations/getRecent', **{}) + ### Imports a network neighborhood model, given as a file.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. @staticmethod def _network_operations_importNetwork(self, name, filename, force): @@ -617,6 +720,15 @@ def _network_operations_load(self, template): """ return self._wrapper.__post('/network/operations/load', **{'template': template}) + ### null + @staticmethod + def _network_operations_networkInfo(self, name): + """ + :param name (string): + :return results (object): + """ + return self._wrapper.__post('/network/operations/networkInfo', **{'name': name}) + ### Creates a new Network Neighborhood configuration with no name. The template value must remain empty. @staticmethod def _network_operations_new(self, template=None): @@ -683,11 +795,11 @@ def _remote_operations_connectChassis(self, address, remote): ### Disconnects from a remote chassis in order to release remote resources.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. @staticmethod - def _remote_operations_disconnectChassis(self, address, port): + def _remote_operations_disconnectChassis(self, address, port=None): """ Disconnects from a remote chassis in order to release remote resources.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. :param address (string): Remote chassis address. - :param port (number): Remote connection port. + :param port (number): Remote connection port. This port has an internal usage. Can be let unset. """ return self._wrapper.__post('/remote/operations/disconnectChassis', **{'address': address, 'port': port}) @@ -929,6 +1041,7 @@ def _strikes_operations_search(self, searchString='', limit=10, sort='name', sor def _superflow_actions_operations_getActionChoices(self, id): """ :param id (number): the flow id + :return action (object): """ return self._wrapper.__post('/superflow/actions/operations/getActionChoices', **{'id': id}) @@ -1096,6 +1209,18 @@ def _superflow_operations_search(self, searchString, limit, sort, sortorder): """ return self._wrapper.__post('/superflow/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + ### Lists all the component presets names. + @staticmethod + def _testmodel_component_operations_getComponentPreset(self, name='None'): + """ + Lists all the component presets names. + :param name (string): The Component type. + All the component types are listed under the node testComponentTypesDescription. + If this argument is not set, all the presets will be listed. + :return component (object): + """ + return self._wrapper.__post('/testmodel/component/operations/getComponentPreset', **{'name': name}) + ### Lists all the component presets names. @staticmethod def _testmodel_component_operations_getComponentPresetNames(self, type='None'): @@ -1104,7 +1229,7 @@ def _testmodel_component_operations_getComponentPresetNames(self, type='None'): :param type (string): The Component type. All the component types are listed under the node testComponentTypesDescription. If this argument is not set, all the presets will be listed. - :return result (list): + :return component (list): list of object with fields id (string): label (string): @@ -1125,6 +1250,19 @@ def _testmodel_operations_add(self, name, component, type, active): """ return self._wrapper.__post('/testmodel/operations/add', **{'name': name, 'component': component, 'type': type, 'active': active}) + ### Adds the given test to the list of most recently opened tests. + @staticmethod + def _testmodel_operations_addOpenRecent(self, testName): + """ + Adds the given test to the list of most recently opened tests. + :param testName (object): The test model config + object of object with fields + objectType (string): For test use: executable + name (string): + type (string): TEST / PLAN / MULTIBOX + """ + return self._wrapper.__post('/testmodel/operations/addOpenRecent', **{'testName': testName}) + ### Clones a component in the current working Test Model @staticmethod def _testmodel_operations_clone(self, template, type, active): @@ -1157,6 +1295,30 @@ def _testmodel_operations_exportModel(self, name, attachments, filepath, runid=N """ return self._wrapper.__export('/testmodel/operations/exportModel', **{'name': name, 'attachments': attachments, 'filepath': filepath, 'runid': runid}) + ### null + @staticmethod + def _testmodel_operations_flowExceptions(self, runid, limit, offset): + """ + :param runid (number): Test RUN ID + :param limit (number): The limit of rows to return + :param offset (number): The start row of the returned list + :return flowException (object): + """ + return self._wrapper.__post('/testmodel/operations/flowExceptions', **{'runid': runid, 'limit': limit, 'offset': offset}) + + ### Get the most recently opened tests + @staticmethod + def _testmodel_operations_getRecent(self): + """ + Get the most recently opened tests + :return recentlyOpened (list): + list of object with fields + objectType (string): + name (string): + dut (string): + """ + return self._wrapper.__post('/testmodel/operations/getRecent', **{}) + ### Imports a test model, given as a file. This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. @staticmethod def _testmodel_operations_importModel(self, name, filename, force): @@ -1170,12 +1332,13 @@ def _testmodel_operations_importModel(self, name, filename, force): ### Load an existing test model template. @staticmethod - def _testmodel_operations_load(self, template): + def _testmodel_operations_load(self, template, validate=False): """ Load an existing test model template. :param template (string): The name of the template testmodel + :param validate (bool): In order to validate or not the test model, to get proper values for shared component settings """ - return self._wrapper.__post('/testmodel/operations/load', **{'template': template}) + return self._wrapper.__post('/testmodel/operations/load', **{'template': template, 'validate': validate}) ### Creates a new Test Model @staticmethod @@ -1188,13 +1351,15 @@ def _testmodel_operations_new(self, template=None): ### Retrieves the real time statistics for the running test, by giving the run id. @staticmethod - def _testmodel_operations_realTimeStats(self, runid, rtsgroup, numSeconds, numDataPoints=1): + def _testmodel_operations_realTimeStats(self, runid, rtsgroup, numSeconds, numDataPoints=1, aggregate=None, protocol=None): """ Retrieves the real time statistics for the running test, by giving the run id. :param runid (number): Test RUN ID :param rtsgroup (string): Real Time Stats group name. Values for this can be get from 'statistics' node, inside 'statNames' from each component at 'realtime Group' key/column. Examples: 'l7STats', 'all', 'bpslite', 'summary', 'clientStats' etc.Instead of a group name, it can be used a statistic name and the usage is: `fields:`Example: 'fields:txFrames' or 'fields:ethTxFrames, appIncomplete, rxFrameRate, etc'. :param numSeconds (number): The number of seconds. If negative, means counting from the end. Example -1 means the last second from the moment of request. :param numDataPoints (number): The number of data points, or set of values, on server side. The default is 1. In case of missing stats,because of requesting to many stats per second in real time,increase the value (grater than 1) + :param aggregate (string): The aggregation mode. It can be left empty or set to 'none' and a aggragated valuewill be returned or can be set to retrieve values for each interface of protocol (set to 'protocol'/'interface') + :param protocol (list): The superflow protocol/protocols. It is a filter parameter that can be set only if 'aggregate'='protocol'.It can be left empty to get values for all the existing protocols)or set a list of protocols in order to retrieve values exclusively for those. :return result (object): object of object with fields testStuck (bool): @@ -1202,7 +1367,7 @@ def _testmodel_operations_realTimeStats(self, runid, rtsgroup, numSeconds, numDa progress (number): values (string): """ - return self._wrapper.__post('/testmodel/operations/realTimeStats', **{'runid': runid, 'rtsgroup': rtsgroup, 'numSeconds': numSeconds, 'numDataPoints': numDataPoints}) + return self._wrapper.__post('/testmodel/operations/realTimeStats', **{'runid': runid, 'rtsgroup': rtsgroup, 'numSeconds': numSeconds, 'numDataPoints': numDataPoints, 'aggregate': aggregate, 'protocol': protocol}) ### Removes a component from the current working Test Model. @staticmethod @@ -1272,6 +1437,27 @@ def _testmodel_operations_stopRun(self, runid): """ return self._wrapper.__post('/testmodel/operations/stopRun', **{'runid': runid}) + ### Returns main groups of statistics for a single BPS Test Component. These groups can be used then in requesting statistics values from the history of a test run. + @staticmethod + def _testmodel_operations_testComponentDefinition(self, name, dynamicEnums=True, includeOutputs=True): + """ + Returns main groups of statistics for a single BPS Test Component. These groups can be used then in requesting statistics values from the history of a test run. + :param name (string): BPS Component name. This argument is actually the component type which can be get from 'statistics' table + :param dynamicEnums (bool): + :param includeOutputs (bool): + :return results (object): + """ + return self._wrapper.__post('/testmodel/operations/testComponentDefinition', **{'name': name, 'dynamicEnums': dynamicEnums, 'includeOutputs': includeOutputs}) + + ### null + @staticmethod + def _testmodel_operations_validate(self, group): + """ + :param group (string): The reservation group + :return check (object): + """ + return self._wrapper.__post('/testmodel/operations/validate', **{'group': group}) + ### Adds a note to given port. @staticmethod def _topology_operations_addPortNote(self, interface, note): @@ -1380,16 +1566,18 @@ def _topology_operations_releaseResources(self, count, resourceType, slotId): """ return self._wrapper.__post('/topology/operations/releaseResources', **{'count': count, 'resourceType': resourceType, 'slotId': slotId}) - ### null + ### Reserves one or more ports.It requires the following: group, port id, slot id ,capture mode and force mode.In case of remote chassis, be aware that the slot's id is changed after attach (ex: from 9 to 109), in order to get the new value a GET request over the topology will retrieve the new updated slot info. @staticmethod def _topology_operations_reserve(self, reservation, force=False): """ - :param reservation (list): Reserves one or more ports + Reserves one or more ports.It requires the following: group, port id, slot id ,capture mode and force mode.In case of remote chassis, be aware that the slot's id is changed after attach (ex: from 9 to 109), in order to get the new value a GET request over the topology will retrieve the new updated slot info. + :param reservation (list): List of ports to reserve. list of object with fields group (number): - slot (number): + slot (number): Slot number. In case of a remote chassis the slot's 'id' value is changed. A new GET requests can retrieve the topology slots new info. port (string): capture (bool): + number (number): The index to be reserved with :param force (bool): """ return self._wrapper.__post('/topology/operations/reserve', **{'reservation': reservation, 'force': force}) @@ -1603,6 +1791,8 @@ class DataModelMeta(type): } }, 'operations': { + 'configPurge': [{ + }], 'exportAllTests': [{ }], 'importAllTests': [{ @@ -1677,6 +1867,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'revision': { }, 'softwareUpdate': { @@ -1738,6 +1936,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'operations': { @@ -1789,6 +1995,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'params': { @@ -1844,6 +2058,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'operations': { @@ -2384,6 +2606,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'operations': { @@ -2418,6 +2648,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'operations': { @@ -2430,6 +2668,10 @@ class DataModelMeta(type): 'save': [{ }], 'saveAs': [{ + }], + 'search': [{ + }], + 'searchDynamic': [{ }] }, 'phase': [{ @@ -2469,6 +2711,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'phase': [{ @@ -2600,6 +2850,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'modelDefinition': { }, 'name': { @@ -2912,6 +3170,10 @@ class DataModelMeta(type): }, 'netmask': { }, + 'peer_ip_address': { + }, + 'remote_fixed': { + }, 'vni_base': { }, 'vni_count': { @@ -3116,8 +3378,12 @@ class DataModelMeta(type): }, 'ip_address': { }, + 'peer_ip_address': { + }, 'prefix_length': { }, + 'remote_fixed': { + }, 'vni_base': { }, 'vni_count': { @@ -3132,6 +3398,8 @@ class DataModelMeta(type): }, 'gateway_ip_address': { }, + 'gateway_mac_address': { + }, 'id': { }, 'ip_address': { @@ -3145,8 +3413,6 @@ class DataModelMeta(type): 'proxy': { }, 'tags': { - }, - 'tep_vni_mapping': { } }], 'ip6_router': [{ @@ -3314,6 +3580,8 @@ class DataModelMeta(type): }, 'gateway_ip_address': { }, + 'gateway_mac_address': { + }, 'id': { }, 'ip_address': { @@ -3327,8 +3595,6 @@ class DataModelMeta(type): 'proxy': { }, 'tags': { - }, - 'tep_vni_mapping': { } }], 'ip_router': [{ @@ -3564,6 +3830,14 @@ class DataModelMeta(type): }, 'id': { }, + 'operations': { + 'deletePathFile': [{ + }], + 'importPathFile': [{ + }], + 'listPathFile': [{ + }] + }, 'source_container': { }, 'source_port_algorithm': { @@ -3843,18 +4117,1298 @@ class DataModelMeta(type): }] }, 'operations': { + 'addOpenRecent': [{ + }], 'delete': [{ }], 'exportCSV': [{ }], 'exportNetwork': [{ }], + 'getRecent': [{ + }], 'importNetwork': [{ }], 'list': [{ }], 'load': [{ }], + 'networkInfo': [{ + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'interfaceCount': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, + 'name': { + }, + 'networkModel': { + 'dhcpv6c_cfg': [{ + 'dhcp6c_duid_type': { + }, + 'dhcp6c_ia_t1': { + }, + 'dhcp6c_ia_t2': { + }, + 'dhcp6c_ia_type': { + }, + 'dhcp6c_initial_srate': { + }, + 'dhcp6c_max_outstanding': { + }, + 'dhcp6c_renew_timer': { + }, + 'dhcp6c_req_opts_config': { + }, + 'dhcp6c_tout_and_retr_config': { + }, + 'id': { + } + }], + 'dhcpv6c_req_opts_cfg': [{ + 'dhcpv6v_req_dns_list': { + }, + 'dhcpv6v_req_dns_resolvers': { + }, + 'dhcpv6v_req_preference': { + }, + 'dhcpv6v_req_server_id': { + }, + 'id': { + } + }], + 'dhcpv6c_tout_and_retr_cfg': [{ + 'dhcp6c_inforeq_attempts': { + }, + 'dhcp6c_initial_inforeq_tout': { + }, + 'dhcp6c_initial_rebind_tout': { + }, + 'dhcp6c_initial_release_tout': { + }, + 'dhcp6c_initial_renew_tout': { + }, + 'dhcp6c_initial_req_tout': { + }, + 'dhcp6c_initial_sol_tout': { + }, + 'dhcp6c_max_inforeq_tout': { + }, + 'dhcp6c_max_rebind_tout': { + }, + 'dhcp6c_max_renew_tout': { + }, + 'dhcp6c_max_req_tout': { + }, + 'dhcp6c_max_sol_tout': { + }, + 'dhcp6c_release_attempts': { + }, + 'dhcp6c_req_attempts': { + }, + 'dhcp6c_sol_attempts': { + }, + 'id': { + } + }], + 'ds_lite_aftr': [{ + 'b4_count': { + }, + 'b4_ip_address': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ipv6_addr_alloc_mode': { + }, + 'prefix_length': { + } + }], + 'ds_lite_b4': [{ + 'aftr_addr': { + }, + 'aftr_count': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'host_ip_addr_alloc_mode': { + }, + 'host_ip_base_addr': { + }, + 'hosts_ip_increment': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ipv6_addr_alloc_mode': { + }, + 'prefix_length': { + } + }], + 'enodeb': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'enodebCount': { + }, + 'ip_address': { + }, + 'mme_ip_address': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'netmask': { + }, + 'plmn': { + }, + 'psn': { + }, + 'psn_netmask': { + }, + 'sctp_over_udp': { + }, + 'sctp_sport': { + } + }], + 'enodeb6': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'enodebCount': { + }, + 'ip_address': { + }, + 'mme_ip_address': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sctp_over_udp': { + }, + 'sctp_sport': { + } + }], + 'enodeb_mme': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'default_container': { + }, + 'enodebCount': { + }, + 'gateway_ip_address': { + }, + 'ip_address': { + }, + 'netmask': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'netmask': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'sgw_ip_address': { + }, + 'ue_address': { + } + }], + 'enodeb_mme6': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'default_container': { + }, + 'enodebCount': { + }, + 'gateway_ip_address': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sgw_ip_address': { + }, + 'ue_address': { + } + }], + 'enodeb_mme_sgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'netmask': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'ue_address': { + } + }], + 'enodeb_mme_sgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'ue_address': { + } + }], + 'geneve_tep': [{ + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'header_options': [{ + 'geneve_data': { + }, + 'geneve_option_class': { + }, + 'geneve_type': { + } + }], + 'id': { + }, + 'ip_address': { + }, + 'netmask': { + }, + 'peer_ip_address': { + }, + 'remote_fixed': { + }, + 'vni_base': { + }, + 'vni_count': { + } + }], + 'ggsn': [{ + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'ggsn_advertised_control_ip_address': { + }, + 'ggsn_advertised_data_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'netmask': { + } + }], + 'ggsn6': [{ + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'ggsn_advertised_control_ip_address': { + }, + 'ggsn_advertised_data_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'prefix_length': { + } + }], + 'global_config': [{ + 'gtp': { + }, + 'id': { + } + }], + 'interface': [{ + 'description': { + }, + 'duplicate_mac_address': { + }, + 'id': { + }, + 'ignore_pause_frames': { + }, + 'impairments': { + 'corrupt_chksum': { + }, + 'corrupt_gt256': { + }, + 'corrupt_lt256': { + }, + 'corrupt_lt64': { + }, + 'corrupt_rand': { + }, + 'drop': { + }, + 'frack': { + }, + 'rate': { + } + }, + 'mac_address': { + }, + 'mtu': { + }, + 'number': { + }, + 'packet_filter': { + 'dest_ip': { + }, + 'dest_port': { + }, + 'filter': { + }, + 'not_dest_ip': { + }, + 'not_dest_port': { + }, + 'not_src_ip': { + }, + 'not_src_port': { + }, + 'not_vlan': { + }, + 'src_ip': { + }, + 'src_port': { + }, + 'vlan': { + } + }, + 'use_vnic_mac_address': { + }, + 'vlan_key': { + } + }], + 'ip6_dhcp_server': [{ + 'default_container': { + }, + 'default_lease_time': { + }, + 'gateway_ip_address': { + }, + 'ia_type': { + }, + 'id': { + }, + 'ip_address': { + }, + 'max_lease_time': { + }, + 'offer_lifetime': { + }, + 'pool_base_address': { + }, + 'pool_dns_address1': { + }, + 'pool_dns_address2': { + }, + 'pool_prefix_length': { + }, + 'pool_size': { + }, + 'prefix_length': { + } + }], + 'ip6_dns_config': [{ + 'dns_domain': { + }, + 'dns_server_address': { + }, + 'id': { + } + }], + 'ip6_dns_proxy': [{ + 'dns_proxy_ip_base': { + }, + 'dns_proxy_ip_count': { + }, + 'dns_proxy_src_ip_base': { + }, + 'dns_proxy_src_ip_count': { + }, + 'id': { + } + }], + 'ip6_external_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'id': { + }, + 'ip_address': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip6_geneve_tep': [{ + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'header_options': [{ + 'geneve_data': { + }, + 'geneve_option_class': { + }, + 'geneve_type': { + } + }], + 'id': { + }, + 'ip_address': { + }, + 'peer_ip_address': { + }, + 'prefix_length': { + }, + 'remote_fixed': { + }, + 'vni_base': { + }, + 'vni_count': { + } + }], + 'ip6_mac_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'gateway_mac_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'mac_address': { + }, + 'mtu': { + }, + 'prefix_length': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip6_router': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'hosts_ip_alloc_container': { + }, + 'id': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'ip6_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'dns_proxy': { + }, + 'enable_stats': { + }, + 'gateway_ip_address': { + }, + 'host_ipv6_addr_alloc_mode': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ip_alloc_container': { + }, + 'ip_selection_type': { + }, + 'maxmbps_per_host': { + }, + 'mpls_list': [{ + 'id': { + }, + 'value': { + } + }], + 'prefix_length': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_dhcp_hosts': [{ + 'accept_local_offers_only': { + }, + 'allocation_rate': { + }, + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns_proxy': { + }, + 'enable_stats': { + }, + 'id': { + }, + 'ldap': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_dhcp_server': [{ + 'accept_local_requests_only': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_time': { + }, + 'netmask': { + } + }], + 'ip_dns_config': [{ + 'dns_domain': { + }, + 'dns_server_address': { + }, + 'id': { + } + }], + 'ip_dns_proxy': [{ + 'dns_proxy_ip_base': { + }, + 'dns_proxy_ip_count': { + }, + 'dns_proxy_src_ip_base': { + }, + 'dns_proxy_src_ip_count': { + }, + 'id': { + } + }], + 'ip_external_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'id': { + }, + 'ip_address': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_ldap_server': [{ + 'auth_timeout': { + }, + 'authentication_rate': { + }, + 'dn_fixed_val': { + }, + 'id': { + }, + 'ldap_password_start_tag': { + }, + 'ldap_server_address': { + }, + 'ldap_user_count': { + }, + 'ldap_user_max': { + }, + 'ldap_user_min': { + }, + 'ldap_username_start_tag': { + } + }], + 'ip_mac_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'gateway_mac_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'mac_address': { + }, + 'mtu': { + }, + 'netmask': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_router': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'netmask': { + } + }], + 'ip_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'dns_proxy': { + }, + 'enable_stats': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ip_selection_type': { + }, + 'ldap': { + }, + 'maxmbps_per_host': { + }, + 'mpls_list': [{ + 'id': { + }, + 'value': { + } + }], + 'netmask': { + }, + 'proxy': { + }, + 'psn': { + }, + 'psn_netmask': { + }, + 'tags': { + } + }], + 'ipsec_config': [{ + 'debug_log': { + }, + 'dpd_delay': { + }, + 'dpd_enabled': { + }, + 'dpd_timeout': { + }, + 'enable_xauth': { + }, + 'esp_auth_alg': { + }, + 'esp_encr_alg': { + }, + 'id': { + }, + 'ike_1to1': { + }, + 'ike_auth_alg': { + }, + 'ike_dh': { + }, + 'ike_encr_alg': { + }, + 'ike_lifetime': { + }, + 'ike_mode': { + }, + 'ike_pfs': { + }, + 'ike_prf_alg': { + }, + 'ike_version': { + }, + 'init_rate': { + }, + 'initial_contact': { + }, + 'ipsec_lifetime': { + }, + 'left_id': { + }, + 'max_outstanding': { + }, + 'nat_traversal': { + }, + 'psk': { + }, + 'rekey_margin': { + }, + 'retrans_interval': { + }, + 'right_id': { + }, + 'setup_timeout': { + }, + 'wildcard_tsr': { + }, + 'xauth_password': { + }, + 'xauth_username': { + } + }], + 'ipsec_router': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ike_peer_ip_address': { + }, + 'ip_address': { + }, + 'ipsec': { + }, + 'netmask': { + } + }], + 'mme_sgw_pgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'netmask': { + }, + 'plmn': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + }, + 'ue_info': { + } + }], + 'mme_sgw_pgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + }, + 'ue_info': { + } + }], + 'mobility_session_info': [{ + 'access_point_name': { + }, + 'bearers': [{ + 'qci_label': { + } + }], + 'id': { + }, + 'initiated_dedicated_bearers': { + }, + 'password': { + }, + 'username': { + } + }], + 'mpls_settings': [{ + 'id': { + }, + 'mpls_tags': [{ + 'mpls_exp': { + }, + 'mpls_label': { + }, + 'mpls_ttl': { + } + }] + }], + 'path_advanced': [{ + 'destination_container': { + }, + 'destination_port_algorithm': { + }, + 'destination_port_base': { + }, + 'destination_port_count': { + }, + 'enable_external_file': { + }, + 'file': { + }, + 'id': { + }, + 'source_container': { + }, + 'source_port_algorithm': { + }, + 'source_port_base': { + }, + 'source_port_count': { + }, + 'stream_group': { + }, + 'tags': { + }, + 'tuple_limit': { + }, + 'xor_bits': { + } + }], + 'path_basic': [{ + 'destination_container': { + }, + 'id': { + }, + 'source_container': { + } + }], + 'pgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'netmask': { + }, + 'plmn': { + } + }], + 'pgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'plmn': { + }, + 'prefix_length': { + } + }], + 'plmn': [{ + 'description': { + }, + 'id': { + }, + 'mcc': { + }, + 'mnc': { + } + }], + 'sgsn': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'ggsn_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'netmask': { + } + }], + 'sgsn6': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'ggsn_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'sgw_pgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'netmask': { + }, + 'plmn': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + } + }], + 'sgw_pgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + } + }], + 'sixrd_ce': [{ + 'br_ip_address': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'enable_stats': { + }, + 'gateway_ip_address': { + }, + 'hosts_per_ce': { + }, + 'id': { + }, + 'ip4_mask_length': { + }, + 'ip_address': { + }, + 'netmask': { + }, + 'sixrd_prefix': { + }, + 'sixrd_prefix_length': { + }, + 'tags': { + } + }], + 'slaac_cfg': [{ + 'enable_dad': { + }, + 'fallback_ip_address': { + }, + 'id': { + }, + 'stateless_dhcpv6c_cfg': { + }, + 'use_rand_addr': { + } + }], + 'ue': [{ + 'allocation_rate': { + }, + 'behind_snapt': { + }, + 'default_container': { + }, + 'dns': { + }, + 'enable_stats': { + }, + 'id': { + }, + 'mobility_action': { + }, + 'mobility_interval_ms': { + }, + 'mobility_with_traffic': { + }, + 'proxy': { + }, + 'request_ipv6': { + }, + 'tags': { + }, + 'ue_info': { + } + }], + 'ue_info': [{ + 'count': { + }, + 'id': { + }, + 'imei_base': { + }, + 'imsi_base': { + }, + 'maxmbps_per_ue': { + }, + 'mobility_session_infos': [{ + 'id': { + }, + 'value': { + } + }], + 'msisdn_base': { + }, + 'operator_variant': { + }, + 'secret_key': { + }, + 'secret_key_step': { + } + }], + 'vlan': [{ + 'count': { + }, + 'default_container': { + }, + 'description': { + }, + 'duplicate_mac_address': { + }, + 'id': { + }, + 'inner_vlan': { + }, + 'mac_address': { + }, + 'mtu': { + }, + 'outer_vlan': { + }, + 'tpid': { + } + }] + }, + 'revision': { + } + }], 'new': [{ }], 'save': [{ @@ -3944,6 +5498,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'revision': { } }], @@ -3990,6 +5552,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'numStrikes': { @@ -4051,10 +5621,6 @@ class DataModelMeta(type): }], 'severity': { }, - 'strike': { - }, - 'strikeset': { - }, 'variants': { }, 'year': { @@ -4103,18 +5669,20 @@ class DataModelMeta(type): }, 'superflow': { 'actions': [{ - 'actionInfo': [{ - 'description': { - }, - 'label': { - }, - 'name': { - }, - 'realtimeGroup': { - }, - 'units': { - } - }], + 'actionInfo': { + 'settings': [{ + 'description': { + }, + 'label': { + }, + 'name': { + }, + 'realtimeGroup': { + }, + 'units': { + } + }] + }, 'exflows': { }, 'flowid': { @@ -4131,18 +5699,32 @@ class DataModelMeta(type): }, 'operations': { 'getActionChoices': [{ + 'settings': [{ + 'description': { + }, + 'label': { + }, + 'name': { + }, + 'realtimeGroup': { + }, + 'units': { + } + }] }], 'getActionInfo': [{ - 'description': { - }, - 'label': { - }, - 'name': { - }, - 'realtimeGroup': { - }, - 'units': { - } + 'settings': [{ + 'description': { + }, + 'label': { + }, + 'name': { + }, + 'realtimeGroup': { + }, + 'units': { + } + }] }] }, 'params': { @@ -4197,6 +5779,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'revision': { } }] @@ -4226,6 +5816,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'operations': { @@ -4379,6 +5977,10 @@ class DataModelMeta(type): }, 'emphasis': { }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, 'engine': { }, 'max': { @@ -4396,6 +5998,8 @@ class DataModelMeta(type): 'targetMatches': { }, 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { } }, 'srcPortDist': { @@ -4557,6 +6161,10 @@ class DataModelMeta(type): }, 'emphasis': { }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, 'engine': { }, 'max': { @@ -4574,6 +6182,8 @@ class DataModelMeta(type): 'targetMatches': { }, 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { } }, 'srcPortDist': { @@ -5207,6 +6817,10 @@ class DataModelMeta(type): }, 'emphasis': { }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, 'engine': { }, 'max': { @@ -5224,6 +6838,8 @@ class DataModelMeta(type): 'targetMatches': { }, 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { } }, 'srcPortDist': { @@ -5377,6 +6993,10 @@ class DataModelMeta(type): }, 'emphasis': { }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, 'engine': { }, 'max': { @@ -5394,6 +7014,8 @@ class DataModelMeta(type): 'targetMatches': { }, 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { } }, 'sfratescalefactor': { @@ -5557,6 +7179,10 @@ class DataModelMeta(type): }, 'emphasis': { }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, 'engine': { }, 'max': { @@ -5574,6 +7200,8 @@ class DataModelMeta(type): 'targetMatches': { }, 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { } }, 'srcPortDist': { @@ -5861,6 +7489,10 @@ class DataModelMeta(type): }, 'emphasis': { }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, 'engine': { }, 'max': { @@ -5878,6 +7510,8 @@ class DataModelMeta(type): 'targetMatches': { }, 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { } }, 'srcPortDist': { @@ -5957,7 +7591,1767 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'operations': { + 'getComponentPreset': [{ + '@type:appsim': { + 'app': { + 'fidelity': { + }, + 'removedns': { + }, + 'replace_streams': { + }, + 'streamsPerSuperflow': { + } + }, + 'delayStart': { + }, + 'experimental': { + 'tcpSegmentsBurst': { + }, + 'unify_l4_bufs': { + } + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'profile': { + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'resources': { + 'expand': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ssl': { + 'client_record_len': { + }, + 'server_record_len': { + }, + 'sslReuseType': { + }, + 'ssl_client_keylog': { + }, + 'ssl_keylog_max_entries': { + }, + 'upgrade': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:clientsim': { + 'app': { + 'fidelity': { + }, + 'removedns': { + }, + 'replace_streams': { + }, + 'streamsPerSuperflow': { + } + }, + 'delayStart': { + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'resources': { + 'expand': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ssl': { + 'client_record_len': { + }, + 'server_record_len': { + }, + 'sslReuseType': { + }, + 'ssl_client_keylog': { + }, + 'ssl_keylog_max_entries': { + }, + 'upgrade': { + } + }, + 'superflow': { + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:layer2': { + 'advanced': { + 'ethTypeField': { + }, + 'ethTypeVal': { + } + }, + 'bidirectional': { + }, + 'delayStart': { + }, + 'duration': { + 'disable_nd_probes': { + }, + 'durationFrames': { + }, + 'durationTime': { + } + }, + 'maxStreams': { + }, + 'payload': { + 'data': { + }, + 'dataWidth': { + }, + 'type': { + } + }, + 'payloadAdvanced': { + 'udfDataWidth': { + }, + 'udfLength': { + }, + 'udfMode': { + }, + 'udfOffset': { + } + }, + 'rateDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'ramptype': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'sizeDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'mixlen1': { + }, + 'mixlen10': { + }, + 'mixlen2': { + }, + 'mixlen3': { + }, + 'mixlen4': { + }, + 'mixlen5': { + }, + 'mixlen6': { + }, + 'mixlen7': { + }, + 'mixlen8': { + }, + 'mixlen9': { + }, + 'mixweight1': { + }, + 'mixweight10': { + }, + 'mixweight2': { + }, + 'mixweight3': { + }, + 'mixweight4': { + }, + 'mixweight5': { + }, + 'mixweight6': { + }, + 'mixweight7': { + }, + 'mixweight8': { + }, + 'mixweight9': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'slowStart': { + }, + 'slowStartFps': { + } + }, + '@type:layer3': { + 'Templates': { + 'TemplateType': { + } + }, + 'addrGenMode': { + }, + 'advancedIPv4': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'optionHeaderData': { + }, + 'optionHeaderField': { + }, + 'tos': { + }, + 'ttl': { + } + }, + 'advancedIPv6': { + 'extensionHeaderData': { + }, + 'extensionHeaderField': { + }, + 'flowLabel': { + }, + 'hopLimit': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'nextHeader': { + }, + 'trafficClass': { + } + }, + 'advancedUDP': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + } + }, + 'bidirectional': { + }, + 'delayStart': { + }, + 'dstPort': { + }, + 'dstPortMask': { + }, + 'duration': { + 'disable_nd_probes': { + }, + 'durationFrames': { + }, + 'durationTime': { + } + }, + 'enableTCP': { + }, + 'maxStreams': { + }, + 'payload': { + 'data': { + }, + 'dataWidth': { + }, + 'type': { + } + }, + 'payloadAdvanced': { + 'udfDataWidth': { + }, + 'udfLength': { + }, + 'udfMode': { + }, + 'udfOffset': { + } + }, + 'randomizeIP': { + }, + 'rateDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'ramptype': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'sizeDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'mixlen1': { + }, + 'mixlen10': { + }, + 'mixlen2': { + }, + 'mixlen3': { + }, + 'mixlen4': { + }, + 'mixlen5': { + }, + 'mixlen6': { + }, + 'mixlen7': { + }, + 'mixlen8': { + }, + 'mixlen9': { + }, + 'mixweight1': { + }, + 'mixweight10': { + }, + 'mixweight2': { + }, + 'mixweight3': { + }, + 'mixweight4': { + }, + 'mixweight5': { + }, + 'mixweight6': { + }, + 'mixweight7': { + }, + 'mixweight8': { + }, + 'mixweight9': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'slowStart': { + }, + 'slowStartFps': { + }, + 'srcPort': { + }, + 'srcPortMask': { + }, + 'syncIP': { + }, + 'udpDstPortMode': { + }, + 'udpSrcPortMode': { + } + }, + '@type:layer3advanced': { + 'Templates': { + 'TemplateType': { + } + }, + 'advancedIPv4': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'optionHeaderData': { + }, + 'optionHeaderField': { + }, + 'tos': { + }, + 'ttl': { + } + }, + 'advancedIPv6': { + 'extensionHeaderData': { + }, + 'extensionHeaderField': { + }, + 'flowLabel': { + }, + 'hopLimit': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'nextHeader': { + }, + 'trafficClass': { + } + }, + 'advancedUDP': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + } + }, + 'bidirectional': { + }, + 'delayStart': { + }, + 'duration': { + 'disable_nd_probes': { + }, + 'durationFrames': { + }, + 'durationTime': { + } + }, + 'enablePerStreamStats': { + }, + 'enableTCP': { + }, + 'payload': { + 'data': { + }, + 'dataWidth': { + }, + 'type': { + } + }, + 'payloadAdvanced': { + 'udfDataWidth': { + }, + 'udfLength': { + }, + 'udfMode': { + }, + 'udfOffset': { + } + }, + 'rateDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'ramptype': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'sizeDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'mixlen1': { + }, + 'mixlen10': { + }, + 'mixlen2': { + }, + 'mixlen3': { + }, + 'mixlen4': { + }, + 'mixlen5': { + }, + 'mixlen6': { + }, + 'mixlen7': { + }, + 'mixlen8': { + }, + 'mixlen9': { + }, + 'mixweight1': { + }, + 'mixweight10': { + }, + 'mixweight2': { + }, + 'mixweight3': { + }, + 'mixweight4': { + }, + 'mixweight5': { + }, + 'mixweight6': { + }, + 'mixweight7': { + }, + 'mixweight8': { + }, + 'mixweight9': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'slowStart': { + }, + 'slowStartFps': { + }, + 'tuple_gen_seed': { + } + }, + '@type:layer4': { + 'delayStart': { + }, + 'dstPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'packetsPerSession': { + }, + 'payload': { + 'add_timestamp': { + }, + 'data': { + }, + 'http_type': { + }, + 'transport': { + }, + 'type': { + } + }, + 'payloadSizeDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:liveappsim': { + 'app': { + 'fidelity': { + }, + 'removeUnknownSSL': { + }, + 'removeUnknownTcpUdp': { + }, + 'removedns': { + }, + 'replace_streams': { + }, + 'streamsPerSuperflow': { + } + }, + 'concurrencyscalefactor': { + }, + 'delayStart': { + }, + 'inflateDeflate': { + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'liveProfile': { + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { + } + }, + 'sfratescalefactor': { + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + }, + 'tputscalefactor': { + } + }, + '@type:playback': { + 'behavior': { + }, + 'delayStart': { + }, + 'file': { + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'modification': { + 'bpfstring': { + }, + 'endpacket': { + }, + 'independentflows': { + }, + 'loopcount': { + }, + 'newport': { + }, + 'originalport': { + }, + 'replay': { + }, + 'serveripinjection': { + }, + 'single': { + }, + 'startpacket': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:security_all': { + 'attackPlan': { + }, + 'attackPlanIterationDelay': { + }, + 'attackPlanIterations': { + }, + 'attackProfile': { + }, + 'attackRetries': { + }, + 'delayStart': { + }, + 'maxAttacksPerSecond': { + }, + 'maxConcurrAttacks': { + }, + 'maxPacketsPerSecond': { + }, + 'randomSeed': { + } + }, + '@type:security_np': { + 'attackPlan': { + }, + 'attackPlanIterationDelay': { + }, + 'attackPlanIterations': { + }, + 'attackProfile': { + }, + 'attackRetries': { + }, + 'delayStart': { + }, + 'randomSeed': { + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'max': { + }, + 'maxPerSecond': { + } + } + }, + '@type:stackscrambler': { + 'delayStart': { + }, + 'dstPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'payload': { + 'data': { + }, + 'transport': { + }, + 'type': { + } + }, + 'payloadSizeDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'prng': { + 'offset': { + }, + 'seed': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'scrambleOptions': { + 'badEthType': { + }, + 'badGTPFlags': { + }, + 'badGTPLen': { + }, + 'badGTPNext': { + }, + 'badGTPNpdu': { + }, + 'badGTPSeqno': { + }, + 'badGTPType': { + }, + 'badICMPCode': { + }, + 'badICMPType': { + }, + 'badIPChecksum': { + }, + 'badIPFlags': { + }, + 'badIPFlowLabel': { + }, + 'badIPFragOffset': { + }, + 'badIPLength': { + }, + 'badIPOptions': { + }, + 'badIPProtocol': { + }, + 'badIPTOS': { + }, + 'badIPTTL': { + }, + 'badIPTotalLength': { + }, + 'badIPVersion': { + }, + 'badL4Checksum': { + }, + 'badL4HeaderLength': { + }, + 'badSCTPChecksum': { + }, + 'badSCTPFlags': { + }, + 'badSCTPLength': { + }, + 'badSCTPType': { + }, + 'badSCTPVerificationTag': { + }, + 'badTCPFlags': { + }, + 'badTCPOptions': { + }, + 'badUrgentPointer': { + }, + 'handshakeTCP': { + }, + 'maxCorruptions': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + 'active': { + }, + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'id': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, + 'originalPreset': { + }, + 'originalPresetLabel': { + }, + 'reportResults': { + }, + 'revision': { + }, + 'tags': [{ + 'domainId': { + 'external': { + }, + 'iface': { + }, + 'name': { + } + }, + 'id': { + }, + 'type': { + } + }], + 'timeline': { + 'timesegment': [{ + 'label': { + }, + 'size': { + }, + 'type': { + } + }] + }, + 'type': { + } + }], 'getComponentPresetNames': [{ }] }, @@ -6004,6 +9398,8 @@ class DataModelMeta(type): }, 'duration': { }, + 'dut': { + }, 'label': { }, 'lastrun': { @@ -6012,6 +9408,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'network': { @@ -6019,12 +9423,40 @@ class DataModelMeta(type): 'operations': { 'add': [{ }], + 'addOpenRecent': [{ + }], 'clone': [{ }], 'delete': [{ }], 'exportModel': [{ }], + 'flowExceptions': [{ + 'component': { + }, + 'componentLabel': { + }, + 'componentType': { + 'label': { + } + }, + 'dataIndex': { + }, + 'group': { + }, + 'iface': { + }, + 'params': { + }, + 'protocol': { + }, + 'slot': { + }, + 'vlan': { + } + }], + 'getRecent': [{ + }], 'importModel': [{ }], 'load': [{ @@ -6044,6 +9476,26 @@ class DataModelMeta(type): 'search': [{ }], 'stopRun': [{ + }], + 'testComponentDefinition': [{ + }], + 'validate': [{ + 'fixAction': { + 'content': { + }, + 'key': { + } + }, + 'fixable': { + }, + 'message': { + 'content': { + }, + 'key': { + } + }, + 'result': { + } }] }, 'result': { @@ -6056,6 +9508,8 @@ class DataModelMeta(type): }, 'current': { }, + 'enabled': { + }, 'original': { } }, @@ -6064,6 +9518,8 @@ class DataModelMeta(type): }, 'current': { }, + 'enabled': { + }, 'original': { } }, @@ -6072,6 +9528,8 @@ class DataModelMeta(type): }, 'current': { }, + 'enabled': { + }, 'original': { } }, @@ -6080,6 +9538,8 @@ class DataModelMeta(type): }, 'current': { }, + 'enabled': { + }, 'original': { } }, @@ -6088,6 +9548,8 @@ class DataModelMeta(type): }, 'current': { }, + 'enabled': { + }, 'original': { } }, @@ -6096,6 +9558,8 @@ class DataModelMeta(type): }, 'current': { }, + 'enabled': { + }, 'original': { } } @@ -6129,8 +9593,12 @@ class DataModelMeta(type): 'chain': { 'name': { }, - 'remotes': { - } + 'remotes': [{ + 'host': { + }, + 'state': { + } + }] }, 'cnState': [{ 'cnId': { @@ -6141,13 +9609,41 @@ class DataModelMeta(type): }, 'cnSlotNo': { }, + 'conditions': [{ + 'message': { + }, + 'status': { + }, + 'type': { + } + }], 'firmwareUpgrade': { }, 'licensed': { }, 'marketingName': { }, + 'opModes': [{ + 'active': { + }, + 'id': { + }, + 'label': { + }, + 'name': { + } + }], + 'remoteInfo': { + 'host': { + }, + 'slotId': { + }, + 'state': { + } + }, 'state': { + }, + 'stateDescription': { } }], 'ixos': { @@ -6164,20 +9660,28 @@ class DataModelMeta(type): 'exportCapture': [{ }], 'getFanoutModes': [{ - 'cardModel': { - }, - 'fanout': [{ - 'fanoutId': { + 'fanouts': [{ + 'active': { + }, + 'id': { }, 'name': { + }, + 'speedMode': { } - }] + }], + 'model': { + } }], 'getPortAvailableModes': [{ 'modes': [{ - 'fanoutId': { + 'active': { + }, + 'id': { }, 'name': { + }, + 'speedMode': { } }], 'port': { @@ -6277,6 +9781,14 @@ class DataModelMeta(type): 'serialNumber': { }, 'slot': [{ + 'conditions': [{ + 'message': { + }, + 'status': { + }, + 'type': { + } + }], 'firmwareUpgrade': { }, 'fpga': [{ @@ -6299,6 +9811,8 @@ class DataModelMeta(type): }, 'interfaceCount': { }, + 'ipAddress': { + }, 'mode': { }, 'model': { @@ -6321,6 +9835,16 @@ class DataModelMeta(type): 'state': { } }], + 'opModes': [{ + 'active': { + }, + 'id': { + }, + 'label': { + }, + 'name': { + } + }], 'port': [{ 'active': { }, @@ -6328,6 +9852,8 @@ class DataModelMeta(type): }, 'capture': { }, + 'capture_group': { + }, 'capturing': { }, 'currentMode': { @@ -6365,9 +9891,17 @@ class DataModelMeta(type): }, 'rxframes': { }, + 'rxreason': { + }, + 'rxstate': { + }, 'txbytes': { }, 'txframes': { + }, + 'txreason': { + }, + 'txstate': { } }], 'portGroup': { @@ -6378,9 +9912,43 @@ class DataModelMeta(type): }, 'reservedBy': { }, + 'reservedLinkSettings': { + 'auto': { + }, + 'capture': { + }, + 'fullduplex': { + }, + 'ignorepause': { + }, + 'media': { + }, + 'mtu': { + }, + 'precoder': { + }, + 'speed': { + } + }, + 'software_capture': { + }, 'speed': { }, 'state': { + }, + 'transceiver': { + '_id': { + }, + 'cableLength': { + }, + 'identifier': { + }, + 'mediaType': { + }, + 'vendor': { + }, + 'vendorPartNumber': { + } } }], 'remoteInfo': { @@ -6394,6 +9962,10 @@ class DataModelMeta(type): 'serialNumber': { }, 'state': { + }, + 'stateDescription': { + }, + 'supportsL23': { } }] } diff --git a/RestApi/Python/RestApi_v2/Modules/bps_restpy/restPyWrapper3.py b/RestApi/Python/RestApi_v2/Modules/bps_restpy/restPyWrapper3.py index eabf4f4..b11c4ad 100644 --- a/RestApi/Python/RestApi_v2/Modules/bps_restpy/restPyWrapper3.py +++ b/RestApi/Python/RestApi_v2/Modules/bps_restpy/restPyWrapper3.py @@ -15,7 +15,7 @@ class TlsAdapter(HTTPAdapter): def init_poolmanager(self, connections, maxsize, block): self.poolmanager = PoolManager(num_pools=connections, maxsize=maxsize, block=block) -### this BPS REST API wrapper is generated for version: 10.00.1.33 +### this BPS REST API wrapper is generated for version: 10.30.134-noarch-bps class BPS(object): def __init__(self, host, user, password, checkVersion=True): @@ -25,24 +25,24 @@ def __init__(self, host, user, password, checkVersion=True): self.sessionId = None self.session = requests.Session() self.session.mount('https://', TlsAdapter()) - self.clientVersion = BPS.__lver('10.00') + self.clientVersion = BPS.__lver('10.30') self.serverVersions = None self.checkVersion = checkVersion self.printRequests = False - self.topology = DataModelProxy(wrapper=self, name='topology') - self.reports = DataModelProxy(wrapper=self, name='reports') - self.testmodel = DataModelProxy(wrapper=self, name='testmodel') self.administration = DataModelProxy(wrapper=self, name='administration') - self.evasionProfile = DataModelProxy(wrapper=self, name='evasionProfile') - self.capture = DataModelProxy(wrapper=self, name='capture') - self.superflow = DataModelProxy(wrapper=self, name='superflow') self.network = DataModelProxy(wrapper=self, name='network') - self.loadProfile = DataModelProxy(wrapper=self, name='loadProfile') + self.superflow = DataModelProxy(wrapper=self, name='superflow') + self.capture = DataModelProxy(wrapper=self, name='capture') self.results = DataModelProxy(wrapper=self, name='results') + self.loadProfile = DataModelProxy(wrapper=self, name='loadProfile') + self.testmodel = DataModelProxy(wrapper=self, name='testmodel') + self.appProfile = DataModelProxy(wrapper=self, name='appProfile') + self.topology = DataModelProxy(wrapper=self, name='topology') self.statistics = DataModelProxy(wrapper=self, name='statistics') - self.strikes = DataModelProxy(wrapper=self, name='strikes') self.strikeList = DataModelProxy(wrapper=self, name='strikeList') - self.appProfile = DataModelProxy(wrapper=self, name='appProfile') + self.reports = DataModelProxy(wrapper=self, name='reports') + self.strikes = DataModelProxy(wrapper=self, name='strikes') + self.evasionProfile = DataModelProxy(wrapper=self, name='evasionProfile') self.remote = DataModelProxy(wrapper=self, name='remote') ### connect to the system @@ -210,6 +210,21 @@ def _administration_atiLicensing_operations_importAtiLicense(self, filename, nam """ return self._wrapper.__import('/administration/atiLicensing/operations/importAtiLicense', **{'filename': filename, 'name': name}) + ### Schedules a time for Result Database purge, and an interval at which this will take place. + @staticmethod + def _administration_operations_configPurge(self, configPurge): + """ + Schedules a time for Result Database purge, and an interval at which this will take place. + :param configPurge (object): + object of object with fields + name (string): + purgeTime (string): + interval (string): + testsPriority (bool): + purgeEnabled (bool): + """ + return self._wrapper.__post('/administration/operations/configPurge', **{'configPurge': configPurge}) + ### Exports everything including test models, network configurations and others from system.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. @staticmethod def _administration_operations_exportAllTests(self, filepath): @@ -549,6 +564,82 @@ def _loadProfile_operations_saveAs(self, name): """ return self._wrapper.__post('/loadProfile/operations/saveAs', **{'name': name}) + ### null + @staticmethod + def _loadProfile_operations_search(self, searchString, limit, sort, sortorder): + """ + :param searchString (string): Search application profile name matching the string given. + :param limit (string): The limit of rows to return + :param sort (string): Parameter to sort by. + :param sortorder (string): The sort order (ascending/descending) + :return loadprofile (list): + list of object with fields + name (string): + label (string): + createdBy (string): + createdOn (string): + revision (number): + description (string): + """ + return self._wrapper.__post('/loadProfile/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + + ### Search dynamic profiles operation. Used in searching live profiles used by Live Appsim component. + @staticmethod + def _loadProfile_operations_searchDynamic(self, searchString, limit='25', sort='name', sortorder='ascending', offset='0'): + """ + Search dynamic profiles operation. Used in searching live profiles used by Live Appsim component. + :param searchString (string): Live profile string name to search. + :param limit (string): The limit of rows to return + :param sort (string): Parameter to sort by. + :param sortorder (string): The sort order (ascending/descending) + :param offset (string): The offset to begin from + :return loadprofile (list): + list of object with fields + name (string): + """ + return self._wrapper.__post('/loadProfile/operations/searchDynamic', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder, 'offset': offset}) + + ### null + @staticmethod + def _network_networkModel_path_advanced_operations_deletePathFile(self, file): + """ + :param file (string): The file name to delete. + """ + return self._wrapper.__post('/network/networkModel/path_advanced/operations/deletePathFile', **{'file': file}) + + ### Imports a file resource and stores it in the dedicated storage path. Supported file extension: .csvThis operation can not be executed from the RESTApi Browser, and it needs to be executed from a remote system through a REST call + @staticmethod + def _network_networkModel_path_advanced_operations_importPathFile(self, name, filename, force): + """ + Imports a file resource and stores it in the dedicated storage path. Supported file extension: .csvThis operation can not be executed from the RESTApi Browser, and it needs to be executed from a remote system through a REST call + :param name (string): The name of the object being imported + :param filename (string): The file path containing the object to be imported. File extension: .csv + :param force (bool): Force to import the file and the object having the same name will be replaced. + """ + return self._wrapper.__import('/network/networkModel/path_advanced/operations/importPathFile', **{'name': name, 'filename': filename, 'force': force}) + + ### null + @staticmethod + def _network_networkModel_path_advanced_operations_listPathFile(self, recurse=True, root='/var/ipc/paths'): + """ + :param recurse (bool): + :param root (string): + :return files (object): + """ + return self._wrapper.__post('/network/networkModel/path_advanced/operations/listPathFile', **{'recurse': recurse, 'root': root}) + + ### Adds the given network to the list of most recently opened network configurations. + @staticmethod + def _network_operations_addOpenRecent(self, testName): + """ + Adds the given network to the list of most recently opened network configurations. + :param testName (object): The test model config + object of object with fields + objectType (string): For network config use: neighborhood + name (string): + """ + return self._wrapper.__post('/network/operations/addOpenRecent', **{'testName': testName}) + ### Deletes a given Network Neighborhood Config from the database. @staticmethod def _network_operations_delete(self, name): @@ -579,6 +670,18 @@ def _network_operations_exportNetwork(self, name, attachments, filepath): """ return self._wrapper.__export('/network/operations/exportNetwork', **{'name': name, 'attachments': attachments, 'filepath': filepath}) + ### Get the most recently opened network configurations + @staticmethod + def _network_operations_getRecent(self): + """ + Get the most recently opened network configurations + :return recentlyOpened (list): + list of object with fields + objectType (string): + name (string): + """ + return self._wrapper.__post('/network/operations/getRecent', **{}) + ### Imports a network neighborhood model, given as a file.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. @staticmethod def _network_operations_importNetwork(self, name, filename, force): @@ -618,6 +721,15 @@ def _network_operations_load(self, template): """ return self._wrapper.__post('/network/operations/load', **{'template': template}) + ### null + @staticmethod + def _network_operations_networkInfo(self, name): + """ + :param name (string): + :return results (object): + """ + return self._wrapper.__post('/network/operations/networkInfo', **{'name': name}) + ### Creates a new Network Neighborhood configuration with no name. The template value must remain empty. @staticmethod def _network_operations_new(self, template=None): @@ -684,11 +796,11 @@ def _remote_operations_connectChassis(self, address, remote): ### Disconnects from a remote chassis in order to release remote resources.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. @staticmethod - def _remote_operations_disconnectChassis(self, address, port): + def _remote_operations_disconnectChassis(self, address, port=None): """ Disconnects from a remote chassis in order to release remote resources.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. :param address (string): Remote chassis address. - :param port (number): Remote connection port. + :param port (number): Remote connection port. This port has an internal usage. Can be let unset. """ return self._wrapper.__post('/remote/operations/disconnectChassis', **{'address': address, 'port': port}) @@ -930,6 +1042,7 @@ def _strikes_operations_search(self, searchString='', limit=10, sort='name', sor def _superflow_actions_operations_getActionChoices(self, id): """ :param id (number): the flow id + :return action (object): """ return self._wrapper.__post('/superflow/actions/operations/getActionChoices', **{'id': id}) @@ -1097,6 +1210,18 @@ def _superflow_operations_search(self, searchString, limit, sort, sortorder): """ return self._wrapper.__post('/superflow/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + ### Lists all the component presets names. + @staticmethod + def _testmodel_component_operations_getComponentPreset(self, name='None'): + """ + Lists all the component presets names. + :param name (string): The Component type. + All the component types are listed under the node testComponentTypesDescription. + If this argument is not set, all the presets will be listed. + :return component (object): + """ + return self._wrapper.__post('/testmodel/component/operations/getComponentPreset', **{'name': name}) + ### Lists all the component presets names. @staticmethod def _testmodel_component_operations_getComponentPresetNames(self, type='None'): @@ -1105,7 +1230,7 @@ def _testmodel_component_operations_getComponentPresetNames(self, type='None'): :param type (string): The Component type. All the component types are listed under the node testComponentTypesDescription. If this argument is not set, all the presets will be listed. - :return result (list): + :return component (list): list of object with fields id (string): label (string): @@ -1126,6 +1251,19 @@ def _testmodel_operations_add(self, name, component, type, active): """ return self._wrapper.__post('/testmodel/operations/add', **{'name': name, 'component': component, 'type': type, 'active': active}) + ### Adds the given test to the list of most recently opened tests. + @staticmethod + def _testmodel_operations_addOpenRecent(self, testName): + """ + Adds the given test to the list of most recently opened tests. + :param testName (object): The test model config + object of object with fields + objectType (string): For test use: executable + name (string): + type (string): TEST / PLAN / MULTIBOX + """ + return self._wrapper.__post('/testmodel/operations/addOpenRecent', **{'testName': testName}) + ### Clones a component in the current working Test Model @staticmethod def _testmodel_operations_clone(self, template, type, active): @@ -1158,6 +1296,30 @@ def _testmodel_operations_exportModel(self, name, attachments, filepath, runid=N """ return self._wrapper.__export('/testmodel/operations/exportModel', **{'name': name, 'attachments': attachments, 'filepath': filepath, 'runid': runid}) + ### null + @staticmethod + def _testmodel_operations_flowExceptions(self, runid, limit, offset): + """ + :param runid (number): Test RUN ID + :param limit (number): The limit of rows to return + :param offset (number): The start row of the returned list + :return flowException (object): + """ + return self._wrapper.__post('/testmodel/operations/flowExceptions', **{'runid': runid, 'limit': limit, 'offset': offset}) + + ### Get the most recently opened tests + @staticmethod + def _testmodel_operations_getRecent(self): + """ + Get the most recently opened tests + :return recentlyOpened (list): + list of object with fields + objectType (string): + name (string): + dut (string): + """ + return self._wrapper.__post('/testmodel/operations/getRecent', **{}) + ### Imports a test model, given as a file. This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. @staticmethod def _testmodel_operations_importModel(self, name, filename, force): @@ -1171,12 +1333,13 @@ def _testmodel_operations_importModel(self, name, filename, force): ### Load an existing test model template. @staticmethod - def _testmodel_operations_load(self, template): + def _testmodel_operations_load(self, template, validate=False): """ Load an existing test model template. :param template (string): The name of the template testmodel + :param validate (bool): In order to validate or not the test model, to get proper values for shared component settings """ - return self._wrapper.__post('/testmodel/operations/load', **{'template': template}) + return self._wrapper.__post('/testmodel/operations/load', **{'template': template, 'validate': validate}) ### Creates a new Test Model @staticmethod @@ -1189,13 +1352,15 @@ def _testmodel_operations_new(self, template=None): ### Retrieves the real time statistics for the running test, by giving the run id. @staticmethod - def _testmodel_operations_realTimeStats(self, runid, rtsgroup, numSeconds, numDataPoints=1): + def _testmodel_operations_realTimeStats(self, runid, rtsgroup, numSeconds, numDataPoints=1, aggregate=None, protocol=None): """ Retrieves the real time statistics for the running test, by giving the run id. :param runid (number): Test RUN ID :param rtsgroup (string): Real Time Stats group name. Values for this can be get from 'statistics' node, inside 'statNames' from each component at 'realtime Group' key/column. Examples: 'l7STats', 'all', 'bpslite', 'summary', 'clientStats' etc.Instead of a group name, it can be used a statistic name and the usage is: `fields:`Example: 'fields:txFrames' or 'fields:ethTxFrames, appIncomplete, rxFrameRate, etc'. :param numSeconds (number): The number of seconds. If negative, means counting from the end. Example -1 means the last second from the moment of request. :param numDataPoints (number): The number of data points, or set of values, on server side. The default is 1. In case of missing stats,because of requesting to many stats per second in real time,increase the value (grater than 1) + :param aggregate (string): The aggregation mode. It can be left empty or set to 'none' and a aggragated valuewill be returned or can be set to retrieve values for each interface of protocol (set to 'protocol'/'interface') + :param protocol (list): The superflow protocol/protocols. It is a filter parameter that can be set only if 'aggregate'='protocol'.It can be left empty to get values for all the existing protocols)or set a list of protocols in order to retrieve values exclusively for those. :return result (object): object of object with fields testStuck (bool): @@ -1203,7 +1368,7 @@ def _testmodel_operations_realTimeStats(self, runid, rtsgroup, numSeconds, numDa progress (number): values (string): """ - return self._wrapper.__post('/testmodel/operations/realTimeStats', **{'runid': runid, 'rtsgroup': rtsgroup, 'numSeconds': numSeconds, 'numDataPoints': numDataPoints}) + return self._wrapper.__post('/testmodel/operations/realTimeStats', **{'runid': runid, 'rtsgroup': rtsgroup, 'numSeconds': numSeconds, 'numDataPoints': numDataPoints, 'aggregate': aggregate, 'protocol': protocol}) ### Removes a component from the current working Test Model. @staticmethod @@ -1273,6 +1438,27 @@ def _testmodel_operations_stopRun(self, runid): """ return self._wrapper.__post('/testmodel/operations/stopRun', **{'runid': runid}) + ### Returns main groups of statistics for a single BPS Test Component. These groups can be used then in requesting statistics values from the history of a test run. + @staticmethod + def _testmodel_operations_testComponentDefinition(self, name, dynamicEnums=True, includeOutputs=True): + """ + Returns main groups of statistics for a single BPS Test Component. These groups can be used then in requesting statistics values from the history of a test run. + :param name (string): BPS Component name. This argument is actually the component type which can be get from 'statistics' table + :param dynamicEnums (bool): + :param includeOutputs (bool): + :return results (object): + """ + return self._wrapper.__post('/testmodel/operations/testComponentDefinition', **{'name': name, 'dynamicEnums': dynamicEnums, 'includeOutputs': includeOutputs}) + + ### null + @staticmethod + def _testmodel_operations_validate(self, group): + """ + :param group (string): The reservation group + :return check (object): + """ + return self._wrapper.__post('/testmodel/operations/validate', **{'group': group}) + ### Adds a note to given port. @staticmethod def _topology_operations_addPortNote(self, interface, note): @@ -1381,16 +1567,18 @@ def _topology_operations_releaseResources(self, count, resourceType, slotId): """ return self._wrapper.__post('/topology/operations/releaseResources', **{'count': count, 'resourceType': resourceType, 'slotId': slotId}) - ### null + ### Reserves one or more ports.It requires the following: group, port id, slot id ,capture mode and force mode.In case of remote chassis, be aware that the slot's id is changed after attach (ex: from 9 to 109), in order to get the new value a GET request over the topology will retrieve the new updated slot info. @staticmethod def _topology_operations_reserve(self, reservation, force=False): """ - :param reservation (list): Reserves one or more ports + Reserves one or more ports.It requires the following: group, port id, slot id ,capture mode and force mode.In case of remote chassis, be aware that the slot's id is changed after attach (ex: from 9 to 109), in order to get the new value a GET request over the topology will retrieve the new updated slot info. + :param reservation (list): List of ports to reserve. list of object with fields group (number): - slot (number): + slot (number): Slot number. In case of a remote chassis the slot's 'id' value is changed. A new GET requests can retrieve the topology slots new info. port (string): capture (bool): + number (number): The index to be reserved with :param force (bool): """ return self._wrapper.__post('/topology/operations/reserve', **{'reservation': reservation, 'force': force}) @@ -1604,6 +1792,8 @@ class DataModelMeta(type): } }, 'operations': { + 'configPurge': [{ + }], 'exportAllTests': [{ }], 'importAllTests': [{ @@ -1678,6 +1868,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'revision': { }, 'softwareUpdate': { @@ -1739,6 +1937,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'operations': { @@ -1790,6 +1996,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'params': { @@ -1845,6 +2059,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'operations': { @@ -2385,6 +2607,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'operations': { @@ -2419,6 +2649,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'operations': { @@ -2431,6 +2669,10 @@ class DataModelMeta(type): 'save': [{ }], 'saveAs': [{ + }], + 'search': [{ + }], + 'searchDynamic': [{ }] }, 'phase': [{ @@ -2470,6 +2712,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'phase': [{ @@ -2601,6 +2851,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'modelDefinition': { }, 'name': { @@ -2913,6 +3171,10 @@ class DataModelMeta(type): }, 'netmask': { }, + 'peer_ip_address': { + }, + 'remote_fixed': { + }, 'vni_base': { }, 'vni_count': { @@ -3117,8 +3379,12 @@ class DataModelMeta(type): }, 'ip_address': { }, + 'peer_ip_address': { + }, 'prefix_length': { }, + 'remote_fixed': { + }, 'vni_base': { }, 'vni_count': { @@ -3133,6 +3399,8 @@ class DataModelMeta(type): }, 'gateway_ip_address': { }, + 'gateway_mac_address': { + }, 'id': { }, 'ip_address': { @@ -3146,8 +3414,6 @@ class DataModelMeta(type): 'proxy': { }, 'tags': { - }, - 'tep_vni_mapping': { } }], 'ip6_router': [{ @@ -3315,6 +3581,8 @@ class DataModelMeta(type): }, 'gateway_ip_address': { }, + 'gateway_mac_address': { + }, 'id': { }, 'ip_address': { @@ -3328,8 +3596,6 @@ class DataModelMeta(type): 'proxy': { }, 'tags': { - }, - 'tep_vni_mapping': { } }], 'ip_router': [{ @@ -3565,6 +3831,14 @@ class DataModelMeta(type): }, 'id': { }, + 'operations': { + 'deletePathFile': [{ + }], + 'importPathFile': [{ + }], + 'listPathFile': [{ + }] + }, 'source_container': { }, 'source_port_algorithm': { @@ -3844,18 +4118,1298 @@ class DataModelMeta(type): }] }, 'operations': { + 'addOpenRecent': [{ + }], 'delete': [{ }], 'exportCSV': [{ }], 'exportNetwork': [{ }], + 'getRecent': [{ + }], 'importNetwork': [{ }], 'list': [{ }], 'load': [{ }], + 'networkInfo': [{ + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'interfaceCount': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, + 'name': { + }, + 'networkModel': { + 'dhcpv6c_cfg': [{ + 'dhcp6c_duid_type': { + }, + 'dhcp6c_ia_t1': { + }, + 'dhcp6c_ia_t2': { + }, + 'dhcp6c_ia_type': { + }, + 'dhcp6c_initial_srate': { + }, + 'dhcp6c_max_outstanding': { + }, + 'dhcp6c_renew_timer': { + }, + 'dhcp6c_req_opts_config': { + }, + 'dhcp6c_tout_and_retr_config': { + }, + 'id': { + } + }], + 'dhcpv6c_req_opts_cfg': [{ + 'dhcpv6v_req_dns_list': { + }, + 'dhcpv6v_req_dns_resolvers': { + }, + 'dhcpv6v_req_preference': { + }, + 'dhcpv6v_req_server_id': { + }, + 'id': { + } + }], + 'dhcpv6c_tout_and_retr_cfg': [{ + 'dhcp6c_inforeq_attempts': { + }, + 'dhcp6c_initial_inforeq_tout': { + }, + 'dhcp6c_initial_rebind_tout': { + }, + 'dhcp6c_initial_release_tout': { + }, + 'dhcp6c_initial_renew_tout': { + }, + 'dhcp6c_initial_req_tout': { + }, + 'dhcp6c_initial_sol_tout': { + }, + 'dhcp6c_max_inforeq_tout': { + }, + 'dhcp6c_max_rebind_tout': { + }, + 'dhcp6c_max_renew_tout': { + }, + 'dhcp6c_max_req_tout': { + }, + 'dhcp6c_max_sol_tout': { + }, + 'dhcp6c_release_attempts': { + }, + 'dhcp6c_req_attempts': { + }, + 'dhcp6c_sol_attempts': { + }, + 'id': { + } + }], + 'ds_lite_aftr': [{ + 'b4_count': { + }, + 'b4_ip_address': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ipv6_addr_alloc_mode': { + }, + 'prefix_length': { + } + }], + 'ds_lite_b4': [{ + 'aftr_addr': { + }, + 'aftr_count': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'host_ip_addr_alloc_mode': { + }, + 'host_ip_base_addr': { + }, + 'hosts_ip_increment': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ipv6_addr_alloc_mode': { + }, + 'prefix_length': { + } + }], + 'enodeb': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'enodebCount': { + }, + 'ip_address': { + }, + 'mme_ip_address': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'netmask': { + }, + 'plmn': { + }, + 'psn': { + }, + 'psn_netmask': { + }, + 'sctp_over_udp': { + }, + 'sctp_sport': { + } + }], + 'enodeb6': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'enodebCount': { + }, + 'ip_address': { + }, + 'mme_ip_address': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sctp_over_udp': { + }, + 'sctp_sport': { + } + }], + 'enodeb_mme': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'default_container': { + }, + 'enodebCount': { + }, + 'gateway_ip_address': { + }, + 'ip_address': { + }, + 'netmask': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'netmask': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'sgw_ip_address': { + }, + 'ue_address': { + } + }], + 'enodeb_mme6': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'default_container': { + }, + 'enodebCount': { + }, + 'gateway_ip_address': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sgw_ip_address': { + }, + 'ue_address': { + } + }], + 'enodeb_mme_sgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'netmask': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'ue_address': { + } + }], + 'enodeb_mme_sgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'ue_address': { + } + }], + 'geneve_tep': [{ + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'header_options': [{ + 'geneve_data': { + }, + 'geneve_option_class': { + }, + 'geneve_type': { + } + }], + 'id': { + }, + 'ip_address': { + }, + 'netmask': { + }, + 'peer_ip_address': { + }, + 'remote_fixed': { + }, + 'vni_base': { + }, + 'vni_count': { + } + }], + 'ggsn': [{ + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'ggsn_advertised_control_ip_address': { + }, + 'ggsn_advertised_data_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'netmask': { + } + }], + 'ggsn6': [{ + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'ggsn_advertised_control_ip_address': { + }, + 'ggsn_advertised_data_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'prefix_length': { + } + }], + 'global_config': [{ + 'gtp': { + }, + 'id': { + } + }], + 'interface': [{ + 'description': { + }, + 'duplicate_mac_address': { + }, + 'id': { + }, + 'ignore_pause_frames': { + }, + 'impairments': { + 'corrupt_chksum': { + }, + 'corrupt_gt256': { + }, + 'corrupt_lt256': { + }, + 'corrupt_lt64': { + }, + 'corrupt_rand': { + }, + 'drop': { + }, + 'frack': { + }, + 'rate': { + } + }, + 'mac_address': { + }, + 'mtu': { + }, + 'number': { + }, + 'packet_filter': { + 'dest_ip': { + }, + 'dest_port': { + }, + 'filter': { + }, + 'not_dest_ip': { + }, + 'not_dest_port': { + }, + 'not_src_ip': { + }, + 'not_src_port': { + }, + 'not_vlan': { + }, + 'src_ip': { + }, + 'src_port': { + }, + 'vlan': { + } + }, + 'use_vnic_mac_address': { + }, + 'vlan_key': { + } + }], + 'ip6_dhcp_server': [{ + 'default_container': { + }, + 'default_lease_time': { + }, + 'gateway_ip_address': { + }, + 'ia_type': { + }, + 'id': { + }, + 'ip_address': { + }, + 'max_lease_time': { + }, + 'offer_lifetime': { + }, + 'pool_base_address': { + }, + 'pool_dns_address1': { + }, + 'pool_dns_address2': { + }, + 'pool_prefix_length': { + }, + 'pool_size': { + }, + 'prefix_length': { + } + }], + 'ip6_dns_config': [{ + 'dns_domain': { + }, + 'dns_server_address': { + }, + 'id': { + } + }], + 'ip6_dns_proxy': [{ + 'dns_proxy_ip_base': { + }, + 'dns_proxy_ip_count': { + }, + 'dns_proxy_src_ip_base': { + }, + 'dns_proxy_src_ip_count': { + }, + 'id': { + } + }], + 'ip6_external_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'id': { + }, + 'ip_address': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip6_geneve_tep': [{ + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'header_options': [{ + 'geneve_data': { + }, + 'geneve_option_class': { + }, + 'geneve_type': { + } + }], + 'id': { + }, + 'ip_address': { + }, + 'peer_ip_address': { + }, + 'prefix_length': { + }, + 'remote_fixed': { + }, + 'vni_base': { + }, + 'vni_count': { + } + }], + 'ip6_mac_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'gateway_mac_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'mac_address': { + }, + 'mtu': { + }, + 'prefix_length': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip6_router': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'hosts_ip_alloc_container': { + }, + 'id': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'ip6_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'dns_proxy': { + }, + 'enable_stats': { + }, + 'gateway_ip_address': { + }, + 'host_ipv6_addr_alloc_mode': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ip_alloc_container': { + }, + 'ip_selection_type': { + }, + 'maxmbps_per_host': { + }, + 'mpls_list': [{ + 'id': { + }, + 'value': { + } + }], + 'prefix_length': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_dhcp_hosts': [{ + 'accept_local_offers_only': { + }, + 'allocation_rate': { + }, + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns_proxy': { + }, + 'enable_stats': { + }, + 'id': { + }, + 'ldap': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_dhcp_server': [{ + 'accept_local_requests_only': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_time': { + }, + 'netmask': { + } + }], + 'ip_dns_config': [{ + 'dns_domain': { + }, + 'dns_server_address': { + }, + 'id': { + } + }], + 'ip_dns_proxy': [{ + 'dns_proxy_ip_base': { + }, + 'dns_proxy_ip_count': { + }, + 'dns_proxy_src_ip_base': { + }, + 'dns_proxy_src_ip_count': { + }, + 'id': { + } + }], + 'ip_external_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'id': { + }, + 'ip_address': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_ldap_server': [{ + 'auth_timeout': { + }, + 'authentication_rate': { + }, + 'dn_fixed_val': { + }, + 'id': { + }, + 'ldap_password_start_tag': { + }, + 'ldap_server_address': { + }, + 'ldap_user_count': { + }, + 'ldap_user_max': { + }, + 'ldap_user_min': { + }, + 'ldap_username_start_tag': { + } + }], + 'ip_mac_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'gateway_mac_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'mac_address': { + }, + 'mtu': { + }, + 'netmask': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_router': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'netmask': { + } + }], + 'ip_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'dns_proxy': { + }, + 'enable_stats': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ip_selection_type': { + }, + 'ldap': { + }, + 'maxmbps_per_host': { + }, + 'mpls_list': [{ + 'id': { + }, + 'value': { + } + }], + 'netmask': { + }, + 'proxy': { + }, + 'psn': { + }, + 'psn_netmask': { + }, + 'tags': { + } + }], + 'ipsec_config': [{ + 'debug_log': { + }, + 'dpd_delay': { + }, + 'dpd_enabled': { + }, + 'dpd_timeout': { + }, + 'enable_xauth': { + }, + 'esp_auth_alg': { + }, + 'esp_encr_alg': { + }, + 'id': { + }, + 'ike_1to1': { + }, + 'ike_auth_alg': { + }, + 'ike_dh': { + }, + 'ike_encr_alg': { + }, + 'ike_lifetime': { + }, + 'ike_mode': { + }, + 'ike_pfs': { + }, + 'ike_prf_alg': { + }, + 'ike_version': { + }, + 'init_rate': { + }, + 'initial_contact': { + }, + 'ipsec_lifetime': { + }, + 'left_id': { + }, + 'max_outstanding': { + }, + 'nat_traversal': { + }, + 'psk': { + }, + 'rekey_margin': { + }, + 'retrans_interval': { + }, + 'right_id': { + }, + 'setup_timeout': { + }, + 'wildcard_tsr': { + }, + 'xauth_password': { + }, + 'xauth_username': { + } + }], + 'ipsec_router': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ike_peer_ip_address': { + }, + 'ip_address': { + }, + 'ipsec': { + }, + 'netmask': { + } + }], + 'mme_sgw_pgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'netmask': { + }, + 'plmn': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + }, + 'ue_info': { + } + }], + 'mme_sgw_pgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + }, + 'ue_info': { + } + }], + 'mobility_session_info': [{ + 'access_point_name': { + }, + 'bearers': [{ + 'qci_label': { + } + }], + 'id': { + }, + 'initiated_dedicated_bearers': { + }, + 'password': { + }, + 'username': { + } + }], + 'mpls_settings': [{ + 'id': { + }, + 'mpls_tags': [{ + 'mpls_exp': { + }, + 'mpls_label': { + }, + 'mpls_ttl': { + } + }] + }], + 'path_advanced': [{ + 'destination_container': { + }, + 'destination_port_algorithm': { + }, + 'destination_port_base': { + }, + 'destination_port_count': { + }, + 'enable_external_file': { + }, + 'file': { + }, + 'id': { + }, + 'source_container': { + }, + 'source_port_algorithm': { + }, + 'source_port_base': { + }, + 'source_port_count': { + }, + 'stream_group': { + }, + 'tags': { + }, + 'tuple_limit': { + }, + 'xor_bits': { + } + }], + 'path_basic': [{ + 'destination_container': { + }, + 'id': { + }, + 'source_container': { + } + }], + 'pgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'netmask': { + }, + 'plmn': { + } + }], + 'pgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'plmn': { + }, + 'prefix_length': { + } + }], + 'plmn': [{ + 'description': { + }, + 'id': { + }, + 'mcc': { + }, + 'mnc': { + } + }], + 'sgsn': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'ggsn_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'netmask': { + } + }], + 'sgsn6': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'ggsn_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'sgw_pgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'netmask': { + }, + 'plmn': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + } + }], + 'sgw_pgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + } + }], + 'sixrd_ce': [{ + 'br_ip_address': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'enable_stats': { + }, + 'gateway_ip_address': { + }, + 'hosts_per_ce': { + }, + 'id': { + }, + 'ip4_mask_length': { + }, + 'ip_address': { + }, + 'netmask': { + }, + 'sixrd_prefix': { + }, + 'sixrd_prefix_length': { + }, + 'tags': { + } + }], + 'slaac_cfg': [{ + 'enable_dad': { + }, + 'fallback_ip_address': { + }, + 'id': { + }, + 'stateless_dhcpv6c_cfg': { + }, + 'use_rand_addr': { + } + }], + 'ue': [{ + 'allocation_rate': { + }, + 'behind_snapt': { + }, + 'default_container': { + }, + 'dns': { + }, + 'enable_stats': { + }, + 'id': { + }, + 'mobility_action': { + }, + 'mobility_interval_ms': { + }, + 'mobility_with_traffic': { + }, + 'proxy': { + }, + 'request_ipv6': { + }, + 'tags': { + }, + 'ue_info': { + } + }], + 'ue_info': [{ + 'count': { + }, + 'id': { + }, + 'imei_base': { + }, + 'imsi_base': { + }, + 'maxmbps_per_ue': { + }, + 'mobility_session_infos': [{ + 'id': { + }, + 'value': { + } + }], + 'msisdn_base': { + }, + 'operator_variant': { + }, + 'secret_key': { + }, + 'secret_key_step': { + } + }], + 'vlan': [{ + 'count': { + }, + 'default_container': { + }, + 'description': { + }, + 'duplicate_mac_address': { + }, + 'id': { + }, + 'inner_vlan': { + }, + 'mac_address': { + }, + 'mtu': { + }, + 'outer_vlan': { + }, + 'tpid': { + } + }] + }, + 'revision': { + } + }], 'new': [{ }], 'save': [{ @@ -3945,6 +5499,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'revision': { } }], @@ -3991,6 +5553,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'numStrikes': { @@ -4052,10 +5622,6 @@ class DataModelMeta(type): }], 'severity': { }, - 'strike': { - }, - 'strikeset': { - }, 'variants': { }, 'year': { @@ -4104,18 +5670,20 @@ class DataModelMeta(type): }, 'superflow': { 'actions': [{ - 'actionInfo': [{ - 'description': { - }, - 'label': { - }, - 'name': { - }, - 'realtimeGroup': { - }, - 'units': { - } - }], + 'actionInfo': { + 'settings': [{ + 'description': { + }, + 'label': { + }, + 'name': { + }, + 'realtimeGroup': { + }, + 'units': { + } + }] + }, 'exflows': { }, 'flowid': { @@ -4132,18 +5700,32 @@ class DataModelMeta(type): }, 'operations': { 'getActionChoices': [{ + 'settings': [{ + 'description': { + }, + 'label': { + }, + 'name': { + }, + 'realtimeGroup': { + }, + 'units': { + } + }] }], 'getActionInfo': [{ - 'description': { - }, - 'label': { - }, - 'name': { - }, - 'realtimeGroup': { - }, - 'units': { - } + 'settings': [{ + 'description': { + }, + 'label': { + }, + 'name': { + }, + 'realtimeGroup': { + }, + 'units': { + } + }] }] }, 'params': { @@ -4198,6 +5780,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'revision': { } }] @@ -4227,6 +5817,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'operations': { @@ -4380,6 +5978,10 @@ class DataModelMeta(type): }, 'emphasis': { }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, 'engine': { }, 'max': { @@ -4397,6 +5999,8 @@ class DataModelMeta(type): 'targetMatches': { }, 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { } }, 'srcPortDist': { @@ -4558,6 +6162,10 @@ class DataModelMeta(type): }, 'emphasis': { }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, 'engine': { }, 'max': { @@ -4575,6 +6183,8 @@ class DataModelMeta(type): 'targetMatches': { }, 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { } }, 'srcPortDist': { @@ -5208,6 +6818,10 @@ class DataModelMeta(type): }, 'emphasis': { }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, 'engine': { }, 'max': { @@ -5225,6 +6839,8 @@ class DataModelMeta(type): 'targetMatches': { }, 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { } }, 'srcPortDist': { @@ -5378,6 +6994,10 @@ class DataModelMeta(type): }, 'emphasis': { }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, 'engine': { }, 'max': { @@ -5395,6 +7015,8 @@ class DataModelMeta(type): 'targetMatches': { }, 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { } }, 'sfratescalefactor': { @@ -5558,6 +7180,10 @@ class DataModelMeta(type): }, 'emphasis': { }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, 'engine': { }, 'max': { @@ -5575,6 +7201,8 @@ class DataModelMeta(type): 'targetMatches': { }, 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { } }, 'srcPortDist': { @@ -5862,6 +7490,10 @@ class DataModelMeta(type): }, 'emphasis': { }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, 'engine': { }, 'max': { @@ -5879,6 +7511,8 @@ class DataModelMeta(type): 'targetMatches': { }, 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { } }, 'srcPortDist': { @@ -5958,7 +7592,1767 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'operations': { + 'getComponentPreset': [{ + '@type:appsim': { + 'app': { + 'fidelity': { + }, + 'removedns': { + }, + 'replace_streams': { + }, + 'streamsPerSuperflow': { + } + }, + 'delayStart': { + }, + 'experimental': { + 'tcpSegmentsBurst': { + }, + 'unify_l4_bufs': { + } + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'profile': { + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'resources': { + 'expand': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ssl': { + 'client_record_len': { + }, + 'server_record_len': { + }, + 'sslReuseType': { + }, + 'ssl_client_keylog': { + }, + 'ssl_keylog_max_entries': { + }, + 'upgrade': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:clientsim': { + 'app': { + 'fidelity': { + }, + 'removedns': { + }, + 'replace_streams': { + }, + 'streamsPerSuperflow': { + } + }, + 'delayStart': { + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'resources': { + 'expand': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ssl': { + 'client_record_len': { + }, + 'server_record_len': { + }, + 'sslReuseType': { + }, + 'ssl_client_keylog': { + }, + 'ssl_keylog_max_entries': { + }, + 'upgrade': { + } + }, + 'superflow': { + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:layer2': { + 'advanced': { + 'ethTypeField': { + }, + 'ethTypeVal': { + } + }, + 'bidirectional': { + }, + 'delayStart': { + }, + 'duration': { + 'disable_nd_probes': { + }, + 'durationFrames': { + }, + 'durationTime': { + } + }, + 'maxStreams': { + }, + 'payload': { + 'data': { + }, + 'dataWidth': { + }, + 'type': { + } + }, + 'payloadAdvanced': { + 'udfDataWidth': { + }, + 'udfLength': { + }, + 'udfMode': { + }, + 'udfOffset': { + } + }, + 'rateDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'ramptype': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'sizeDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'mixlen1': { + }, + 'mixlen10': { + }, + 'mixlen2': { + }, + 'mixlen3': { + }, + 'mixlen4': { + }, + 'mixlen5': { + }, + 'mixlen6': { + }, + 'mixlen7': { + }, + 'mixlen8': { + }, + 'mixlen9': { + }, + 'mixweight1': { + }, + 'mixweight10': { + }, + 'mixweight2': { + }, + 'mixweight3': { + }, + 'mixweight4': { + }, + 'mixweight5': { + }, + 'mixweight6': { + }, + 'mixweight7': { + }, + 'mixweight8': { + }, + 'mixweight9': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'slowStart': { + }, + 'slowStartFps': { + } + }, + '@type:layer3': { + 'Templates': { + 'TemplateType': { + } + }, + 'addrGenMode': { + }, + 'advancedIPv4': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'optionHeaderData': { + }, + 'optionHeaderField': { + }, + 'tos': { + }, + 'ttl': { + } + }, + 'advancedIPv6': { + 'extensionHeaderData': { + }, + 'extensionHeaderField': { + }, + 'flowLabel': { + }, + 'hopLimit': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'nextHeader': { + }, + 'trafficClass': { + } + }, + 'advancedUDP': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + } + }, + 'bidirectional': { + }, + 'delayStart': { + }, + 'dstPort': { + }, + 'dstPortMask': { + }, + 'duration': { + 'disable_nd_probes': { + }, + 'durationFrames': { + }, + 'durationTime': { + } + }, + 'enableTCP': { + }, + 'maxStreams': { + }, + 'payload': { + 'data': { + }, + 'dataWidth': { + }, + 'type': { + } + }, + 'payloadAdvanced': { + 'udfDataWidth': { + }, + 'udfLength': { + }, + 'udfMode': { + }, + 'udfOffset': { + } + }, + 'randomizeIP': { + }, + 'rateDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'ramptype': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'sizeDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'mixlen1': { + }, + 'mixlen10': { + }, + 'mixlen2': { + }, + 'mixlen3': { + }, + 'mixlen4': { + }, + 'mixlen5': { + }, + 'mixlen6': { + }, + 'mixlen7': { + }, + 'mixlen8': { + }, + 'mixlen9': { + }, + 'mixweight1': { + }, + 'mixweight10': { + }, + 'mixweight2': { + }, + 'mixweight3': { + }, + 'mixweight4': { + }, + 'mixweight5': { + }, + 'mixweight6': { + }, + 'mixweight7': { + }, + 'mixweight8': { + }, + 'mixweight9': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'slowStart': { + }, + 'slowStartFps': { + }, + 'srcPort': { + }, + 'srcPortMask': { + }, + 'syncIP': { + }, + 'udpDstPortMode': { + }, + 'udpSrcPortMode': { + } + }, + '@type:layer3advanced': { + 'Templates': { + 'TemplateType': { + } + }, + 'advancedIPv4': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'optionHeaderData': { + }, + 'optionHeaderField': { + }, + 'tos': { + }, + 'ttl': { + } + }, + 'advancedIPv6': { + 'extensionHeaderData': { + }, + 'extensionHeaderField': { + }, + 'flowLabel': { + }, + 'hopLimit': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'nextHeader': { + }, + 'trafficClass': { + } + }, + 'advancedUDP': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + } + }, + 'bidirectional': { + }, + 'delayStart': { + }, + 'duration': { + 'disable_nd_probes': { + }, + 'durationFrames': { + }, + 'durationTime': { + } + }, + 'enablePerStreamStats': { + }, + 'enableTCP': { + }, + 'payload': { + 'data': { + }, + 'dataWidth': { + }, + 'type': { + } + }, + 'payloadAdvanced': { + 'udfDataWidth': { + }, + 'udfLength': { + }, + 'udfMode': { + }, + 'udfOffset': { + } + }, + 'rateDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'ramptype': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'sizeDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'mixlen1': { + }, + 'mixlen10': { + }, + 'mixlen2': { + }, + 'mixlen3': { + }, + 'mixlen4': { + }, + 'mixlen5': { + }, + 'mixlen6': { + }, + 'mixlen7': { + }, + 'mixlen8': { + }, + 'mixlen9': { + }, + 'mixweight1': { + }, + 'mixweight10': { + }, + 'mixweight2': { + }, + 'mixweight3': { + }, + 'mixweight4': { + }, + 'mixweight5': { + }, + 'mixweight6': { + }, + 'mixweight7': { + }, + 'mixweight8': { + }, + 'mixweight9': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'slowStart': { + }, + 'slowStartFps': { + }, + 'tuple_gen_seed': { + } + }, + '@type:layer4': { + 'delayStart': { + }, + 'dstPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'packetsPerSession': { + }, + 'payload': { + 'add_timestamp': { + }, + 'data': { + }, + 'http_type': { + }, + 'transport': { + }, + 'type': { + } + }, + 'payloadSizeDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:liveappsim': { + 'app': { + 'fidelity': { + }, + 'removeUnknownSSL': { + }, + 'removeUnknownTcpUdp': { + }, + 'removedns': { + }, + 'replace_streams': { + }, + 'streamsPerSuperflow': { + } + }, + 'concurrencyscalefactor': { + }, + 'delayStart': { + }, + 'inflateDeflate': { + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'liveProfile': { + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { + } + }, + 'sfratescalefactor': { + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + }, + 'tputscalefactor': { + } + }, + '@type:playback': { + 'behavior': { + }, + 'delayStart': { + }, + 'file': { + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'modification': { + 'bpfstring': { + }, + 'endpacket': { + }, + 'independentflows': { + }, + 'loopcount': { + }, + 'newport': { + }, + 'originalport': { + }, + 'replay': { + }, + 'serveripinjection': { + }, + 'single': { + }, + 'startpacket': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:security_all': { + 'attackPlan': { + }, + 'attackPlanIterationDelay': { + }, + 'attackPlanIterations': { + }, + 'attackProfile': { + }, + 'attackRetries': { + }, + 'delayStart': { + }, + 'maxAttacksPerSecond': { + }, + 'maxConcurrAttacks': { + }, + 'maxPacketsPerSecond': { + }, + 'randomSeed': { + } + }, + '@type:security_np': { + 'attackPlan': { + }, + 'attackPlanIterationDelay': { + }, + 'attackPlanIterations': { + }, + 'attackProfile': { + }, + 'attackRetries': { + }, + 'delayStart': { + }, + 'randomSeed': { + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'max': { + }, + 'maxPerSecond': { + } + } + }, + '@type:stackscrambler': { + 'delayStart': { + }, + 'dstPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'payload': { + 'data': { + }, + 'transport': { + }, + 'type': { + } + }, + 'payloadSizeDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'prng': { + 'offset': { + }, + 'seed': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'scrambleOptions': { + 'badEthType': { + }, + 'badGTPFlags': { + }, + 'badGTPLen': { + }, + 'badGTPNext': { + }, + 'badGTPNpdu': { + }, + 'badGTPSeqno': { + }, + 'badGTPType': { + }, + 'badICMPCode': { + }, + 'badICMPType': { + }, + 'badIPChecksum': { + }, + 'badIPFlags': { + }, + 'badIPFlowLabel': { + }, + 'badIPFragOffset': { + }, + 'badIPLength': { + }, + 'badIPOptions': { + }, + 'badIPProtocol': { + }, + 'badIPTOS': { + }, + 'badIPTTL': { + }, + 'badIPTotalLength': { + }, + 'badIPVersion': { + }, + 'badL4Checksum': { + }, + 'badL4HeaderLength': { + }, + 'badSCTPChecksum': { + }, + 'badSCTPFlags': { + }, + 'badSCTPLength': { + }, + 'badSCTPType': { + }, + 'badSCTPVerificationTag': { + }, + 'badTCPFlags': { + }, + 'badTCPOptions': { + }, + 'badUrgentPointer': { + }, + 'handshakeTCP': { + }, + 'maxCorruptions': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'enableIgnoreAdaptiveRampupSettings': { + }, + 'enableSuperflowTimeout': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + }, + 'valueSuperflowTimeout': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + 'active': { + }, + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'id': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, + 'originalPreset': { + }, + 'originalPresetLabel': { + }, + 'reportResults': { + }, + 'revision': { + }, + 'tags': [{ + 'domainId': { + 'external': { + }, + 'iface': { + }, + 'name': { + } + }, + 'id': { + }, + 'type': { + } + }], + 'timeline': { + 'timesegment': [{ + 'label': { + }, + 'size': { + }, + 'type': { + } + }] + }, + 'type': { + } + }], 'getComponentPresetNames': [{ }] }, @@ -6005,6 +9399,8 @@ class DataModelMeta(type): }, 'duration': { }, + 'dut': { + }, 'label': { }, 'lastrun': { @@ -6013,6 +9409,14 @@ class DataModelMeta(type): }, 'lockedBy': { }, + 'meta': { + 'info': [{ + 'name': { + }, + 'value': { + } + }] + }, 'name': { }, 'network': { @@ -6020,12 +9424,40 @@ class DataModelMeta(type): 'operations': { 'add': [{ }], + 'addOpenRecent': [{ + }], 'clone': [{ }], 'delete': [{ }], 'exportModel': [{ }], + 'flowExceptions': [{ + 'component': { + }, + 'componentLabel': { + }, + 'componentType': { + 'label': { + } + }, + 'dataIndex': { + }, + 'group': { + }, + 'iface': { + }, + 'params': { + }, + 'protocol': { + }, + 'slot': { + }, + 'vlan': { + } + }], + 'getRecent': [{ + }], 'importModel': [{ }], 'load': [{ @@ -6045,6 +9477,26 @@ class DataModelMeta(type): 'search': [{ }], 'stopRun': [{ + }], + 'testComponentDefinition': [{ + }], + 'validate': [{ + 'fixAction': { + 'content': { + }, + 'key': { + } + }, + 'fixable': { + }, + 'message': { + 'content': { + }, + 'key': { + } + }, + 'result': { + } }] }, 'result': { @@ -6057,6 +9509,8 @@ class DataModelMeta(type): }, 'current': { }, + 'enabled': { + }, 'original': { } }, @@ -6065,6 +9519,8 @@ class DataModelMeta(type): }, 'current': { }, + 'enabled': { + }, 'original': { } }, @@ -6073,6 +9529,8 @@ class DataModelMeta(type): }, 'current': { }, + 'enabled': { + }, 'original': { } }, @@ -6081,6 +9539,8 @@ class DataModelMeta(type): }, 'current': { }, + 'enabled': { + }, 'original': { } }, @@ -6089,6 +9549,8 @@ class DataModelMeta(type): }, 'current': { }, + 'enabled': { + }, 'original': { } }, @@ -6097,6 +9559,8 @@ class DataModelMeta(type): }, 'current': { }, + 'enabled': { + }, 'original': { } } @@ -6130,8 +9594,12 @@ class DataModelMeta(type): 'chain': { 'name': { }, - 'remotes': { - } + 'remotes': [{ + 'host': { + }, + 'state': { + } + }] }, 'cnState': [{ 'cnId': { @@ -6142,13 +9610,41 @@ class DataModelMeta(type): }, 'cnSlotNo': { }, + 'conditions': [{ + 'message': { + }, + 'status': { + }, + 'type': { + } + }], 'firmwareUpgrade': { }, 'licensed': { }, 'marketingName': { }, + 'opModes': [{ + 'active': { + }, + 'id': { + }, + 'label': { + }, + 'name': { + } + }], + 'remoteInfo': { + 'host': { + }, + 'slotId': { + }, + 'state': { + } + }, 'state': { + }, + 'stateDescription': { } }], 'ixos': { @@ -6165,20 +9661,28 @@ class DataModelMeta(type): 'exportCapture': [{ }], 'getFanoutModes': [{ - 'cardModel': { - }, - 'fanout': [{ - 'fanoutId': { + 'fanouts': [{ + 'active': { + }, + 'id': { }, 'name': { + }, + 'speedMode': { } - }] + }], + 'model': { + } }], 'getPortAvailableModes': [{ 'modes': [{ - 'fanoutId': { + 'active': { + }, + 'id': { }, 'name': { + }, + 'speedMode': { } }], 'port': { @@ -6278,6 +9782,14 @@ class DataModelMeta(type): 'serialNumber': { }, 'slot': [{ + 'conditions': [{ + 'message': { + }, + 'status': { + }, + 'type': { + } + }], 'firmwareUpgrade': { }, 'fpga': [{ @@ -6300,6 +9812,8 @@ class DataModelMeta(type): }, 'interfaceCount': { }, + 'ipAddress': { + }, 'mode': { }, 'model': { @@ -6322,6 +9836,16 @@ class DataModelMeta(type): 'state': { } }], + 'opModes': [{ + 'active': { + }, + 'id': { + }, + 'label': { + }, + 'name': { + } + }], 'port': [{ 'active': { }, @@ -6329,6 +9853,8 @@ class DataModelMeta(type): }, 'capture': { }, + 'capture_group': { + }, 'capturing': { }, 'currentMode': { @@ -6366,9 +9892,17 @@ class DataModelMeta(type): }, 'rxframes': { }, + 'rxreason': { + }, + 'rxstate': { + }, 'txbytes': { }, 'txframes': { + }, + 'txreason': { + }, + 'txstate': { } }], 'portGroup': { @@ -6379,9 +9913,43 @@ class DataModelMeta(type): }, 'reservedBy': { }, + 'reservedLinkSettings': { + 'auto': { + }, + 'capture': { + }, + 'fullduplex': { + }, + 'ignorepause': { + }, + 'media': { + }, + 'mtu': { + }, + 'precoder': { + }, + 'speed': { + } + }, + 'software_capture': { + }, 'speed': { }, 'state': { + }, + 'transceiver': { + '_id': { + }, + 'cableLength': { + }, + 'identifier': { + }, + 'mediaType': { + }, + 'vendor': { + }, + 'vendorPartNumber': { + } } }], 'remoteInfo': { @@ -6395,6 +9963,10 @@ class DataModelMeta(type): 'serialNumber': { }, 'state': { + }, + 'stateDescription': { + }, + 'supportsL23': { } }] } diff --git a/RestApi/Python/RestApi_v2/Modules/bps_restpy/rest_samples/Retry_Sample.py b/RestApi/Python/RestApi_v2/Modules/bps_restpy/rest_samples/Retry_Sample.py deleted file mode 100644 index 0714b29..0000000 --- a/RestApi/Python/RestApi_v2/Modules/bps_restpy/rest_samples/Retry_Sample.py +++ /dev/null @@ -1,115 +0,0 @@ -# Title: Python Script Sample To Run a Canned Test. -# Actions: -# 1. Login to BPS box -# 2. Reserve ports -# 3. Load a test from the box and start the run -# 4. Wait for the test to finish -# 5. Get test result -# 6. Get and print the Synopsis page from report -# 7. Unreserve ports -# 8. Logout - - -#================ - -######################################## -import time, sys, os, traceback -# Add bps_restpy libpath *required if the library is not installed -sys.path.append(os.path.join(os.path.dirname(__file__), r"../")) - -from restPyWrapper3 import * - -######################################## - - -######################################## -# Demo script global variables -######################################## -# Demo script global variables -canned_test_name = 'AppSim' -#bps system info -bps_system = '' -bpsuser = 'bps user' -bpspass = 'bps pass' -testGroup = 1 - -slot_number = 1 -port_list = ["1.0", "2.0"] -l47_resource = [0 , 1] -######################################## - - -######################################## -# Login to BPS box -bps = BPS(bps_system, bpsuser, bpspass) -retry_count = 0 -bps.login() - -######################################## -print("Load a canned test: ") -bps.testmodel.load(canned_test_name) -######################################## -print("Reserve Ports") -for p in port_list: - bps.topology.reserve([{'slot': slot_number, 'port': p, 'group': testGroup}]) -print("Reserve L47 resources...") -for r in l47_resource: - bps.topology.reserveResource(group = testGroup, resourceId = r, resourceType = "l47") - - -######################################## -print("Run test and Get Stats:") -test_id_json = bps.testmodel.run(modelname=canned_test_name, group=testGroup) -testid = str( test_id_json["runid"] ) -run_id = 'TEST-' + testid -print("Test Run Id: %s"%run_id) -#get the ids for all tests running on the chassis -runningTests_Ids = [test['id'] for test in bps.topology.runningTest.get()] -#wait while the test is still running -retry_count = 0 -try: - while True and retry_count <= 3: - try: - run_state = bps.topology.runningTest[run_id].get() - stat_val = bps.testmodel.realTimeStats(int(testid), "ethRxFrameDataRate", -1) - except Exception as err: - if retry_count == 3: - bps.logout() - raise Exception("Exceeded the Retry limitation!") - if type(err) == dict and "status_code" in err.keys() and err["status_code"] in [500, 503]: - print("Retry the stats retrieiving in 5 seconds...") - time.sleep(5) - retry_count += 1 - continue - else: - bps.logout() - raise Exception(err) - try: - state = run_state['completed'] - except KeyError: # The key does not exist in a completed test-> should be treated as completed. - print("Payload is not collected. The test is finished while collecting or the API is not providing the correct result.") - traceback.print_exc() - state = True - if state: - break - else: - print("Time Elapsed: " + str(run_state['runtime']) + "(%s%%)" % str(run_state['progress']) ) - if run_state['progress'] is None: - time.sleep(1) - continue - print("Test completed") - # for k in self.csv_dumper_objects.keys(): - # self.csv_dumper_objects[k].close_writer() - # get_test_end_status() -except Exception as err: - bps.logout() - raise Exception(str(err)) -print("~The test finished the execution.") -time.sleep(2) -print("Releasing resources...") -for r in l47_resource: - bps.topology.releaseResource(group = testGroup, resourceId = r, resourceType = "l47") -print ("Unreserving the ports") -for p in port_list: - bps.topology.unreserve([{'slot': slot_number, 'port': p, 'group': testGroup}]) -bps.logout() diff --git a/RestApi/Python/RestApi_v2/Modules/bps_restpy/rest_samples/s10_BPSVE_Manage_License.py b/RestApi/Python/RestApi_v2/Modules/bps_restpy/rest_samples/s10_BPSVE_Manage_License.py index 17403d9..2f5a900 100755 --- a/RestApi/Python/RestApi_v2/Modules/bps_restpy/rest_samples/s10_BPSVE_Manage_License.py +++ b/RestApi/Python/RestApi_v2/Modules/bps_restpy/rest_samples/s10_BPSVE_Manage_License.py @@ -16,11 +16,11 @@ import os # Add bps_restpy libpath *required if the library is not installed libpath = os.path.abspath(__file__+"/../../..") -libpath = os.path.abspath(__file__+"/../../") -sys.path.insert(0, libpath) +sys.path.insert(0,libpath) + import logging -from restPyWrapper3 import BPS, pp +from bps_restpy.bps import BPS, pp from bpsVELicense import BPSVELicenseManagement ######################################## @@ -32,13 +32,9 @@ bps_system = '' bpsuser = 'bps user' bpspass = 'bps pass' -bps_system = '10.36.82.74' -bpsuser = 'admin' -bpspass = 'admin' + mainLicenseServer = '' -mainLicenseServer = "10.36.66.31" activationCode = '' -activationCode = "" ######################################## diff --git a/RestApi/Python/RestApi_v2/SampleScripts/.DS_Store b/RestApi/Python/RestApi_v2/SampleScripts/.DS_Store new file mode 100644 index 0000000..615eb56 Binary files /dev/null and b/RestApi/Python/RestApi_v2/SampleScripts/.DS_Store differ diff --git a/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/DifferenceReport.py b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/DifferenceReport.py new file mode 100644 index 0000000..80b4e0d --- /dev/null +++ b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/DifferenceReport.py @@ -0,0 +1,87 @@ +from collections import defaultdict + +class DifferenceReport: + + def __init__(self): + self.sections = [] # -> dict {Section ID, Section Name, Strike Total Difference, Detail Difference[Time of Strike, Strike Name, Strike Reference, Permutations, Strike Tuples]} + self.raw_sections = [] + def add_change(self,section): + self.sections.append(section) + + def add_raw_change(self,raw_section): + self.raw_sections.append(raw_section) + + def print_all(self, security): + print("Differences:") + if security: + with open("checkResult.txt", "w") as file: + for section in self.sections: + if "Strike Total Difference" in section and "Detail Difference" in section: + section_id = section["Section ID"] + section_name = section["Section Name"] + file.write("Section ID: {0}\n".format(section_id)) + file.write("Section Name: {0}\n".format(section_name)) + print("Section ID: {0}".format(section_id)) + print("Section Name: {0}".format(section_name)) + file.write("Strike Total Difference: {0}\n".format(section["Strike Total Difference"])) + print("Strike Total Difference: {0}\n".format(section["Strike Total Difference"])) + for i in range(len(section["Detail Difference"]["Time of strike"])): + file.write("Time of Strike: {0}\n".format(section["Detail Difference"]["Time of strike"][i])) + file.write("Strike Name: {0}\n".format(section["Detail Difference"]["Strike Name"][i])) + file.write("Strike Result: {0}\n".format(section["Detail Difference"]["Strike Result"][i])) + file.write("Strike Reference: {0}\n".format(section["Detail Difference"]["Strike Reference"][i])) + file.write("Permutations: {0}\n".format(section["Detail Difference"]["Permutations"][i])) + file.write("Strike Tuples: {0}\n".format(section["Detail Difference"]["Strike Tuples"][i])) + #print + print("Time of Strike: {0}\n".format(section["Detail Difference"]["Time of strike"][i])) + print("Strike Name: {0}\n".format(section["Detail Difference"]["Strike Name"][i])) + print("Strike Result: {0}\n".format(section["Detail Difference"]["Strike Result"][i])) + print("Strike Reference: {0}\n".format(section["Detail Difference"]["Strike Reference"][i])) + print("Permutations: {0}\n".format(section["Detail Difference"]["Permutations"][i])) + print("Strike Tuples: {0}\n".format(section["Detail Difference"]["Strike Tuples"][i])) + print("++++++++++++++++++++++++++++++++++++") + file.write("++++++++++++++++++++++++++++++++++++\n") + file.write("===============================================================\n") + print("===============================================================") + else: + with open("checkResult.txt", "w") as file: + for section in self.sections: + section_id = section["Section ID"] + section_name = section["Section Name"] + file.write("Section ID: {0}\n".format(section_id)) + file.write("Section Name: {0}\n".format(section_name)) + print("Section ID: {0}".format(section_id)) + print("Section Name: {0}".format(section_name)) + if "Strike Total Difference" in section and "Detail Difference" in section: + file.write("Strike Total Difference: {0}\n".format(section["Strike Total Difference"])) + print("Strike Total Difference: {0}\n".format(section["Strike Total Difference"])) + for i in range(len(section["Detail Difference"]["Time of strike"])): + file.write("Time of Strike: {0}\n".format(section["Detail Difference"]["Time of strike"][i])) + file.write("Strike Name: {0}\n".format(section["Detail Difference"]["Strike Name"][i])) + file.write("Strike Result: {0}\n".format(section["Detail Difference"]["Strike Result"][i])) + file.write("Strike Reference: {0}\n".format(section["Detail Difference"]["Strike Reference"][i])) + file.write("Permutations: {0}\n".format(section["Detail Difference"]["Permutations"][i])) + file.write("Strike Tuples: {0}\n".format(section["Detail Difference"]["Strike Tuples"][i])) + #print + print("Time of Strike: {0}\n".format(section["Detail Difference"]["Time of strike"][i])) + print("Strike Name: {0}\n".format(section["Detail Difference"]["Strike Name"][i])) + print("Strike Result: {0}\n".format(section["Detail Difference"]["Strike Result"][i])) + print("Strike Reference: {0}\n".format(section["Detail Difference"]["Strike Reference"][i])) + print("Permutations: {0}\n".format(section["Detail Difference"]["Permutations"][i])) + print("Strike Tuples: {0}\n".format(section["Detail Difference"]["Strike Tuples"][i])) + print("++++++++++++++++++++++++++++++++++++") + file.write("++++++++++++++++++++++++++++++++++++\n") + file.write("===============================================================\n") + print("===============================================================") + + def print_raw_all(self): + print("Difference: ") + with open ("checkResult.txt", "a+") as file: + for raw_section in self.raw_sections: + print("Section ID: {0}".format(raw_section.id)) + print("Section Name: {0}".format(raw_section.name)) + file.write("Section ID: {0}\n".format(raw_section.id)) + file.write("Section Name: {0}\n".format("Section Name: {0}".format(raw_section.name))) + + + \ No newline at end of file diff --git a/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/ReportContent.py b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/ReportContent.py new file mode 100644 index 0000000..88e4f37 --- /dev/null +++ b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/ReportContent.py @@ -0,0 +1,101 @@ +import sys, os, re, time +from Section import Section +from collections import defaultdict +from DifferenceReport import DifferenceReport +sys.path.append(os.path.dirname(__file__)) +from restPyWrapper3 import * + +class ReportContent: + + def __init__(self, bps, runId, security = False): + self.content = {} + self.bps = bps + self.sections = [] + self.run_id = runId + self.security_check = security + + def create_content(self): + self.content = self.bps.reports.getReportContents(runid=self.run_id, getTableOfContents=True) + + def load_all_section(self): + id_of_security_start = "" + for i in range(len(self.content)): + id = self.content[i]["Section ID"] + name = self.content[i]["Section Name"] + section_split = id.split(".") + if len(section_split) > 1: + parent_id = ".".join(id.split(".")[:-1]) + parent_section = self.retrieve_section_by_id(parent_id) + if parent_section: + parent_section.children.append(id) + section = Section(id,name,i) + if id_of_security_start: + if id.startswith(id_of_security_start): + section.security = True + section.load_section() + section.normalize_variant_name() + elif name == "Component Detection Assessment": + id_of_security_start = id + # Now all the security section children gets the detail of the table + self.sections.append(section) + + def retrieve_section_by_id(self, section_id): + for section in self.sections: + if section_id == section.id: + return section + return None + + def compare_reportContent(self, content_to_compare): # + try: + difference = DifferenceReport() + for section in self.sections: + section_to_compare = content_to_compare.find_diff_sections(section) + if section_to_compare: # Same Name Security or not Security + + # Any difference in the exisiting list + if section.security and not section.children: # if it's a child + section.get_security_content(self.bps, self.run_id) + if not section_to_compare.children and not section_to_compare.detail: + difference.add_change(section.to_dict()) + else: + if section.security_strike_total != section_to_compare.security_strike_total: + section_diff = section.compare_security(section_to_compare,self.sections) + difference.add_change(section_diff) + else: + difference.add_change(section.to_dict()) + else: + if section.security and not section.children: # if it's a child + section.get_security_content(self.bps, self.run_id) + difference.add_change(section.to_dict()) + difference.print_all(self.security_check) + except Exception as err: + raise Exception(str(err)) + + + def compare_raw_reportContent(self, content_to_compare): # + try: + difference = DifferenceReport() + for section in self.sections: + if not content_to_compare.find_sections_by_name(section.name): # The name are totally different, new section found + # Any difference in the exisiting list + difference.add_raw_change(section) # if it's a security component, it will generate things from detail + difference.print_raw_all() + except Exception as err: + raise Exception(str(err)) + + def find_diff_sections(self, section_to_compare): + for section in self.sections: + if section.security and section_to_compare.security: + if section.relative_name == section_to_compare.relative_name: + return section + else: + if section.name == section_to_compare.name: + return section + return None + + + def find_sections_by_name(self, section_name): + for section in self.sections: + if section.name == section_name: + return True + return False \ No newline at end of file diff --git a/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/Section.py b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/Section.py new file mode 100644 index 0000000..608ef73 --- /dev/null +++ b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/Section.py @@ -0,0 +1,124 @@ +import re +import time +from collections import defaultdict + +class Section: + def __init__(self, id, name, index): + self.id = id + self.name = name + self.relative_name = "" + self.index = index + self.security_strike_allow_blocks = -1 + self.security_strike_total = -1 + self.detail = [] + self.children = [] + self.security = False + + def compare_security(self, section_to_compare, sections): + result = {} + try: + if self.security_strike_total != section_to_compare.security_strike_total: # total strike is different + + result["Section ID"] = self.id + result["Section Name"] = self.relative_name + result["Strike Total Difference"] = abs(section_to_compare.security_strike_total - self.security_strike_total) + + if self.children and not section_to_compare.children:# get the detail from children + + children_list = [] + for id in self.children: + child = self.get_section_by_id(id,sections) + if child: + children_list.append(child) + result["Detail Difference"] = defaultdict(list) + latest_time = float(section_to_compare.detail[0]["Time of strike"][-1]) + for child in children_list: + j = 0 + while j < len(len(child.detail[0]["Time of strike"])): + if float(child.detail[0]["Time of strike"][i]) <= latest_time: + del child.detail[0]["Time of strike"][i] + del child.detail[1]["Strike Name"][i] + del child.detail[2]["Strike Result"][i] + del child.detail[3]["Strike Reference"][i] + del child.detail[4]["Permutations"][i] + del child.detail[5]["Strike Tuples"][i] + else: + j += 1 + + elif not self.children and not section_to_compare.children: # Both security child + result["Detail Difference"] = defaultdict(list) + latest_time = float(section_to_compare.detail[0]["Time of strike"][-1]) + if self.detail[0]["Time of strike"]: + for i in range(len(self.detail[0]["Time of strike"])): + if float(self.detail[0]["Time of strike"][i]) > latest_time: + result["Detail Difference"]["Time of strike"].append(self.detail[0]["Time of strike"][i]) + result["Detail Difference"]["Strike Name"].append(self.detail[1]["Strike Name"][i]) + result["Detail Difference"]["Strike Result"].append(self.detail[2]["Strike Result"][i]) + result["Detail Difference"]["Strike Reference"].append(self.detail[3]["Strike Reference"][i]) + result["Detail Difference"]["Permutations"].append(self.detail[4]["Permutations"][i]) + result["Detail Difference"]["Strike Tuples"].append(self.detail[5]["Strike Tuples"][i]) + except Exception as err: + raise Exception(str(err)) + return result + + def get_security_content(self,bps,report_id): + start = time.time() + self.detail = bps.reports.getReportTable(report_id,sectionId=self.id) + end = time.time() + d_time = end -start + print("It takes {0} s to complete.".format(d_time)) + return self.detail + + def get_section_by_id(self,section_id, sections): + for section in sections: + if section.id == section_id: + return section + return None + + def load_section(self): + if self.security: + # Regular expression pattern to match pairs of numbers separated by a "/" + pattern = r'\b(\d+)/(\d+)\b' + # Find all matches in the input string + matches = re.findall(pattern, self.name) + # Convert matches to list of tuples with integers + if matches: + self.security_strike_allow_blocks = int(matches[0][0]) + self.security_strike_total = int(matches[0][1]) + self.relative_name = self.name.replace(f" {self.security_strike_allow_blocks}/{self.security_strike_total}", "") + + def normalize_variant_name(self): + if self.name: + sep_name = self.name.split("/") + if len(sep_name) > 3 and sep_name[0] == 'strikes': + self.name = "/".join(sep_name[2:]) + self.relative_name = "/".join(self.relative_name.split("/")[2:]) + + def to_dict(self): + result = {} + result["Section ID"] = self.id + if self.relative_name: + result["Section Name"] = self.relative_name + else: + result["Section Name"] = self.name + if self.detail: + result["Strike Total Difference"] = self.security_strike_total + result["Detail Difference"] = defaultdict(list) + try: + if self.detail[0]["Time of strike"]: + for i in range(len(self.detail[0]["Time of strike"])): + result["Detail Difference"]["Time of strike"].append(self.detail[0]["Time of strike"][i]) + result["Detail Difference"]["Strike Name"].append(self.detail[1]["Strike Name"][i]) + result["Detail Difference"]["Strike Result"].append(self.detail[2]["Strike Result"][i]) + result["Detail Difference"]["Strike Reference"].append(self.detail[3]["Strike Reference"][i]) + result["Detail Difference"]["Permutations"].append(self.detail[4]["Permutations"][i]) + result["Detail Difference"]["Strike Tuples"].append(self.detail[5]["Strike Tuples"][i]) + except Exception as err: + raise Exception(str(err)) + return result + + def __repr__(self): + return "Section(ID={0}, name={1})".format(self.id,self.name) + + def __str__(self): + return "Section ID is {0}, the name is {1}".format(self.id,self.name) \ No newline at end of file diff --git a/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/Stan_All_Strikes_All_Variants.bpt b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/Stan_All_Strikes_All_Variants.bpt new file mode 100644 index 0000000..bf48540 --- /dev/null +++ b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/Stan_All_Strikes_All_Variants.bpt @@ -0,0 +1 @@ +1.59259New StrikesAll Strikes10All Variantsdefault000000:00:001001001001001001000925922919881008100810081008100810081008100810081008100810081008100810081008100810081008100External Hosts ext_defaultStatic Hosts i1_defaultStatic Hosts i1_defaultStatic Hosts i2_defaultStatic Hosts i2_defaultStatic Hosts i3_defaultStatic Hosts i3_defaultStatic Hosts i4_defaultStatic Hosts i4_defaultStatic Hosts i5_defaultStatic Hosts i5_defaultStatic Hosts i6_defaultStatic Hosts i6_defaultStatic Hosts i7_defaultStatic Hosts i7_defaultStatic Hosts i8_defaultStatic Hosts i8_defaultStatic Hosts i9_defaultStatic Hosts i9_defaultStatic Hosts i10_defaultStatic Hosts i10_defaultStatic Hosts i11_defaultStatic Hosts i11_defaultStatic Hosts i12_defaultStatic Hosts i12_defaultStatic Hosts i13_defaultStatic Hosts i13_defaultStatic Hosts i14_defaultStatic Hosts i14_defaultStatic Hosts i15_defaultStatic Hosts i15_defaultStatic Hosts i16_defaultStatic Hosts i16_defaultStatic Hosts i17_defaultStatic Hosts i17_defaultStatic Hosts i18_defaultStatic Hosts i18_defaultStatic Hosts i19_defaultStatic Hosts i19_defaultStatic Hosts i20_defaultStatic Hosts i20_defaultInterface 119198truetruefalse02:1A:C5:01:00:00outer_vlanStatic Hosts i1_default1.1.0.11.0.0.1850008Interface 1falsefalsefalserandom_ipInterface 229198truetruefalse02:1A:C5:02:00:00outer_vlanStatic Hosts i2_default1.2.0.11.0.0.1850008Interface 2falsefalsefalserandom_ipInterface 331500truetruefalse02:1A:C5:03:00:00outer_vlanStatic Hosts i3_default1.3.0.11.0.0.18655348Interface 3falsefalsefalserandom_ipInterface 441500truetruefalse02:1A:C5:04:00:00outer_vlanStatic Hosts i4_default1.4.0.11.0.0.18655348Interface 4falsefalsefalserandom_ipInterface 551500truetruefalse02:1A:C5:05:00:00outer_vlanStatic Hosts i5_default1.5.0.11.0.0.18655348Interface 5falsefalsefalserandom_ipInterface 661500truetruefalse02:1A:C5:06:00:00outer_vlanStatic Hosts i6_default1.6.0.11.0.0.18655348Interface 6falsefalsefalserandom_ipInterface 771500truetruefalse02:1A:C5:07:00:00outer_vlanStatic Hosts i7_default1.7.0.11.0.0.18655348Interface 7falsefalsefalserandom_ipInterface 881500truetruefalse02:1A:C5:08:00:00outer_vlanStatic Hosts i8_default1.8.0.11.0.0.18655348Interface 8falsefalsefalserandom_ipInterface 991500truetruefalse02:1A:C5:09:00:00outer_vlanStatic Hosts i9_default1.9.0.11.0.0.18655348Interface 9falsefalsefalserandom_ipInterface 10101500truetruefalse02:1A:C5:0A:00:00outer_vlanStatic Hosts i10_default1.10.0.11.0.0.18655348Interface 10falsefalsefalserandom_ipInterface 11111500truetruefalse02:1A:C5:0B:00:00outer_vlanStatic Hosts i11_default1.11.0.11.0.0.18655348Interface 11falsefalsefalserandom_ipInterface 12121500truetruefalse02:1A:C5:0C:00:00outer_vlanStatic Hosts i12_default1.12.0.11.0.0.18655348Interface 12falsefalsefalserandom_ipInterface 13131500truetruefalse02:1A:C5:0D:00:00outer_vlanStatic Hosts i13_default1.13.0.11.0.0.18655348Interface 13falsefalsefalserandom_ipInterface 14141500truetruefalse02:1A:C5:0E:00:00outer_vlanStatic Hosts i14_default1.14.0.11.0.0.18655348Interface 14falsefalsefalserandom_ipInterface 15151500truetruefalse02:1A:C5:0F:00:00outer_vlanStatic Hosts i15_default1.15.0.11.0.0.18655348Interface 15falsefalsefalserandom_ipInterface 16161500truetruefalse02:1A:C5:10:00:00outer_vlanStatic Hosts i16_default1.16.0.11.0.0.18655348Interface 16falsefalsefalserandom_ipInterface 17171500truetruefalse02:1A:C5:11:00:00outer_vlanStatic Hosts i17_default1.17.0.11.0.0.18655348Interface 17falsefalsefalserandom_ipInterface 18181500truetruefalse02:1A:C5:12:00:00outer_vlanStatic Hosts i18_default1.18.0.11.0.0.18655348Interface 18falsefalsefalserandom_ipInterface 19191500truetruefalse02:1A:C5:13:00:00outer_vlanStatic Hosts i19_default1.19.0.11.0.0.18655348Interface 19falsefalsefalserandom_ipInterface 20201500truetruefalse02:1A:C5:14:00:00outer_vlanStatic Hosts i20_default1.20.0.11.0.0.18655348Interface 20falsefalsefalserandom_ipExternal Hosts ext_default10.0.0.1254falsefalseThis profile uses the default evasion settingstrueAllVariants \ No newline at end of file diff --git a/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/checkResult.txt b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/checkResult.txt new file mode 100644 index 0000000..e69de29 diff --git a/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/compareReport.py b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/compareReport.py new file mode 100644 index 0000000..9d012c7 --- /dev/null +++ b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/compareReport.py @@ -0,0 +1,103 @@ +import sys, os, time, re, copy +from ReportContent import ReportContent +sys.path.append(os.path.dirname(__file__)) +# Harness variables ***************************************** +from restPyWrapper3 import * +from collections import defaultdict +if 'py' not in dir(): + class TestFailedError(Exception): + pass + class Py: + pass + py = Py() + py.bpsuser = 'admin' + py.bpspass = 'admin' + py.ports = [('', 4, 0), ('', 4, 1)] + +py.bpssys = py.ports[0][0] +# END Harness variables ************************************* + +######################################## +test_model_name = "" +testGroup = 20 +slot_number = py.ports[0][1] +port_list = [port[2] for port in py.ports] + +######################################## +# Login to BPS box +bps = BPS(py.bpssys, py.bpsuser, py.bpspass) +bps.login() +# bpt_file = os.path.join(os.path.dirname(__file__),"s06_security_rest_example.bpt") +bpt_file = os.path.join(os.path.dirname(__file__),"Stan_All_Strikes_All_Variants.bpt") +bps.testmodel.importModel(name=test_model_name,filename=bpt_file, force=True) +bps.testmodel.load(test_model_name) + +######################################## +if __name__ == "__main__": + try: + for p in port_list: + bps.topology.reserve([{'slot': slot_number, 'port': p, 'group': testGroup, 'capture': False}]) + # l47_resource = [0,1] + # for r in l47_resource: + # bps.topology.reserveResource(group = testGroup, resourceId = r, resourceType = "l47") + print("Run test and Get Stats:") + test_id_json = bps.testmodel.run(modelname=test_model_name, group=testGroup, allowMalware=True) + run_id = test_id_json["runid"] + print("Test Run Id: %s"%run_id) + + print("~Wait for test to begin initialization.") + runningTests = bps.topology.runningTest['TEST-%s'%run_id].get() + while (type(runningTests) == dict and runningTests["initProgress"] == None): + runningTests = bps.topology.runningTest['TEST-%s'%run_id].get() + print("...", end="\r") + time.sleep(1) + + print("~Wait for the initialization process ") + init_progress = bps.topology.runningTest['TEST-%s'%run_id].initProgress.get() + while( type(init_progress) == "str" and int(init_progress) <= 100 and runningTests["progress"] == None): + init_progress = bps.topology.runningTest['TEST-%s'%run_id].initProgress.get() + runningTests = bps.topology.runningTest['TEST-%s'%run_id].get() + time.sleep(1) + print("Initialization progress: %s%s" % (init_progress, '%')) + + print("~Test is running untill 100% progress. Get l4Stats stats at every 2 seconds.") + progress = bps.topology.runningTest['TEST-%s'%run_id].progress.get() + report_prev = None + while(type(progress) == int and int(progress) <= 100): + print(bps.testmodel.realTimeStats(int(run_id), "summary", -1)) + print("===============================================================") + progress = bps.topology.runningTest['TEST-%s'%run_id].progress.get() + try: + report_curr = ReportContent(bps, run_id,security=True) + report_curr.create_content() + report_curr.load_all_section() + if report_prev: + report_curr.compare_reportContent(report_prev) + report_prev = report_curr + time.sleep(4) + except Exception as err: + if "Internal Server Error" in str(err): + print("Server is busy.. back off for 1 minute and retry") + for i in range(60, 0, -1): + time.sleep(1) + print("Retry in {0} s".format(i), end = '\r') + continue + else: + raise Exception(str(err)) + + + except Exception as err: + bps.logout() + raise Exception(str(err)) + + + ###################################### + print("Unreserve ports") + for p in port_list: + bps.topology.unreserve([{'slot': slot_number, 'port': p}]) + # print("Unreserving resources") + # for r in l47_resource: + # bps.topology.releaseResource(group = testGroup, resourceId = r, resourceType = "l47") + print("Session logout") + bps.logout() + diff --git a/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/restPyWrapper3.py b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/restPyWrapper3.py new file mode 100644 index 0000000..166d7c9 --- /dev/null +++ b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/restPyWrapper3.py @@ -0,0 +1,9687 @@ +import requests +import json +import pprint +import base64 +from requests.adapters import HTTPAdapter +from requests.packages.urllib3.poolmanager import PoolManager +import ssl + +requests.packages.urllib3.disable_warnings() +pp = pprint.PrettyPrinter(indent=1).pprint + + +class TlsAdapter(HTTPAdapter): + + def init_poolmanager(self, connections, maxsize, block): + self.poolmanager = PoolManager(num_pools=connections, maxsize=maxsize, block=block) + +### this BPS REST API wrapper is generated for version: 10.30 +class BPS(object): + + def __init__(self, host, user, password, checkVersion=True): + self.host = host + self.user = user + self.password = password + self.sessionId = None + self.session = requests.Session() + self.session.mount('https://', TlsAdapter()) + self.clientVersion = BPS.__lver('10.30') + self.serverVersions = None + self.checkVersion = checkVersion + self.printRequests = False + self.reports = DataModelProxy(wrapper=self, name='reports') + self.statistics = DataModelProxy(wrapper=self, name='statistics') + self.administration = DataModelProxy(wrapper=self, name='administration') + self.superflow = DataModelProxy(wrapper=self, name='superflow') + self.network = DataModelProxy(wrapper=self, name='network') + self.appProfile = DataModelProxy(wrapper=self, name='appProfile') + self.capture = DataModelProxy(wrapper=self, name='capture') + self.testmodel = DataModelProxy(wrapper=self, name='testmodel') + self.strikeList = DataModelProxy(wrapper=self, name='strikeList') + self.evasionProfile = DataModelProxy(wrapper=self, name='evasionProfile') + self.topology = DataModelProxy(wrapper=self, name='topology') + self.loadProfile = DataModelProxy(wrapper=self, name='loadProfile') + self.strikes = DataModelProxy(wrapper=self, name='strikes') + self.results = DataModelProxy(wrapper=self, name='results') + self.remote = DataModelProxy(wrapper=self, name='remote') + + ### connect to the system + def __connect(self): + r = self.session.post(url='https://' + self.host + '/bps/api/v1/auth/session', data=json.dumps({'username': self.user, 'password': self.password}), headers={'content-type': 'application/json'}, verify=False) + if(r.status_code == 200): + self.sessionId = r.json().get('sessionId') + self.session.headers['sessionId'] = r.json().get('sessionId') + self.session.headers['X-API-KEY'] = r.json().get('apiKey') + print('Successfully connected to %s.' % self.host) + else: + raise Exception('Failed connecting to %s: (%s, %s)' % (self.host, r.status_code, r.content)) + + ### Get from data model + def __delete(self, path): + requestUrl = 'https://' + self.host + '/bps/api/v2/core/'+ path + headers = {'content-type': 'application/json'} + if self.printRequests: + import re + print("DELETE, %s, h=%s" %(re.sub(".*/bps/api/v2/core/", "", requestUrl), json.dumps(headers))) + r = self.session.delete(url=requestUrl, headers=headers, verify=False) + if(r.status_code == 400): + methodCall = '%s'%path.replace('/', '.').replace('.operations', '') + content_message = r.content.decode() + ' Execute: help(%s) for more information about the method.'%methodCall + raise Exception({'status_code': r.status_code, 'content': content_message}) + if(r.status_code in [200, 204]): + return self.__json_load(r) + raise Exception({'status_code': r.status_code, 'content': self.__json_load(r)}) + + ### disconnect from the system + def __disconnect(self): + r = self.session.delete(url='https://' + self.host + '/bps/api/v1/auth/session', verify=False) + if(r.status_code == 204): + self.sessionId = None + if 'sessionId' in self.session.headers: + del self.session.headers['sessionId'] + del self.session.headers['X-API-KEY'] + #print('Successfully disconnected from %s.' % self.host) + else: + raise Exception('Failed disconnecting from %s: (%s, %s)' % (self.host, r.status_code, r.content)) + + ### generic post operation + def __export(self, path, **kwargs): + requestUrl = 'https://' + self.host + '/bps/api/v2/core/' + path + if self.printRequests: + import re + print("POST, %s, h=%s, d=%s" %(re.sub(".*/bps/api/v2/core/", "", requestUrl), json.dumps(headers), json.dumps(kwargs))) + r = self.session.post(url=requestUrl, headers={'content-type': 'application/json'}, data=json.dumps(kwargs), verify=False) + if(r.status_code == 400): + methodCall = '%s'%path.replace('/', '.').replace('.operations', '') + content_message = r.content.decode() + ' Execute: help(%s) for more information about the method.'%methodCall + raise Exception({'status_code': r.status_code, 'content': content_message}) + if(r.status_code == 200) or r.status_code == 204: + get_url = 'https://' + self.host + r.content.decode() + get_head = {'content-type': 'application/json'} + get_req = self.session.get(url = get_url, verify = False, headers = get_head) + with open(kwargs['filepath'], 'wb') as fd: + for chunk in get_req.iter_content(chunk_size=1024): + fd.write(chunk) + fd.close() + get_req.close() + return {'status_code': r.status_code, 'content': 'success'} + else: + raise Exception({'status_code': r.status_code, 'content': self.__json_load(r)}) + + ### Get from data model + def __get(self, path, responseDepth=None, **kwargs): + requestUrl = 'https://%s/bps/api/v2/core%s%s' % (self.host, path, '?responseDepth=%s' % responseDepth if responseDepth else '') + for key, value in kwargs.items(): + requestUrl = requestUrl + "&%s=%s" % (key, value) + headers = {'content-type': 'application/json'} + if self.printRequests: + import re + print("GET, %s, %s" %(re.sub(".*/bps/api/v2/core/", "", requestUrl), json.dumps(headers))) + r = self.session.get(url=requestUrl, headers=headers, verify=False) + if(r.status_code in [200, 204]): + return self.__json_load(r) + raise Exception({'status_code': r.status_code, 'content': self.__json_load(r)}) + + ### generic import operation + def __import(self, path, filename, **kwargs): + requestUrl = 'https://' + self.host + '/bps/api/v2/core/' + path + files = {'file': (kwargs['name'], open(filename, 'rb'), 'application/xml')} + data = {'fileInfo':str(kwargs)} + if self.printRequests: + import re + print("POST, %s, h=%s, d=%s" %(re.sub(".*/bps/api/v2/core/", "", requestUrl), json.dumps(headers), json.dumps(data))) + r = self.session.post(url=requestUrl, files=files, data=data, verify=False) + if(r.status_code == 400): + methodCall = '%s'%path.replace('/', '.').replace('.operations', '') + content_message = r.content.decode() + ' Execute: help(%s) for more information about the method.'%methodCall + raise Exception({'status_code': r.status_code, 'content': content_message}) + if(r.status_code in [200, 204]): + return self.__json_load(r) + raise Exception({'status_code': r.status_code, 'content': self.__json_load(r)}) + + def __json_load(self, r): + try: + return r.json() + except: + return r.content.decode() if r.content is not None else None + + @staticmethod + def __lver(v, count=2): + x = [0, 0] + p = lambda s: int(s) if s.isdigit() else -1 + try: + z = [a for a in map(p, (v.split(".")[:count]))]; x[:len(z)] = z + x[:len(z)] = z + except: + pass + return x + + ### OPTIONS request + def __options(self, path): + r = self.session.options('https://' + self.host + '/bps/api/v2/core/'+ path) + if(r.status_code == 400): + methodCall = '%s'%path.replace('/', '.').replace('.operations', '') + content_message = r.content.decode() + ' Execute: help(%s) for more information about the method.'%methodCall + raise Exception({'status_code': r.status_code, 'content': content_message}) + if(r.status_code in [200]): + return self.__json_load(r) + raise Exception({'status_code': r.status_code, 'content': self.__json_load(r)}) + + ### Get from data model + def __patch(self, path, value): + headers = {'content-type': 'application/json'} + if self.printRequests: + print("patch, %s, h=%s, d=%s" %(path, json.dumps(headers), json.dumps(value))) + r = self.session.patch(url='https://' + self.host + '/bps/api/v2/core/' + path, headers=headers, data=json.dumps(value), verify=False) + if(r.status_code != 204): + raise Exception({'status_code': r.status_code, 'content': self.__json_load(r)}) + + ### generic post operation + def __post(self, path, **kwargs): + requestUrl = 'https://' + self.host + '/bps/api/v2/core/' + path + headers = {'content-type': 'application/json'} + if self.printRequests: + print("POST, %s, h=%s, d=%s" %(path, json.dumps(headers), json.dumps(kwargs))) + r = self.session.post(url=requestUrl, headers=headers, data=json.dumps(kwargs), verify=False) + if(r.status_code == 400): + methodCall = '%s'%path.replace('/', '.').replace('.operations', '') + content_message = r.content.decode() + ' Execute: help(%s) for more information about the method.'%methodCall + raise Exception({'status_code': r.status_code, 'content': content_message}) + if(r.status_code in [200, 204, 202]): + return self.__json_load(r) + raise Exception({'status_code': r.status_code, 'content': self.__json_load(r)}) + + ### Get from data model + def __put(self, path, value): + headers = {'content-type': 'application/json'} + if self.printRequests: + print("put, %s, h=%s, d=%s" %(path, json.dumps(headers), json.dumps(value))) + r = self.session.put(url='https://' + self.host + '/bps/api/v2/core/' + path, headers=headers, data=json.dumps(value), verify=False) + if(r.status_code != 204): + raise Exception({'status_code': r.status_code, 'content': self.__json_load(r)}) + + ### Imports an ATI License file (.lic) on a hardware platform. This operation is NOT recommended to be used on BPS Virtual platforms. + @staticmethod + def _administration_atiLicensing_operations_importAtiLicense(self, filename, name): + """ + Imports an ATI License file (.lic) on a hardware platform. This operation is NOT recommended to be used on BPS Virtual platforms. + :param filename (string): import file path + :param name (string): the name of the license file + """ + return self._wrapper.__import('/administration/atiLicensing/operations/importAtiLicense', **{'filename': filename, 'name': name}) + + ### Exports everything including test models, network configurations and others from system.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _administration_operations_exportAllTests(self, filepath): + """ + Exports everything including test models, network configurations and others from system.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param filepath (string): The local path where to save the compressed file with all the models. The path must contain the file name and extension (.tar.gz): '/d/c/f/AllTests.tar.gz' + """ + return self._wrapper.__export('/administration/operations/exportAllTests', **{'filepath': filepath}) + + ### Imports all test models, actually imports everything from 'exportAllTests'. This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _administration_operations_importAllTests(self, name, filename, force): + """ + Imports all test models, actually imports everything from 'exportAllTests'. This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param name (string): String name to append to each test name. + :param filename (string): The file containing the object. + :param force (bool): Force to import the file and the object having the same name will be replaced. + """ + return self._wrapper.__import('/administration/operations/importAllTests', **{'name': name, 'filename': filename, 'force': force}) + + ### null + @staticmethod + def _administration_operations_logs(self, error=False, messages=False, web=False, all=False, audit=False, info=False, system=False, lines=20, drop=0): + """ + :param error (bool): + :param messages (bool): + :param web (bool): + :param all (bool): + :param audit (bool): + :param info (bool): + :param system (bool): + :param lines (number): number lines to return + :param drop (number): number lines to drop + """ + return self._wrapper.__post('/administration/operations/logs', **{'error': error, 'messages': messages, 'web': web, 'all': all, 'audit': audit, 'info': info, 'system': system, 'lines': lines, 'drop': drop}) + + ### close active session + @staticmethod + def _administration_sessions_operations_close(self, session): + """ + close active session + :param session (string): + """ + return self._wrapper.__post('/administration/sessions/operations/close', **{'session': session}) + + ### list active sessions + @staticmethod + def _administration_sessions_operations_list(self): + """ + list active sessions + :return result (list): + """ + return self._wrapper.__post('/administration/sessions/operations/list', **{}) + + ### Sets a User Preference. + @staticmethod + def _administration_userSettings_operations_changeUserSetting(self, name, value): + """ + Sets a User Preference. + :param name (string): The setting name. + :param value (string): The new value for setting. + """ + return self._wrapper.__post('/administration/userSettings/operations/changeUserSetting', **{'name': name, 'value': value}) + + ### null + @staticmethod + def _administration_userSettings_operations_setAutoReserve(self, resourceType, units): + """ + :param resourceType (string): Valid values: >l47< or >l23< + :param units (number): + """ + return self._wrapper.__post('/administration/userSettings/operations/setAutoReserve', **{'resourceType': resourceType, 'units': units}) + + ### Adds a list of SuperFlow to the current working Application Profile. ([{'superflow':'adadad', 'weight':'20'},{..}]) + @staticmethod + def _appProfile_operations_add(self, add): + """ + Adds a list of SuperFlow to the current working Application Profile. ([{'superflow':'adadad', 'weight':'20'},{..}]) + :param add (list): + list of object with fields + superflow (string): The name of the super flow + weight (string): The weight of the super flow + """ + return self._wrapper.__post('/appProfile/operations/add', **{'add': add}) + + ### Deletes a given Application Profile from the database. + @staticmethod + def _appProfile_operations_delete(self, name): + """ + Deletes a given Application Profile from the database. + :param name (string): The name of the Application Profiles. + """ + return self._wrapper.__post('/appProfile/operations/delete', **{'name': name}) + + ### Exports an Application profile and all of its dependencies.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _appProfile_operations_exportAppProfile(self, name, attachments, filepath): + """ + Exports an Application profile and all of its dependencies.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param name (string): The name of the test model to be exported. + :param attachments (bool): True if object attachments are needed. + :param filepath (string): The local path where to save the exported object. + """ + return self._wrapper.__export('/appProfile/operations/exportAppProfile', **{'name': name, 'attachments': attachments, 'filepath': filepath}) + + ### Imports an application profile, given as a file. This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _appProfile_operations_importAppProfile(self, name, filename, force): + """ + Imports an application profile, given as a file. This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param name (string): The name of the object being imported + :param filename (string): The file containing the object + :param force (bool): Force to import the file and the object having the same name will be replaced. + """ + return self._wrapper.__import('/appProfile/operations/importAppProfile', **{'name': name, 'filename': filename, 'force': force}) + + ### Load an existing Application Profile and sets it as the current one. + @staticmethod + def _appProfile_operations_load(self, template): + """ + Load an existing Application Profile and sets it as the current one. + :param template (string): The name of the template application profile + """ + return self._wrapper.__post('/appProfile/operations/load', **{'template': template}) + + ### Creates a new Application Profile. + @staticmethod + def _appProfile_operations_new(self, template=None): + """ + Creates a new Application Profile. + :param template (string): This argument must remain unset. Do not set any value for it. + """ + return self._wrapper.__post('/appProfile/operations/new', **{'template': template}) + + ### Recompute percentages in the current working Application Profile + @staticmethod + def _appProfile_operations_recompute(self): + """ + Recompute percentages in the current working Application Profile + """ + return self._wrapper.__post('/appProfile/operations/recompute', **{}) + + ### Removes a SuperFlow from the current working Application Profile. + @staticmethod + def _appProfile_operations_remove(self, superflow): + """ + Removes a SuperFlow from the current working Application Profile. + :param superflow (string): The name of the super flow. + """ + return self._wrapper.__post('/appProfile/operations/remove', **{'superflow': superflow}) + + ### Saves the current working application profile using the current name. No need to use any parameter. + @staticmethod + def _appProfile_operations_save(self, name=None, force=True): + """ + Saves the current working application profile using the current name. No need to use any parameter. + :param name (string): The name of the template. No need to configure. The current name is used. + :param force (bool): Force to save the working Application Profile with the same name. No need to configure. The default is used. + """ + return self._wrapper.__post('/appProfile/operations/save', **{'name': name, 'force': force}) + + ### Saves the current working Application Profiles and gives it a new name. + @staticmethod + def _appProfile_operations_saveAs(self, name, force): + """ + Saves the current working Application Profiles and gives it a new name. + :param name (string): The new name given for the current working Application Profile + :param force (bool): Force to save the working Application Profile using the given name. + """ + return self._wrapper.__post('/appProfile/operations/saveAs', **{'name': name, 'force': force}) + + ### null + @staticmethod + def _appProfile_operations_search(self, searchString, limit, sort, sortorder): + """ + :param searchString (string): Search application profile name matching the string given. + :param limit (string): The limit of rows to return + :param sort (string): Parameter to sort by. + :param sortorder (string): The sort order (ascending/descending) + :return appprofile (list): + list of object with fields + name (string): + label (string): + createdBy (string): + createdOn (string): + revision (number): + description (string): + """ + return self._wrapper.__post('/appProfile/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + + ### Imports a capture file to the systemThis operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _capture_operations_importCapture(self, name, filename, force): + """ + Imports a capture file to the systemThis operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param name (string): The name of the capture being imported + :param filename (string): The file containing the capture object + :param force (bool): Force to import the file and the object having the same name will be replaced. + """ + return self._wrapper.__import('/capture/operations/importCapture', **{'name': name, 'filename': filename, 'force': force}) + + ### null + @staticmethod + def _capture_operations_search(self, searchString, limit, sort, sortorder): + """ + :param searchString (string): Search capture name matching the string given. + :param limit (string): The limit of rows to return + :param sort (string): Parameter to sort by. + :param sortorder (string): The sort order (ascending/descending) + :return item (list): + list of object with fields + name (string): + totalPackets (string): + duration (string): + ipv4Packets (string): + ipv6Packets (string): + avgPacketSize (string): + udpPackets (string): + contentType (string): + pcapFilesize (string): + tcpPackets (string): + avgFlowLength (string): + """ + return self._wrapper.__post('/capture/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + + ### Retrieves all the security options + @staticmethod + def _evasionProfile_StrikeOptions_operations_getStrikeOptions(self): + """ + Retrieves all the security options + :return result (list): + """ + return self._wrapper.__post('/evasionProfile/StrikeOptions/operations/getStrikeOptions', **{}) + + ### Deletes a given Evasion Profile from the database. + @staticmethod + def _evasionProfile_operations_delete(self, name): + """ + Deletes a given Evasion Profile from the database. + :param name (string): The name of the profile to delete. + """ + return self._wrapper.__post('/evasionProfile/operations/delete', **{'name': name}) + + ### Load an existing Evasion Profile and sets it as the current one. + @staticmethod + def _evasionProfile_operations_load(self, template): + """ + Load an existing Evasion Profile and sets it as the current one. + :param template (string): The name of an Evasion profile template. + """ + return self._wrapper.__post('/evasionProfile/operations/load', **{'template': template}) + + ### Creates a new Evasion Profile. + @staticmethod + def _evasionProfile_operations_new(self, template=None): + """ + Creates a new Evasion Profile. + :param template (string): The name should be empty to create a new object. + """ + return self._wrapper.__post('/evasionProfile/operations/new', **{'template': template}) + + ### Saves the working Test Model using the current name. No need to configure. The current name is used. + @staticmethod + def _evasionProfile_operations_save(self, name=None, force=True): + """ + Saves the working Test Model using the current name. No need to configure. The current name is used. + :param name (string): This argument should be empty for saving the profile using it's actual name. + :param force (bool): Force to save the working profile with the same name. + """ + return self._wrapper.__post('/evasionProfile/operations/save', **{'name': name, 'force': force}) + + ### Saves the current working Test Model under specified name. + @staticmethod + def _evasionProfile_operations_saveAs(self, name, force): + """ + Saves the current working Test Model under specified name. + :param name (string): The new name given for the current working Evasion Profile + :param force (bool): Force to save the working Evasion Profile using a new name. + """ + return self._wrapper.__post('/evasionProfile/operations/saveAs', **{'name': name, 'force': force}) + + ### null + @staticmethod + def _evasionProfile_operations_search(self, searchString, limit, sort, sortorder): + """ + :param searchString (string): Search evasion profile name matching the string given. + :param limit (string): The limit of rows to return + :param sort (string): Parameter to sort by. (name/createdBy ...) + :param sortorder (string): The sort order (ascending/descending) + :return attackprofile (list): + list of object with fields + name (string): + label (string): + createdBy (string): + revision (number): + description (string): + """ + return self._wrapper.__post('/evasionProfile/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + + ### Create a new custom Load Profile. + @staticmethod + def _loadProfile_operations_createNewCustom(self, loadProfile): + """ + Create a new custom Load Profile. + :param loadProfile (string): The Name of The load profile object to create. + """ + return self._wrapper.__post('/loadProfile/operations/createNewCustom', **{'loadProfile': loadProfile}) + + ### Deletes a specified load profile from the database. + @staticmethod + def _loadProfile_operations_delete(self, name): + """ + Deletes a specified load profile from the database. + :param name (string): The name of the loadProfile object to delete. + """ + return self._wrapper.__post('/loadProfile/operations/delete', **{'name': name}) + + ### null + @staticmethod + def _loadProfile_operations_load(self, template): + """ + :param template (string): + """ + return self._wrapper.__post('/loadProfile/operations/load', **{'template': template}) + + ### null + @staticmethod + def _loadProfile_operations_save(self): + return self._wrapper.__post('/loadProfile/operations/save', **{}) + + ### Save the active editing LoadProfile under specified name + @staticmethod + def _loadProfile_operations_saveAs(self, name): + """ + Save the active editing LoadProfile under specified name + :param name (string): + """ + return self._wrapper.__post('/loadProfile/operations/saveAs', **{'name': name}) + + ### null + @staticmethod + def _loadProfile_operations_search(self, searchString, limit, sort, sortorder): + """ + :param searchString (string): Search application profile name matching the string given. + :param limit (string): The limit of rows to return + :param sort (string): Parameter to sort by. + :param sortorder (string): The sort order (ascending/descending) + :return loadprofile (list): + list of object with fields + name (string): + label (string): + createdBy (string): + createdOn (string): + revision (number): + description (string): + """ + return self._wrapper.__post('/loadProfile/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + + ### Adds the given network to the list of most recently opened network configurations. + @staticmethod + def _network_operations_addOpenRecent(self, testName): + """ + Adds the given network to the list of most recently opened network configurations. + :param testName (object): The test model config + object of object with fields + objectType (string): For network config use: neighborhood + name (string): + """ + return self._wrapper.__post('/network/operations/addOpenRecent', **{'testName': testName}) + + ### Deletes a given Network Neighborhood Config from the database. + @staticmethod + def _network_operations_delete(self, name): + """ + Deletes a given Network Neighborhood Config from the database. + :param name (string): The name of the Network Neighborhood Config. + """ + return self._wrapper.__post('/network/operations/delete', **{'name': name}) + + ### Exports a network neighborhood model in CSV format.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _network_operations_exportCSV(self, name, filepath): + """ + Exports a network neighborhood model in CSV format.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param name (string): The name of the network model to be exported. + :param filepath (string): The local path where to save the exported object. + """ + return self._wrapper.__export('/network/operations/exportCSV', **{'name': name, 'filepath': filepath}) + + ### Export a network neighborhood model in BPT format.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _network_operations_exportNetwork(self, name, attachments, filepath): + """ + Export a network neighborhood model in BPT format.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param name (string): The name of the network to be exported. + :param attachments (bool): True if object attachments are needed. + :param filepath (string): The local path where to save the exported object. + """ + return self._wrapper.__export('/network/operations/exportNetwork', **{'name': name, 'attachments': attachments, 'filepath': filepath}) + + ### Get the most recently opened network configurations + @staticmethod + def _network_operations_getRecent(self): + """ + Get the most recently opened network configurations + :return recentlyOpened (list): + list of object with fields + objectType (string): + name (string): + """ + return self._wrapper.__post('/network/operations/getRecent', **{}) + + ### Imports a network neighborhood model, given as a file.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _network_operations_importNetwork(self, name, filename, force): + """ + Imports a network neighborhood model, given as a file.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param name (string): The name of the object being imported + :param filename (string): The file containing the object + :param force (bool): Force to import the file and replace the object having the same name. + """ + return self._wrapper.__import('/network/operations/importNetwork', **{'name': name, 'filename': filename, 'force': force}) + + ### null + @staticmethod + def _network_operations_list(self, userid, clazz, sortorder, sort, limit, offset): + """ + :param userid (string): + :param clazz (string): + :param sortorder (string): + :param sort (string): + :param limit (number): + :param offset (number): + :return returnArg (list): + list of object with fields + name (string): + type (string): + author (string): + createdOn (string): + """ + return self._wrapper.__post('/network/operations/list', **{'userid': userid, 'clazz': clazz, 'sortorder': sortorder, 'sort': sort, 'limit': limit, 'offset': offset}) + + ### Loads an existing network config by name. + @staticmethod + def _network_operations_load(self, template): + """ + Loads an existing network config by name. + :param template (string): The name of the network neighborhood template + """ + return self._wrapper.__post('/network/operations/load', **{'template': template}) + + ### null + @staticmethod + def _network_operations_networkInfo(self, name): + """ + :param name (string): + :return results (object): + """ + return self._wrapper.__post('/network/operations/networkInfo', **{'name': name}) + + ### Creates a new Network Neighborhood configuration with no name. The template value must remain empty. + @staticmethod + def _network_operations_new(self, template=None): + """ + Creates a new Network Neighborhood configuration with no name. The template value must remain empty. + :param template (string): The name of the template. In this case will be empty. No need to configure. + """ + return self._wrapper.__post('/network/operations/new', **{'template': template}) + + ### Save the current working network config. + @staticmethod + def _network_operations_save(self, name=None, regenerateOldStyle=True, force=True): + """ + Save the current working network config. + :param name (string): The new name given for the current working network config. No need to configure. The current name is used. + :param regenerateOldStyle (bool): No need to configure. The default is used. + :param force (bool): No need to configure. The default is used. + """ + return self._wrapper.__post('/network/operations/save', **{'name': name, 'regenerateOldStyle': regenerateOldStyle, 'force': force}) + + ### Saves the working network config and gives it a new name. + @staticmethod + def _network_operations_saveAs(self, name, regenerateOldStyle=True, force=False): + """ + Saves the working network config and gives it a new name. + :param name (string): The new name given for the current working network config + :param regenerateOldStyle (bool): Force to apply the changes made on the loaded network configuration. Force to generate a network from the old one. + :param force (bool): Force to save the network config. It replaces a pre-existing config having the same name. + """ + return self._wrapper.__post('/network/operations/saveAs', **{'name': name, 'regenerateOldStyle': regenerateOldStyle, 'force': force}) + + ### Search Networks. + @staticmethod + def _network_operations_search(self, searchString, userid, clazz, sortorder, sort, limit, offset): + """ + Search Networks. + :param searchString (string): Search networks matching the string given. + :param userid (string): The owner to search for + :param clazz (string): The 'class' of the object (usually 'canned' or 'custom') + :param sortorder (string): The order in which to sort: ascending/descending + :param sort (string): Parameter to sort by: 'name'/'class'/'createdBy'/'interfaces'/'timestamp' + :param limit (number): The limit of network elements to return + :param offset (number): The offset to begin from. + :return network (list): + list of object with fields + name (string): + label (string): + createdBy (string): + revision (number): + description (string): + type (enum): + """ + return self._wrapper.__post('/network/operations/search', **{'searchString': searchString, 'userid': userid, 'clazz': clazz, 'sortorder': sortorder, 'sort': sort, 'limit': limit, 'offset': offset}) + + ### Connects to a remote chassis in order to use some of its resources.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _remote_operations_connectChassis(self, address, remote): + """ + Connects to a remote chassis in order to use some of its resources.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param address (string): Local chassis address. + :param remote (string): remote chassis address. + """ + return self._wrapper.__post('/remote/operations/connectChassis', **{'address': address, 'remote': remote}) + + ### Disconnects from a remote chassis in order to release remote resources.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _remote_operations_disconnectChassis(self, address, port): + """ + Disconnects from a remote chassis in order to release remote resources.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param address (string): Remote chassis address. + :param port (number): Remote connection port. + """ + return self._wrapper.__post('/remote/operations/disconnectChassis', **{'address': address, 'port': port}) + + ### Deletes a Test Report from the database. + @staticmethod + def _reports_operations_delete(self, runid): + """ + Deletes a Test Report from the database. + :param runid (number): The test run id that generated the report you want to delete. + """ + return self._wrapper.__post('/reports/operations/delete', **{'runid': runid}) + + ### Exports the result report of a test, identified by its run id and all of its dependenciesThis operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _reports_operations_exportReport(self, filepath, runid, reportType, sectionIds='', dataType='ALL'): + """ + Exports the result report of a test, identified by its run id and all of its dependenciesThis operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param filepath (string): The local path where to export the report, including the report name and proper file extension. + :param runid (number): Test RUN ID + :param reportType (string): Report file format to be exported in.Supported types: gwt, csv, pdf, xls, rtf, html, zip, score_img, user_img, xml, stats. For exporting 'extended stats' use 'stats'and use '.zip' as file extension in 'filepath'. + :param sectionIds (string): Chapter Ids. Can be extracted a chapter or many, a sub-chapter or many or the entire report: (sectionIds='6' / sectionIds='5,6,7' / sectionIds='7.4,8.5.2,8.6.3.1' / sectionIds=''(to export the entire report)) + :param dataType (string): Report content data type to export. Default value is 'all data'. For tabular only use 'TABLE' and for graphs only use 'CHARTS'. + """ + return self._wrapper.__export('/reports/operations/exportReport', **{'filepath': filepath, 'runid': runid, 'reportType': reportType, 'sectionIds': sectionIds, 'dataType': dataType}) + + ### Returns the report Table of Contents using the test run id. + @staticmethod + def _reports_operations_getReportContents(self, runid, getTableOfContents=True): + """ + Returns the report Table of Contents using the test run id. + :param runid (number): The test run id. + :param getTableOfContents (bool): Boolean value having the default value set on 'True'. To obtain the Table Contents this value should remain on 'True'. + :return results (list): + list of object with fields + Section Name (string): + Section ID (string): + """ + return self._wrapper.__post('/reports/operations/getReportContents', **{'runid': runid, 'getTableOfContents': getTableOfContents}) + + ### Returns the section of a report + @staticmethod + def _reports_operations_getReportTable(self, runid, sectionId): + """ + Returns the section of a report + :param runid (number): The test run id. + :param sectionId (string): The section id of the table desired to extract. + :return results (object): + """ + return self._wrapper.__post('/reports/operations/getReportTable', **{'runid': runid, 'sectionId': sectionId}) + + ### null + @staticmethod + def _reports_operations_search(self, searchString, limit, sort, sortorder): + """ + :param searchString (string): Search test name matching the string given. + :param limit (string): The limit of rows to return + :param sort (string): Parameter to sort by: 'name'/'endTime'/'duration'/'result'/'startTime'/'iteration'/'network'/'dut'/'user'/'size' + :param sortorder (string): The sort order: ascending/descending + """ + return self._wrapper.__post('/reports/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + + ### Returns main groups of statistics for a single BPS Test Component. These groups can be used then in requesting statistics values from the history of a test run. + @staticmethod + def _results_operations_getGroups(self, name, dynamicEnums=True, includeOutputs=True): + """ + Returns main groups of statistics for a single BPS Test Component. These groups can be used then in requesting statistics values from the history of a test run. + :param name (string): BPS Component name. This argument is actually the component type which can be get from 'statistics' table + :param dynamicEnums (bool): + :param includeOutputs (bool): + :return results (object): + object of object with fields + name (string): + label (string): + groups (list): + """ + return self._wrapper.__post('/results/operations/getGroups', **{'name': name, 'dynamicEnums': dynamicEnums, 'includeOutputs': includeOutputs}) + + ### null + @staticmethod + def _results_operations_getHistoricalResultSize(self, runid, componentid, group): + """ + :param runid (number): The test run id + :param componentid (string): The component identifier + :param group (string): The data group or one of the BPS component main groups. The group name can be get by executing the operation 'getGroups' from results node + :return result (string): + """ + return self._wrapper.__post('/results/operations/getHistoricalResultSize', **{'runid': runid, 'componentid': componentid, 'group': group}) + + ### Returns stats series for a given component group stat output for a given timestamp + @staticmethod + def _results_operations_getHistoricalSeries(self, runid, componentid, dataindex, group): + """ + Returns stats series for a given component group stat output for a given timestamp + :param runid (number): The test identifier + :param componentid (string): The component identifier. Each component has an id and can be get loading the testand checking it's components info + :param dataindex (number): The table index, equivalent with timestamp. + :param group (string): The data group or one of the BPS component main groups. The group name can be get by executing the operation 'getGroups' from results node. + :return param (list): + list of object with fields + name (string): + content (string): + datasetvals (string): + """ + return self._wrapper.__post('/results/operations/getHistoricalSeries', **{'runid': runid, 'componentid': componentid, 'dataindex': dataindex, 'group': group}) + + ### Adds a list of strikes to the current working Strike List.([{id: 'b/b/v/f'}, {id: 'aa/f/h'}]) + @staticmethod + def _strikeList_operations_add(self, strike, validate=True, toList=None): + """ + Adds a list of strikes to the current working Strike List.([{id: 'b/b/v/f'}, {id: 'aa/f/h'}]) + :param strike (list): The list of strikes to add. + list of object with fields + id (string): Strike path. + :param validate (bool): Validate the strikes in the given list. + :param toList (string): All provided strikes will be added to this list. If not existing it will be created + """ + return self._wrapper.__post('/strikeList/operations/add', **{'strike': strike, 'validate': validate, 'toList': toList}) + + ### Deletes a given Strike List from the database. + @staticmethod + def _strikeList_operations_delete(self, name): + """ + Deletes a given Strike List from the database. + :param name (string): The name of the Strike List to be deleted. + """ + return self._wrapper.__post('/strikeList/operations/delete', **{'name': name}) + + ### Exports the Strike List identified by its name and all of its dependenciesThis operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _strikeList_operations_exportStrikeList(self, name, filepath): + """ + Exports the Strike List identified by its name and all of its dependenciesThis operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param name (string): The name of the strike list to be exported. + :param filepath (string): The local path where to save the exported object. The file should have .bap extension + """ + return self._wrapper.__export('/strikeList/operations/exportStrikeList', **{'name': name, 'filepath': filepath}) + + ### Imports a list of strikes residing in a file. + @staticmethod + def _strikeList_operations_importStrikeList(self, name, filename, force): + """ + Imports a list of strikes residing in a file. + :param name (string): The name of the object being imported + :param filename (string): The file containing the object to be imported. + :param force (bool): Force to import the file and the object having the same name will be replaced. + """ + return self._wrapper.__import('/strikeList/operations/importStrikeList', **{'name': name, 'filename': filename, 'force': force}) + + ### Load an existing Strike List and sets it as the current one. + @staticmethod + def _strikeList_operations_load(self, template): + """ + Load an existing Strike List and sets it as the current one. + :param template (string): The name of the Strike List template + """ + return self._wrapper.__post('/strikeList/operations/load', **{'template': template}) + + ### Creates a new Strike List. + @staticmethod + def _strikeList_operations_new(self, template=None): + """ + Creates a new Strike List. + :param template (string): The name of the template. In this case will be empty. + """ + return self._wrapper.__post('/strikeList/operations/new', **{'template': template}) + + ### Removes a strike from the current working Strike List.([{id: 'bb/c/d'}, {id: 'aa/f/g'}]) + @staticmethod + def _strikeList_operations_remove(self, strike): + """ + Removes a strike from the current working Strike List.([{id: 'bb/c/d'}, {id: 'aa/f/g'}]) + :param strike (list): The list of strike ids to remove. The strike id is in fact the it's path. + list of object with fields + id (string): + """ + return self._wrapper.__post('/strikeList/operations/remove', **{'strike': strike}) + + ### Saves the current working Strike List using the current name + @staticmethod + def _strikeList_operations_save(self, name=None, force=True): + """ + Saves the current working Strike List using the current name + :param name (string): The name of the template. Default is empty. + :param force (bool): Force to save the working Strike List with the same name. + """ + return self._wrapper.__post('/strikeList/operations/save', **{'name': name, 'force': force}) + + ### Saves the current working Strike List and gives it a new name. + @staticmethod + def _strikeList_operations_saveAs(self, name, force): + """ + Saves the current working Strike List and gives it a new name. + :param name (string): The new name given for the current working Strike List + :param force (bool): Force to save the working Strike List using the given name. + """ + return self._wrapper.__post('/strikeList/operations/saveAs', **{'name': name, 'force': force}) + + ### null + @staticmethod + def _strikeList_operations_search(self, searchString='', limit=10, sort='name', sortorder='ascending'): + """ + :param searchString (string): Search strike list name matching the string given. + :param limit (number): The limit of rows to return + :param sort (string): Parameter to sort by. Default is by name. + :param sortorder (string): The sort order (ascending/descending). Default is ascending. + """ + return self._wrapper.__post('/strikeList/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + + ### Searches a strike inside all BPS strike database.To list all the available strikes, leave the arguments empty. + @staticmethod + def _strikes_operations_search(self, searchString='', limit=10, sort='name', sortorder='ascending', offset=0): + """ + Searches a strike inside all BPS strike database.To list all the available strikes, leave the arguments empty. + :param searchString (string): The string used as a criteria to search a strike by.Example: 'strike_name', 'year:2019', 'path:strikes/xml..' + :param limit (number): The limit of rows to return. Use empty string or empty box to get all the available strikes. + :param sort (string): Parameter to sort by. + :param sortorder (string): The sort order (ascending/descending) + :param offset (number): The offset to begin from. Default is 0. + :return strike (list): + list of object with fields + id (string): + protocol (string): + category (string): + direction (string): + keyword (string): + name (string): + path (string): + variants (number): + severity (string): + reference (string): + fileSize (string): + fileExtension (string): + year (string): + """ + return self._wrapper.__post('/strikes/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder, 'offset': offset}) + + ### null + @staticmethod + def _superflow_actions_operations_getActionChoices(self, id): + """ + :param id (number): the flow id + """ + return self._wrapper.__post('/superflow/actions/operations/getActionChoices', **{'id': id}) + + ### Get information about an action in the current working Superflow, retrieving also the choices for each action setting. + @staticmethod + def _superflow_actions_operations_getActionInfo(self, id): + """ + Get information about an action in the current working Superflow, retrieving also the choices for each action setting. + :param id (number): The action id + :return result (list): + list of object with fields + label (string): + name (string): + description (string): + choice (object): + """ + return self._wrapper.__post('/superflow/actions/operations/getActionInfo', **{'id': id}) + + ### Gives abbreviated information about all Canned Flow Names. + @staticmethod + def _superflow_flows_operations_getCannedFlows(self): + """ + Gives abbreviated information about all Canned Flow Names. + :return flow (list): + list of object with fields + name (string): + label (string): + """ + return self._wrapper.__post('/superflow/flows/operations/getCannedFlows', **{}) + + ### null + @staticmethod + def _superflow_flows_operations_getFlowChoices(self, id, name): + """ + :param id (number): The flow id. + :param name (string): The flow type/name. + :return result (list): + """ + return self._wrapper.__post('/superflow/flows/operations/getFlowChoices', **{'id': id, 'name': name}) + + ### Adds an action to the current working SuperFlow + @staticmethod + def _superflow_operations_addAction(self, flowid, type, actionid, source): + """ + Adds an action to the current working SuperFlow + :param flowid (number): The flow id. + :param type (string): The type of the action definition. + :param actionid (number): The new action id. + :param source (string): The action source. + """ + return self._wrapper.__post('/superflow/operations/addAction', **{'flowid': flowid, 'type': type, 'actionid': actionid, 'source': source}) + + ### Adds a flow to the current working SuperFlow + @staticmethod + def _superflow_operations_addFlow(self, flowParams): + """ + Adds a flow to the current working SuperFlow + :param flowParams (object): The flow object to add. + object of object with fields + name (string): The name of the flow + from (string): Traffic initiator. + to (string): Traffic responder. + """ + return self._wrapper.__post('/superflow/operations/addFlow', **{'flowParams': flowParams}) + + ### Add a host to the current working Superflow + @staticmethod + def _superflow_operations_addHost(self, hostParams, force): + """ + Add a host to the current working Superflow + :param hostParams (object): + object of object with fields + name (string): The host name. + hostname (string): The NickName of the host. + iface (string): The traffic direction.Values can be: 'origin'(means client) and 'target'(means server) + :param force (bool): The flow id. + """ + return self._wrapper.__post('/superflow/operations/addHost', **{'hostParams': hostParams, 'force': force}) + + ### Deletes a given Super Flow from the database. + @staticmethod + def _superflow_operations_delete(self, name): + """ + Deletes a given Super Flow from the database. + :param name (string): The name of the Super Flow. + """ + return self._wrapper.__post('/superflow/operations/delete', **{'name': name}) + + ### Imports a resource model to be used in flow traffic as .txt files, certificates, keys etc, given as a file. File will be uploaded to '/chroot/resources' by default if 'type' is not specifed otherwise the destination will be '/chroot/resources/'+ (clientcerts / clientkeys / cacerts ...). This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _superflow_operations_importResource(self, name, filename, force, type='resource'): + """ + Imports a resource model to be used in flow traffic as .txt files, certificates, keys etc, given as a file. File will be uploaded to '/chroot/resources' by default if 'type' is not specifed otherwise the destination will be '/chroot/resources/'+ (clientcerts / clientkeys / cacerts ...). This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param name (string): The name of the object being imported + :param filename (string): The file containing the object + :param force (bool): Force to import the file and the object having the same name will be replaced. + :param type (string): File type to import. Accepted types: clientcert, clientkey, resource, cacert, dhparams. Default value is 'resource'. + """ + return self._wrapper.__import('/superflow/operations/importResource', **{'name': name, 'filename': filename, 'force': force, 'type': type}) + + ### Load an existing Super Flow and sets it as the current one. + @staticmethod + def _superflow_operations_load(self, template): + """ + Load an existing Super Flow and sets it as the current one. + :param template (string): The name of the existing Super Flow template + """ + return self._wrapper.__post('/superflow/operations/load', **{'template': template}) + + ### Creates a new Super Flow. + @staticmethod + def _superflow_operations_new(self, template=None): + """ + Creates a new Super Flow. + :param template (string): The name of the template. In this case will be empty. + """ + return self._wrapper.__post('/superflow/operations/new', **{'template': template}) + + ### Removes an action from the current working SuperFlow. + @staticmethod + def _superflow_operations_removeAction(self, id): + """ + Removes an action from the current working SuperFlow. + :param id (number): The action ID. + """ + return self._wrapper.__post('/superflow/operations/removeAction', **{'id': id}) + + ### Removes a flow from the current working SuperFlow. + @staticmethod + def _superflow_operations_removeFlow(self, id): + """ + Removes a flow from the current working SuperFlow. + :param id (number): The flow ID. + """ + return self._wrapper.__post('/superflow/operations/removeFlow', **{'id': id}) + + ### Saves the working Super Flow using the current name + @staticmethod + def _superflow_operations_save(self, name=None, force=True): + """ + Saves the working Super Flow using the current name + :param name (string): The name of the template that should be empty. + :param force (bool): Force to save the working Super Flow with the same name. + """ + return self._wrapper.__post('/superflow/operations/save', **{'name': name, 'force': force}) + + ### Saves the current working Application Profiles and gives it a new name. + @staticmethod + def _superflow_operations_saveAs(self, name, force): + """ + Saves the current working Application Profiles and gives it a new name. + :param name (string): The new name given for the current working Super Flow + :param force (bool): Force to save the working Super Flow using the given name. + """ + return self._wrapper.__post('/superflow/operations/saveAs', **{'name': name, 'force': force}) + + ### null + @staticmethod + def _superflow_operations_search(self, searchString, limit, sort, sortorder): + """ + :param searchString (string): Search Super Flow name matching the string given. + :param limit (string): The limit of rows to return + :param sort (string): Parameter to sort by. + :param sortorder (string): The sort order (ascending/descending) + """ + return self._wrapper.__post('/superflow/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + + ### Lists all the component presets names. + @staticmethod + def _testmodel_component_operations_getComponentPreset(self, name='None'): + """ + Lists all the component presets names. + :param name (string): The Component type. + All the component types are listed under the node testComponentTypesDescription. + If this argument is not set, all the presets will be listed. + :return component (object): + """ + return self._wrapper.__post('/testmodel/component/operations/getComponentPreset', **{'name': name}) + + ### Lists all the component presets names. + @staticmethod + def _testmodel_component_operations_getComponentPresetNames(self, type='None'): + """ + Lists all the component presets names. + :param type (string): The Component type. + All the component types are listed under the node testComponentTypesDescription. + If this argument is not set, all the presets will be listed. + :return component (list): + list of object with fields + id (string): + label (string): + type (string): + description (string): + """ + return self._wrapper.__post('/testmodel/component/operations/getComponentPresetNames', **{'type': type}) + + ### Adds a new test component to the current working test model + @staticmethod + def _testmodel_operations_add(self, name, component, type, active): + """ + Adds a new test component to the current working test model + :param name (string): Component Name + :param component (string): Component template, preset. + :param type (string): Component Type: appsim, sesionsender .. + :param active (bool): Set component enable (by default is active) or disable + """ + return self._wrapper.__post('/testmodel/operations/add', **{'name': name, 'component': component, 'type': type, 'active': active}) + + ### Adds the given test to the list of most recently opened tests. + @staticmethod + def _testmodel_operations_addOpenRecent(self, testName): + """ + Adds the given test to the list of most recently opened tests. + :param testName (object): The test model config + object of object with fields + objectType (string): For test use: executable + name (string): + type (string): TEST / PLAN / MULTIBOX + """ + return self._wrapper.__post('/testmodel/operations/addOpenRecent', **{'testName': testName}) + + ### Clones a component in the current working Test Model + @staticmethod + def _testmodel_operations_clone(self, template, type, active): + """ + Clones a component in the current working Test Model + :param template (string): The ID of the test component to clone. + :param type (string): Component Type: appsim, sesionsender .. + :param active (bool): Set component enable (by default is active) or disable + """ + return self._wrapper.__post('/testmodel/operations/clone', **{'template': template, 'type': type, 'active': active}) + + ### Deletes a given Test Model from the database. + @staticmethod + def _testmodel_operations_delete(self, name): + """ + Deletes a given Test Model from the database. + :param name (string): The name of the Test Model. + """ + return self._wrapper.__post('/testmodel/operations/delete', **{'name': name}) + + ### Exports a wanted test model by giving its name or its test run id.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _testmodel_operations_exportModel(self, name, attachments, filepath, runid=None): + """ + Exports a wanted test model by giving its name or its test run id.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param name (string): The name of the test model to be exported. + :param attachments (bool): True if object attachments are needed. + :param filepath (string): The local path where to save the exported object. + :param runid (number): Test RUN ID + """ + return self._wrapper.__export('/testmodel/operations/exportModel', **{'name': name, 'attachments': attachments, 'filepath': filepath, 'runid': runid}) + + ### null + @staticmethod + def _testmodel_operations_flowExceptions(self, runid, limit, offset): + """ + :param runid (number): Test RUN ID + :param limit (number): The limit of rows to return + :param offset (number): The start row of the returned list + :return flowException (object): + """ + return self._wrapper.__post('/testmodel/operations/flowExceptions', **{'runid': runid, 'limit': limit, 'offset': offset}) + + ### Get the most recently opened tests + @staticmethod + def _testmodel_operations_getRecent(self): + """ + Get the most recently opened tests + :return recentlyOpened (list): + list of object with fields + objectType (string): + name (string): + dut (string): + """ + return self._wrapper.__post('/testmodel/operations/getRecent', **{}) + + ### Imports a test model, given as a file. This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _testmodel_operations_importModel(self, name, filename, force): + """ + Imports a test model, given as a file. This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param name (string): The name of the object being imported + :param filename (string): The file containing the object + :param force (bool): Force to import the file and the object having the same name will be replaced. + """ + return self._wrapper.__import('/testmodel/operations/importModel', **{'name': name, 'filename': filename, 'force': force}) + + ### Load an existing test model template. + @staticmethod + def _testmodel_operations_load(self, template): + """ + Load an existing test model template. + :param template (string): The name of the template testmodel + """ + return self._wrapper.__post('/testmodel/operations/load', **{'template': template}) + + ### Creates a new Test Model + @staticmethod + def _testmodel_operations_new(self, template=None): + """ + Creates a new Test Model + :param template (string): The name of the template. In this case will be empty. + """ + return self._wrapper.__post('/testmodel/operations/new', **{'template': template}) + + ### Retrieves the real time statistics for the running test, by giving the run id. + @staticmethod + def _testmodel_operations_realTimeStats(self, runid, rtsgroup, numSeconds, numDataPoints=1): + """ + Retrieves the real time statistics for the running test, by giving the run id. + :param runid (number): Test RUN ID + :param rtsgroup (string): Real Time Stats group name. Values for this can be get from 'statistics' node, inside 'statNames' from each component at 'realtime Group' key/column. Examples: 'l7STats', 'all', 'bpslite', 'summary', 'clientStats' etc.Instead of a group name, it can be used a statistic name and the usage is: `fields:`Example: 'fields:txFrames' or 'fields:ethTxFrames, appIncomplete, rxFrameRate, etc'. + :param numSeconds (number): The number of seconds. If negative, means counting from the end. Example -1 means the last second from the moment of request. + :param numDataPoints (number): The number of data points, or set of values, on server side. The default is 1. In case of missing stats,because of requesting to many stats per second in real time,increase the value (grater than 1) + :return result (object): + object of object with fields + testStuck (bool): + time (number): + progress (number): + values (string): + """ + return self._wrapper.__post('/testmodel/operations/realTimeStats', **{'runid': runid, 'rtsgroup': rtsgroup, 'numSeconds': numSeconds, 'numDataPoints': numDataPoints}) + + ### Removes a component from the current working Test Model. + @staticmethod + def _testmodel_operations_remove(self, id): + """ + Removes a component from the current working Test Model. + :param id (string): The component id. + """ + return self._wrapper.__post('/testmodel/operations/remove', **{'id': id}) + + ### Runs a Test. + @staticmethod + def _testmodel_operations_run(self, modelname, group, allowMalware=False): + """ + Runs a Test. + :param modelname (string): Test Name to run + :param group (number): Group to run + :param allowMalware (bool): Enable this option to allow malware in test. + """ + return self._wrapper.__post('/testmodel/operations/run', **{'modelname': modelname, 'group': group, 'allowMalware': allowMalware}) + + ### Saves the working Test Model using the current name. No need to configure. The current name is used. + @staticmethod + def _testmodel_operations_save(self, name=None, force=True): + """ + Saves the working Test Model using the current name. No need to configure. The current name is used. + :param name (string): The name of the template that should be empty. + :param force (bool): Force to save the working Test Model with the same name. + """ + return self._wrapper.__post('/testmodel/operations/save', **{'name': name, 'force': force}) + + ### Saves the current working Test Model under specified name. + @staticmethod + def _testmodel_operations_saveAs(self, name, force): + """ + Saves the current working Test Model under specified name. + :param name (string): The new name given for the current working Test Model + :param force (bool): Force to save the working Test Model using a new name. + """ + return self._wrapper.__post('/testmodel/operations/saveAs', **{'name': name, 'force': force}) + + ### null + @staticmethod + def _testmodel_operations_search(self, searchString, limit, sort, sortorder): + """ + :param searchString (string): Search test name matching the string given. + :param limit (string): The limit of rows to return + :param sort (string): Parameter to sort by: 'createdOn'/'timestamp'/'bandwidth'/'result'/'lastrunby'/'createdBy'/'interfaces'/'testLabType' + :param sortorder (string): The sort order: ascending/descending + :return testmodel (list): + list of object with fields + name (string): + label (string): + createdBy (string): + network (string): + duration (number): + description (string): + """ + return self._wrapper.__post('/testmodel/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + + ### Stops the test run. + @staticmethod + def _testmodel_operations_stopRun(self, runid): + """ + Stops the test run. + :param runid (number): Test RUN ID + """ + return self._wrapper.__post('/testmodel/operations/stopRun', **{'runid': runid}) + + ### Returns main groups of statistics for a single BPS Test Component. These groups can be used then in requesting statistics values from the history of a test run. + @staticmethod + def _testmodel_operations_testComponentDefinition(self, name, dynamicEnums=True, includeOutputs=True): + """ + Returns main groups of statistics for a single BPS Test Component. These groups can be used then in requesting statistics values from the history of a test run. + :param name (string): BPS Component name. This argument is actually the component type which can be get from 'statistics' table + :param dynamicEnums (bool): + :param includeOutputs (bool): + :return results (object): + """ + return self._wrapper.__post('/testmodel/operations/testComponentDefinition', **{'name': name, 'dynamicEnums': dynamicEnums, 'includeOutputs': includeOutputs}) + + ### null + @staticmethod + def _testmodel_operations_validate(self, group): + """ + :param group (string): The reservation group + :return check (object): + """ + return self._wrapper.__post('/testmodel/operations/validate', **{'group': group}) + + ### Adds a note to given port. + @staticmethod + def _topology_operations_addPortNote(self, interface, note): + """ + Adds a note to given port. + :param interface (object): Slot and Port ID. + object of object with fields + slot (number): + port (string): + :param note (string): Note info. + """ + return self._wrapper.__post('/topology/operations/addPortNote', **{'interface': interface, 'note': note}) + + ### Adds a note to given resource. + @staticmethod + def _topology_operations_addResourceNote(self, resourceId, resourceType): + """ + Adds a note to given resource. + :param resourceId (string): Resource Id. + :param resourceType (string): Resource type. + """ + return self._wrapper.__post('/topology/operations/addResourceNote', **{'resourceId': resourceId, 'resourceType': resourceType}) + + ### Exports a port capture from a test run.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + @staticmethod + def _topology_operations_exportCapture(self, filepath, args): + """ + Exports a port capture from a test run.This operation can not be executed from the RESTApi Browser, it needs to be executed from a remote system through a REST call. + :param filepath (string): The local path where to save the exported object. + :param args (object): Export filters. The Possible values for: 'dir'(direction) are 'tx','rx','both';for 'sizetype' and 'starttype'(units for size and start) are 'megabytes' or 'frames' + object of object with fields + port (string): Port label + slot (number): Slot number + dir (string): Capturing direction (rx, tx, both) + size (number): The size of the capture to be exported. + start (number): Start at point. + sizetype (string): The size unit: megabytes or frames. + starttype (string): The start unit: megabytes or frames. + """ + return self._wrapper.__export('/topology/operations/exportCapture', **{'filepath': filepath, 'args': args}) + + ### Gets the card Fanout modes of a board. + @staticmethod + def _topology_operations_getFanoutModes(self, cardId): + """ + Gets the card Fanout modes of a board. + :param cardId (number): Slot ID. + :return modes (object): Fanout mode id per card type. + """ + return self._wrapper.__post('/topology/operations/getFanoutModes', **{'cardId': cardId}) + + ### Get available port fan-out modes. + @staticmethod + def _topology_operations_getPortAvailableModes(self, cardId, port): + """ + Get available port fan-out modes. + :param cardId (number): Slot id + :param port (number): Port id to be interrogated + :return modes (object): Available port switch modes. + """ + return self._wrapper.__post('/topology/operations/getPortAvailableModes', **{'cardId': cardId, 'port': port}) + + ### Reboots the slot with slotId. + @staticmethod + def _topology_operations_reboot(self, board): + """ + Reboots the slot with slotId. + :param board (number): + """ + return self._wrapper.__post('/topology/operations/reboot', **{'board': board}) + + ### Reboots the compute node with cnId. + @staticmethod + def _topology_operations_rebootComputeNode(self, cnId): + """ + Reboots the compute node with cnId. + :param cnId (string): Compute node id + """ + return self._wrapper.__post('/topology/operations/rebootComputeNode', **{'cnId': cnId}) + + ### null + @staticmethod + def _topology_operations_releaseAllCnResources(self, cnId): + """ + :param cnId (string): + """ + return self._wrapper.__post('/topology/operations/releaseAllCnResources', **{'cnId': cnId}) + + ### null + @staticmethod + def _topology_operations_releaseResource(self, group, resourceId, resourceType): + """ + :param group (number): + :param resourceId (number): + :param resourceType (string): + """ + return self._wrapper.__post('/topology/operations/releaseResource', **{'group': group, 'resourceId': resourceId, 'resourceType': resourceType}) + + ### null + @staticmethod + def _topology_operations_releaseResources(self, count, resourceType, slotId): + """ + :param count (number): + :param resourceType (string): + :param slotId (number): + """ + return self._wrapper.__post('/topology/operations/releaseResources', **{'count': count, 'resourceType': resourceType, 'slotId': slotId}) + + ### null + @staticmethod + def _topology_operations_reserve(self, reservation, force=False): + """ + :param reservation (list): Reserves one or more ports + list of object with fields + group (number): + slot (number): + port (string): + capture (bool): + :param force (bool): + """ + return self._wrapper.__post('/topology/operations/reserve', **{'reservation': reservation, 'force': force}) + + ### Reserves all l47 resources of given compute node id. + @staticmethod + def _topology_operations_reserveAllCnResources(self, group, cnId): + """ + Reserves all l47 resources of given compute node id. + :param group (number): + :param cnId (string): + """ + return self._wrapper.__post('/topology/operations/reserveAllCnResources', **{'group': group, 'cnId': cnId}) + + ### Reserves the specified resource of the given type. + @staticmethod + def _topology_operations_reserveResource(self, group, resourceId, resourceType): + """ + Reserves the specified resource of the given type. + :param group (number): + :param resourceId (number): + :param resourceType (string): + """ + return self._wrapper.__post('/topology/operations/reserveResource', **{'group': group, 'resourceId': resourceId, 'resourceType': resourceType}) + + ### Reserves the specified number of resources of given type. + @staticmethod + def _topology_operations_reserveResources(self, group, count, resourceType, slotId): + """ + Reserves the specified number of resources of given type. + :param group (number): + :param count (number): + :param resourceType (string): + :param slotId (number): + """ + return self._wrapper.__post('/topology/operations/reserveResources', **{'group': group, 'count': count, 'resourceType': resourceType, 'slotId': slotId}) + + ### Runs a Test. + @staticmethod + def _topology_operations_run(self, modelname, group, allowMalware=False): + """ + Runs a Test. + :param modelname (string): Test Name to run + :param group (number): Group to run + :param allowMalware (bool): Enable this option to allow malware in test. + """ + return self._wrapper.__post('/topology/operations/run', **{'modelname': modelname, 'group': group, 'allowMalware': allowMalware}) + + ### Sets the card fanout of a board + @staticmethod + def _topology_operations_setCardFanout(self, board, fanid): + """ + Sets the card fanout of a board + :param board (number): Slot ID. + :param fanid (number): The fan type represented by an integer id. + Get card specific fanout modes by calling 'topology.getFanoutModes()'. + For CloudStorm: 0(100G), 1(40G), 2(25G), 3(10G), 4(50G). + For PerfectStorm 40G: 0(40G), 1(10G). + For PerfectStorm 100G: 0(100G), 1(40G), 2(10G) + """ + return self._wrapper.__post('/topology/operations/setCardFanout', **{'board': board, 'fanid': fanid}) + + ### Sets the card mode of a board. + @staticmethod + def _topology_operations_setCardMode(self, board, mode): + """ + Sets the card mode of a board. + :param board (number): Slot ID. + :param mode (number): The new mode: 10(BPS-L23), 7(BPS L4-7), 3(IxLoad), + 11(BPS QT L2-3), 12(BPS QT L4-7) + """ + return self._wrapper.__post('/topology/operations/setCardMode', **{'board': board, 'mode': mode}) + + ### Sets the card speed of a board + @staticmethod + def _topology_operations_setCardSpeed(self, board, speed): + """ + Sets the card speed of a board + :param board (number): Slot ID. + :param speed (number): The new speed.(the int value for 1G is 1000, 10G(10000), 40G(40000)) + """ + return self._wrapper.__post('/topology/operations/setCardSpeed', **{'board': board, 'speed': speed}) + + ### Enables/Disables the performance acceleration for a BPS VE blade. + @staticmethod + def _topology_operations_setPerfAcc(self, board, perfacc): + """ + Enables/Disables the performance acceleration for a BPS VE blade. + :param board (number): Slot ID. + :param perfacc (bool): Boolean value: 'True' to enable the performance Acceleration and 'False' otherwise. + """ + return self._wrapper.__post('/topology/operations/setPerfAcc', **{'board': board, 'perfacc': perfacc}) + + ### Switch port fan-out mode. + @staticmethod + def _topology_operations_setPortFanoutMode(self, board, port, mode): + """ + Switch port fan-out mode. + :param board (number): + :param port (string): + :param mode (string): + """ + return self._wrapper.__post('/topology/operations/setPortFanoutMode', **{'board': board, 'port': port, 'mode': mode}) + + ### null + @staticmethod + def _topology_operations_setPortSettings(self, linkState, autoNegotiation, precoder, slotId, portId): + """ + :param linkState (string): + :param autoNegotiation (bool): + :param precoder (bool): + :param slotId (number): + :param portId (string): + """ + return self._wrapper.__post('/topology/operations/setPortSettings', **{'linkState': linkState, 'autoNegotiation': autoNegotiation, 'precoder': precoder, 'slotId': slotId, 'portId': portId}) + + ### Reboots the metwork processors on the given card card. Only available for APS cards. + @staticmethod + def _topology_operations_softReboot(self, board, cnId): + """ + Reboots the metwork processors on the given card card. Only available for APS cards. + :param board (number): + :param cnId (string): + """ + return self._wrapper.__post('/topology/operations/softReboot', **{'board': board, 'cnId': cnId}) + + ### Stops the test run. + @staticmethod + def _topology_operations_stopRun(self, runid): + """ + Stops the test run. + :param runid (number): Test RUN ID + """ + return self._wrapper.__post('/topology/operations/stopRun', **{'runid': runid}) + + ### null + @staticmethod + def _topology_operations_unreserve(self, unreservation): + """ + :param unreservation (list): + list of object with fields + slot (number): + port (number): + """ + return self._wrapper.__post('/topology/operations/unreserve', **{'unreservation': unreservation}) + + ### login into the bps system + def login(self, **kwargs): + self.__connect() + loginData = {'username': self.user, 'password': self.password, 'sessionId': self.sessionId} + loginData.update(kwargs) + r = self.session.post(url='https://' + self.host + '/bps/api/v2/core/auth/login', data=json.dumps(loginData), headers={'content-type': 'application/json'}, verify=False) + if(r.status_code == 200): + self.serverVersions = self.__json_load(r) + apiServerVersion = BPS.__lver(self.serverVersions['apiServer'] if self.serverVersions and 'apiServer' in self.serverVersions else '0.0') + if self.checkVersion: + if apiServerVersion > self.clientVersion: + self.logout() + #self.printVersions() + raise Exception('Keysight Python REST-API Wrapper version is older than the BPS server version.\nThis is not a supported combination.\nPlease use the updated version of the wrapper provided with BPS system.') + if apiServerVersion < self.clientVersion: + print("Warning: Keysight Python REST-API Wrapper version is newer than the BPS server version.\nSome of the functionalities included in the Python wrapper might not be supported by the REST API.") + #print('Login successful.\nWelcome %s. \nYour session id is %s' % (self.user, self.sessionId)) + else: + raise Exception('Login failed.\ncode:%s, content:%s' % (r.status_code, r.content)) + return self.serverVersions + + ### logout from the bps system + def logout(self): + self.serverVersions = None + r = self.session.post(url='https://' + self.host + '/bps/api/v2/core/auth/logout', data=json.dumps({'username': self.user, 'password': self.password, 'sessionId': self.sessionId}), headers={'content-type': 'application/json'}, verify=False) + if(r.status_code == 200): + #print('Logout successful. \nBye %s.' % self.user) + self.__disconnect() + else: + raise Exception('Logout failed: (%s, %s)' % (r.status_code, r.content)) + + def printVersions(self): + apiServerVersion = 'N/A' + if self.serverVersions != None and 'apiServer' in self.serverVersions: + apiServerVersion = self.serverVersions['apiServer'] + print('Client version: %s \nServer version: %s' % (self.clientVersion, apiServerVersion)) + +class DataModelMeta(type): + _dataModel = { + 'administration': { + 'atiLicensing': { + 'license': [{ + 'boardserialno': { + }, + 'expires': { + }, + 'issued': { + }, + 'issuedBy': { + }, + 'maintenance': { + 'maintenanceExpiration': { + } + }, + 'name': { + }, + 'serialno': { + }, + 'slotNo': { + } + }], + 'operations': { + 'importAtiLicense': [{ + }] + } + }, + 'operations': { + 'exportAllTests': [{ + }], + 'importAllTests': [{ + }], + 'logs': [{ + }] + }, + 'sessions': [{ + 'age': { + }, + 'dataContext': { + }, + 'inactivity': { + }, + 'inactivityTimeout': { + }, + 'note': { + }, + 'operations': { + 'close': [{ + }], + 'list': [{ + 'age': { + }, + 'dataContext': { + }, + 'inactivity': { + }, + 'inactivityTimeout': { + }, + 'note': { + }, + 'session': { + }, + 'type': { + }, + 'user': { + } + }] + }, + 'session': { + }, + 'type': { + }, + 'user': { + } + }], + 'systemSettings': { + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'guardrailSettings': { + 'enableStrictMode': { + }, + 'stopOnLinkdown': { + }, + 'testStartPrevention': { + }, + 'testStatusWarning': { + }, + 'testStop': { + } + }, + 'label': { + }, + 'lockedBy': { + }, + 'revision': { + }, + 'softwareUpdate': { + 'check': { + }, + 'interval': { + }, + 'password': { + }, + 'username': { + } + }, + 'strikepackUpdate': { + 'check': { + }, + 'interval': { + }, + 'password': { + }, + 'username': { + } + }, + 'vacuumSettings': { + 'autoVacuum': { + }, + 'vacuumWindowHigh': { + }, + 'vacuumWindowLow': { + }, + 'vacuumWindowTZ': { + } + } + }, + 'userSettings': [{ + 'content': { + }, + 'name': { + }, + 'operations': { + 'changeUserSetting': [{ + }], + 'setAutoReserve': [{ + }] + } + }] + }, + 'appProfile': { + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'name': { + }, + 'operations': { + 'add': [{ + }], + 'delete': [{ + }], + 'exportAppProfile': [{ + }], + 'importAppProfile': [{ + }], + 'load': [{ + }], + 'new': [{ + }], + 'recompute': [{ + }], + 'remove': [{ + }], + 'save': [{ + }], + 'saveAs': [{ + }], + 'search': [{ + }] + }, + 'revision': { + }, + 'superflow': [{ + 'author': { + }, + 'clazz': { + }, + 'constraints': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'estimate_bytes': { + }, + 'estimate_flows': { + }, + 'generated': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'name': { + }, + 'params': { + }, + 'percentBandwidth': { + }, + 'percentFlows': { + }, + 'revision': { + }, + 'seed': { + }, + 'settings': [{ + 'description': { + }, + 'label': { + }, + 'name': { + }, + 'realtimeGroup': { + }, + 'units': { + } + }], + 'weight': { + } + }], + 'weightType': { + } + }, + 'capture': { + 'author': { + }, + 'avgFlowLength': { + }, + 'avgPacketSize': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'duration': { + }, + 'ipv4Packets': { + }, + 'ipv6Packets': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'name': { + }, + 'operations': { + 'importCapture': [{ + }], + 'search': [{ + }] + }, + 'pcapFilesize': { + }, + 'revision': { + }, + 'tcpPackets': { + }, + 'totalPackets': { + }, + 'udpPackets': { + } + }, + 'evasionProfile': { + 'StrikeOptions': { + 'COMMAND': { + 'Malicious': { + }, + 'PadCommandWhitespace': { + }, + 'PadPathSlashes': { + } + }, + 'DCERPC': { + 'MaxFragmentSize': { + }, + 'MultiContextBind': { + }, + 'MultiContextBindHead': { + }, + 'MultiContextBindTail': { + }, + 'UseObjectID': { + } + }, + 'EMAIL': { + 'EnvelopeType': { + }, + 'From': { + }, + 'ShuffleHeaders': { + }, + 'To': { + } + }, + 'Ethernet': { + 'MTU': { + } + }, + 'FILETRANSFER': { + 'CompressionMethod': { + }, + 'FtpTransferMethod': { + }, + 'Imap4Encoding': { + }, + 'Pop3Encoding': { + }, + 'SmtpEncoding': { + }, + 'TransportProtocol': { + } + }, + 'FTP': { + 'AuthenticationType': { + }, + 'FTPEvasionLevel': { + }, + 'PadCommandWhitespace': { + }, + 'Password': { + }, + 'Username': { + } + }, + 'Global': { + 'AllowDeprecated': { + }, + 'BehaviorOnTimeout': { + }, + 'CachePoisoning': { + }, + 'FalsePositives': { + }, + 'IOTimeout': { + }, + 'MaxTimeoutPerStrike': { + } + }, + 'HTML': { + 'HTMLUnicodeEncoding': { + }, + 'HTMLUnicodeUTF7EncodingMode': { + }, + 'HTMLUnicodeUTF8EncodingMode': { + }, + 'HTMLUnicodeUTF8EncodingSize': { + } + }, + 'HTTP': { + 'AuthenticationType': { + }, + 'Base64EncodePOSTData': { + }, + 'ClientChunkedTransfer': { + }, + 'ClientChunkedTransferSize': { + }, + 'DirectoryFakeRelative': { + }, + 'DirectorySelfReference': { + }, + 'EncodeDoubleNibbleHex': { + }, + 'EncodeDoublePercentHex': { + }, + 'EncodeFirstNibbleHex': { + }, + 'EncodeHexAll': { + }, + 'EncodeHexRandom': { + }, + 'EncodeSecondNibbleHex': { + }, + 'EncodeUnicodeAll': { + }, + 'EncodeUnicodeBareByte': { + }, + 'EncodeUnicodeInvalid': { + }, + 'EncodeUnicodePercentU': { + }, + 'EncodeUnicodeRandom': { + }, + 'EndRequestFakeHTTPHeader': { + }, + 'ForwardToBackSlashes': { + }, + 'GetParameterRandomPrepend': { + }, + 'HTTPServerProfile': { + }, + 'HTTPTransportMethods': { + }, + 'IgnoreHeaders': { + }, + 'MethodRandomInvalid': { + }, + 'MethodRandomizeCase': { + }, + 'MethodURINull': { + }, + 'MethodURISpaces': { + }, + 'MethodURITabs': { + }, + 'PadHTTPPost': { + }, + 'Password': { + }, + 'PostParameterRandomPrepend': { + }, + 'RequestFullURL': { + }, + 'RequireLeadingSlash': { + }, + 'ServerChunkedTransfer': { + }, + 'ServerChunkedTransferSize': { + }, + 'ServerCompression': { + }, + 'ShuffleHeaders': { + }, + 'URIAppendAltSpaces': { + }, + 'URIAppendAltSpacesSize': { + }, + 'URIPrependAltSpaces': { + }, + 'URIPrependAltSpacesSize': { + }, + 'URIRandomizeCase': { + }, + 'Username': { + }, + 'VersionRandomInvalid': { + }, + 'VersionRandomizeCase': { + }, + 'VersionUse0_9': { + }, + 'VirtualHostname': { + }, + 'VirtualHostnameType': { + } + }, + 'ICMP': { + 'DoEcho': { + } + }, + 'IMAP4': { + 'AuthenticationType': { + }, + 'IMAPUseProxyMode': { + }, + 'Password': { + }, + 'Username': { + } + }, + 'IP': { + 'FragEvasion': { + }, + 'FragOrder': { + }, + 'FragPolicy': { + }, + 'IPEvasionsOnBothSides': { + }, + 'MaxFragSize': { + }, + 'MaxReadSize': { + }, + 'MaxWriteSize': { + }, + 'RFC3128': { + }, + 'RFC3128FakePort': { + }, + 'RFC3514': { + }, + 'ReadWriteWindowSize': { + }, + 'TOS': { + }, + 'TTL': { + } + }, + 'IPv6': { + 'TC': { + } + }, + 'JAVASCRIPT': { + 'Encoding': { + }, + 'Obfuscate': { + } + }, + 'MALWARE': { + 'CompressionMethod': { + }, + 'FilenameInsertEnvVar': { + }, + 'FtpTransferMethod': { + }, + 'Imap4Encoding': { + }, + 'Pop3Encoding': { + }, + 'SmtpEncoding': { + }, + 'TransportProtocol': { + } + }, + 'MS_Exchange_Ports': { + 'SystemAttendant': { + } + }, + 'OLE': { + 'RefragmentData': { + } + }, + 'PDF': { + 'HexEncodeNames': { + }, + 'PreHeaderData': { + }, + 'RandomizeDictKeyOrder': { + }, + 'ShortFilterNames': { + }, + 'Version': { + } + }, + 'POP3': { + 'AuthenticationType': { + }, + 'POP3UseProxyMode': { + }, + 'PadCommandWhitespace': { + }, + 'Password': { + }, + 'Username': { + } + }, + 'RTF': { + 'ASCII_Escaping': { + }, + 'FictitiousCW': { + }, + 'MixedCase': { + }, + 'WhiteSpace': { + } + }, + 'SELF': { + 'AREA-ID': { + }, + 'AS-ID': { + }, + 'AppSimAppProfile': { + }, + 'AppSimSmartflow': { + }, + 'AppSimSuperflow': { + }, + 'AppSimUseNewTuple': { + }, + 'ApplicationPings': { + }, + 'DelaySeconds': { + }, + 'EndingFuzzerOffset': { + }, + 'FileTransferExtension': { + }, + 'FileTransferFile': { + }, + 'FileTransferName': { + }, + 'FileTransferRandCase': { + }, + 'HTMLPadding': { + }, + 'MaximumIterations': { + }, + 'MaximumRuntime': { + }, + 'Password': { + }, + 'ROUTER-ID': { + }, + 'Repetitions': { + }, + 'ReportCLSIDs': { + }, + 'StartingFuzzerOffset': { + }, + 'TraversalRequestFilename': { + }, + 'TraversalVirtualDirectory': { + }, + 'TraversalWindowsDirectory': { + }, + 'URI': { + }, + 'UnicodeTraversalVirtualDirectory': { + }, + 'UnicodeTraversalWindowsDirectory': { + }, + 'Username': { + } + }, + 'SHELLCODE': { + 'RandomNops': { + } + }, + 'SIP': { + 'CompactHeaders': { + }, + 'EnvelopeType': { + }, + 'From': { + }, + 'PadHeadersLineBreak': { + }, + 'PadHeadersWhitespace': { + }, + 'RandomizeCase': { + }, + 'ShuffleHeaders': { + }, + 'To': { + } + }, + 'SMB': { + 'AuthenticationType': { + }, + 'MaxReadSize': { + }, + 'MaxWriteSize': { + }, + 'Password': { + }, + 'RandomPipeOffset': { + }, + 'Username': { + } + }, + 'SMTP': { + 'PadCommandWhitespace': { + }, + 'SMTPUseProxyMode': { + }, + 'ShuffleHeaders': { + } + }, + 'SNMP': { + 'CommunityString': { + } + }, + 'SSL': { + 'Cipher': { + }, + 'ClientCertificateFile': { + }, + 'ClientKeyFile': { + }, + 'DestPortOverride': { + }, + 'DisableDefaultStrikeSSL': { + }, + 'EnableOnAllHTTP': { + }, + 'EnableOnAllTCP': { + }, + 'SecurityProtocol': { + }, + 'ServerCertificateFile': { + }, + 'ServerKeyFile': { + } + }, + 'SUNRPC': { + 'NullCredentialPadding': { + }, + 'OneFragmentMultipleTCPSegmentsCount': { + }, + 'RPCFragmentTCPSegmentDistribution': { + }, + 'TCPFragmentSize': { + } + }, + 'TCP': { + 'AcknowledgeAllSegments': { + }, + 'DestinationPort': { + }, + 'DestinationPortType': { + }, + 'DuplicateBadChecksum': { + }, + 'DuplicateBadReset': { + }, + 'DuplicateBadSeq': { + }, + 'DuplicateBadSyn': { + }, + 'DuplicateLastSegment': { + }, + 'DuplicateNullFlags': { + }, + 'MaxSegmentSize': { + }, + 'SegmentOrder': { + }, + 'SkipHandshake': { + }, + 'SneakAckHandshake': { + }, + 'SourcePort': { + }, + 'SourcePortType': { + } + }, + 'UDP': { + 'DestinationPort': { + }, + 'DestinationPortType': { + }, + 'SourcePort': { + }, + 'SourcePortType': { + } + }, + 'UNIX': { + 'PadCommandWhitespace': { + }, + 'PadPathSlashes': { + } + }, + 'Variations': { + 'Limit': { + }, + 'Shuffle': { + }, + 'Subset': { + }, + 'TestType': { + }, + 'VariantTesting': { + } + }, + 'operations': { + 'getStrikeOptions': [{ + 'description': { + }, + 'label': { + }, + 'name': { + }, + 'realtimeGroup': { + }, + 'units': { + } + }] + } + }, + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'name': { + }, + 'operations': { + 'delete': [{ + }], + 'load': [{ + }], + 'new': [{ + }], + 'save': [{ + }], + 'saveAs': [{ + }], + 'search': [{ + }] + }, + 'revision': { + } + }, + 'loadProfile': { + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'name': { + }, + 'operations': { + 'createNewCustom': [{ + }], + 'delete': [{ + }], + 'load': [{ + }], + 'save': [{ + }], + 'saveAs': [{ + }], + 'search': [{ + }] + }, + 'phase': [{ + 'duration': { + }, + 'phaseId': { + }, + 'rampDist.steadyBehavior': { + }, + 'rateDist.min': { + }, + 'rateDist.scope': { + }, + 'rateDist.type': { + }, + 'rateDist.unit': { + }, + 'sessions.max': { + }, + 'sessions.maxPerSecond': { + }, + 'type': { + } + }], + 'presets': [{ + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'name': { + }, + 'phase': [{ + 'duration': { + }, + 'phaseId': { + }, + 'rampDist.steadyBehavior': { + }, + 'rateDist.min': { + }, + 'rateDist.scope': { + }, + 'rateDist.type': { + }, + 'rateDist.unit': { + }, + 'sessions.max': { + }, + 'sessions.maxPerSecond': { + }, + 'type': { + } + }], + 'regen': { + }, + 'revision': { + }, + 'summaryData': { + 'activeFlowsSum': { + }, + 'appStat': [{ + }], + 'basisOfRegeneration': { + }, + 'deviceType': { + }, + 'downloadBytesSum': { + }, + 'dynamicAppNames': { + }, + 'dynamicSuperflowName': { + }, + 'endTime': { + }, + 'magicNumber': { + }, + 'miniSlotDuration': { + }, + 'phaseDuration': { + }, + 'startTime': { + }, + 'summaryName': { + }, + 'unknownSslAppNames': { + }, + 'unknownSslSuperflowName': { + }, + 'unknownTcpAppNames': { + }, + 'unknownUdpAppNames': { + }, + 'uploadBytesSum': { + }, + 'version': { + } + } + }], + 'regen': { + }, + 'revision': { + }, + 'summaryData': { + 'activeFlowsSum': { + }, + 'appStat': [{ + }], + 'basisOfRegeneration': { + }, + 'deviceType': { + }, + 'downloadBytesSum': { + }, + 'dynamicAppNames': { + }, + 'dynamicSuperflowName': { + }, + 'endTime': { + }, + 'magicNumber': { + }, + 'miniSlotDuration': { + }, + 'phaseDuration': { + }, + 'startTime': { + }, + 'summaryName': { + }, + 'unknownSslAppNames': { + }, + 'unknownSslSuperflowName': { + }, + 'unknownTcpAppNames': { + }, + 'unknownUdpAppNames': { + }, + 'uploadBytesSum': { + }, + 'version': { + } + } + }, + 'network': { + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'interfaceCount': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'modelDefinition': { + }, + 'name': { + }, + 'networkModel': { + 'dhcpv6c_cfg': [{ + 'dhcp6c_duid_type': { + }, + 'dhcp6c_ia_t1': { + }, + 'dhcp6c_ia_t2': { + }, + 'dhcp6c_ia_type': { + }, + 'dhcp6c_initial_srate': { + }, + 'dhcp6c_max_outstanding': { + }, + 'dhcp6c_renew_timer': { + }, + 'dhcp6c_req_opts_config': { + }, + 'dhcp6c_tout_and_retr_config': { + }, + 'id': { + } + }], + 'dhcpv6c_req_opts_cfg': [{ + 'dhcpv6v_req_dns_list': { + }, + 'dhcpv6v_req_dns_resolvers': { + }, + 'dhcpv6v_req_preference': { + }, + 'dhcpv6v_req_server_id': { + }, + 'id': { + } + }], + 'dhcpv6c_tout_and_retr_cfg': [{ + 'dhcp6c_inforeq_attempts': { + }, + 'dhcp6c_initial_inforeq_tout': { + }, + 'dhcp6c_initial_rebind_tout': { + }, + 'dhcp6c_initial_release_tout': { + }, + 'dhcp6c_initial_renew_tout': { + }, + 'dhcp6c_initial_req_tout': { + }, + 'dhcp6c_initial_sol_tout': { + }, + 'dhcp6c_max_inforeq_tout': { + }, + 'dhcp6c_max_rebind_tout': { + }, + 'dhcp6c_max_renew_tout': { + }, + 'dhcp6c_max_req_tout': { + }, + 'dhcp6c_max_sol_tout': { + }, + 'dhcp6c_release_attempts': { + }, + 'dhcp6c_req_attempts': { + }, + 'dhcp6c_sol_attempts': { + }, + 'id': { + } + }], + 'ds_lite_aftr': [{ + 'b4_count': { + }, + 'b4_ip_address': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ipv6_addr_alloc_mode': { + }, + 'prefix_length': { + } + }], + 'ds_lite_b4': [{ + 'aftr_addr': { + }, + 'aftr_count': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'host_ip_addr_alloc_mode': { + }, + 'host_ip_base_addr': { + }, + 'hosts_ip_increment': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ipv6_addr_alloc_mode': { + }, + 'prefix_length': { + } + }], + 'enodeb': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'enodebCount': { + }, + 'ip_address': { + }, + 'mme_ip_address': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'netmask': { + }, + 'plmn': { + }, + 'psn': { + }, + 'psn_netmask': { + }, + 'sctp_over_udp': { + }, + 'sctp_sport': { + } + }], + 'enodeb6': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'enodebCount': { + }, + 'ip_address': { + }, + 'mme_ip_address': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sctp_over_udp': { + }, + 'sctp_sport': { + } + }], + 'enodeb_mme': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'default_container': { + }, + 'enodebCount': { + }, + 'gateway_ip_address': { + }, + 'ip_address': { + }, + 'netmask': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'netmask': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'sgw_ip_address': { + }, + 'ue_address': { + } + }], + 'enodeb_mme6': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'default_container': { + }, + 'enodebCount': { + }, + 'gateway_ip_address': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sgw_ip_address': { + }, + 'ue_address': { + } + }], + 'enodeb_mme_sgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'netmask': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'ue_address': { + } + }], + 'enodeb_mme_sgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'ue_address': { + } + }], + 'geneve_tep': [{ + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'header_options': [{ + 'geneve_data': { + }, + 'geneve_option_class': { + }, + 'geneve_type': { + } + }], + 'id': { + }, + 'ip_address': { + }, + 'netmask': { + }, + 'vni_base': { + }, + 'vni_count': { + } + }], + 'ggsn': [{ + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'ggsn_advertised_control_ip_address': { + }, + 'ggsn_advertised_data_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'netmask': { + } + }], + 'ggsn6': [{ + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'ggsn_advertised_control_ip_address': { + }, + 'ggsn_advertised_data_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'prefix_length': { + } + }], + 'global_config': [{ + 'gtp': { + }, + 'id': { + } + }], + 'interface': [{ + 'description': { + }, + 'duplicate_mac_address': { + }, + 'id': { + }, + 'ignore_pause_frames': { + }, + 'impairments': { + 'corrupt_chksum': { + }, + 'corrupt_gt256': { + }, + 'corrupt_lt256': { + }, + 'corrupt_lt64': { + }, + 'corrupt_rand': { + }, + 'drop': { + }, + 'frack': { + }, + 'rate': { + } + }, + 'mac_address': { + }, + 'mtu': { + }, + 'number': { + }, + 'packet_filter': { + 'dest_ip': { + }, + 'dest_port': { + }, + 'filter': { + }, + 'not_dest_ip': { + }, + 'not_dest_port': { + }, + 'not_src_ip': { + }, + 'not_src_port': { + }, + 'not_vlan': { + }, + 'src_ip': { + }, + 'src_port': { + }, + 'vlan': { + } + }, + 'use_vnic_mac_address': { + }, + 'vlan_key': { + } + }], + 'ip6_dhcp_server': [{ + 'default_container': { + }, + 'default_lease_time': { + }, + 'gateway_ip_address': { + }, + 'ia_type': { + }, + 'id': { + }, + 'ip_address': { + }, + 'max_lease_time': { + }, + 'offer_lifetime': { + }, + 'pool_base_address': { + }, + 'pool_dns_address1': { + }, + 'pool_dns_address2': { + }, + 'pool_prefix_length': { + }, + 'pool_size': { + }, + 'prefix_length': { + } + }], + 'ip6_dns_config': [{ + 'dns_domain': { + }, + 'dns_server_address': { + }, + 'id': { + } + }], + 'ip6_dns_proxy': [{ + 'dns_proxy_ip_base': { + }, + 'dns_proxy_ip_count': { + }, + 'dns_proxy_src_ip_base': { + }, + 'dns_proxy_src_ip_count': { + }, + 'id': { + } + }], + 'ip6_external_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'id': { + }, + 'ip_address': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip6_geneve_tep': [{ + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'header_options': [{ + 'geneve_data': { + }, + 'geneve_option_class': { + }, + 'geneve_type': { + } + }], + 'id': { + }, + 'ip_address': { + }, + 'prefix_length': { + }, + 'vni_base': { + }, + 'vni_count': { + } + }], + 'ip6_mac_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'mac_address': { + }, + 'mtu': { + }, + 'prefix_length': { + }, + 'proxy': { + }, + 'tags': { + }, + 'tep_vni_mapping': { + } + }], + 'ip6_router': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'hosts_ip_alloc_container': { + }, + 'id': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'ip6_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'dns_proxy': { + }, + 'enable_stats': { + }, + 'gateway_ip_address': { + }, + 'host_ipv6_addr_alloc_mode': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ip_alloc_container': { + }, + 'ip_selection_type': { + }, + 'maxmbps_per_host': { + }, + 'mpls_list': [{ + 'id': { + }, + 'value': { + } + }], + 'prefix_length': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_dhcp_hosts': [{ + 'accept_local_offers_only': { + }, + 'allocation_rate': { + }, + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns_proxy': { + }, + 'enable_stats': { + }, + 'id': { + }, + 'ldap': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_dhcp_server': [{ + 'accept_local_requests_only': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_time': { + }, + 'netmask': { + } + }], + 'ip_dns_config': [{ + 'dns_domain': { + }, + 'dns_server_address': { + }, + 'id': { + } + }], + 'ip_dns_proxy': [{ + 'dns_proxy_ip_base': { + }, + 'dns_proxy_ip_count': { + }, + 'dns_proxy_src_ip_base': { + }, + 'dns_proxy_src_ip_count': { + }, + 'id': { + } + }], + 'ip_external_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'id': { + }, + 'ip_address': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_ldap_server': [{ + 'auth_timeout': { + }, + 'authentication_rate': { + }, + 'dn_fixed_val': { + }, + 'id': { + }, + 'ldap_password_start_tag': { + }, + 'ldap_server_address': { + }, + 'ldap_user_count': { + }, + 'ldap_user_max': { + }, + 'ldap_user_min': { + }, + 'ldap_username_start_tag': { + } + }], + 'ip_mac_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'mac_address': { + }, + 'mtu': { + }, + 'netmask': { + }, + 'proxy': { + }, + 'tags': { + }, + 'tep_vni_mapping': { + } + }], + 'ip_router': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'netmask': { + } + }], + 'ip_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'dns_proxy': { + }, + 'enable_stats': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ip_selection_type': { + }, + 'ldap': { + }, + 'maxmbps_per_host': { + }, + 'mpls_list': [{ + 'id': { + }, + 'value': { + } + }], + 'netmask': { + }, + 'proxy': { + }, + 'psn': { + }, + 'psn_netmask': { + }, + 'tags': { + } + }], + 'ipsec_config': [{ + 'debug_log': { + }, + 'dpd_delay': { + }, + 'dpd_enabled': { + }, + 'dpd_timeout': { + }, + 'enable_xauth': { + }, + 'esp_auth_alg': { + }, + 'esp_encr_alg': { + }, + 'id': { + }, + 'ike_1to1': { + }, + 'ike_auth_alg': { + }, + 'ike_dh': { + }, + 'ike_encr_alg': { + }, + 'ike_lifetime': { + }, + 'ike_mode': { + }, + 'ike_pfs': { + }, + 'ike_prf_alg': { + }, + 'ike_version': { + }, + 'init_rate': { + }, + 'initial_contact': { + }, + 'ipsec_lifetime': { + }, + 'left_id': { + }, + 'max_outstanding': { + }, + 'nat_traversal': { + }, + 'psk': { + }, + 'rekey_margin': { + }, + 'retrans_interval': { + }, + 'right_id': { + }, + 'setup_timeout': { + }, + 'wildcard_tsr': { + }, + 'xauth_password': { + }, + 'xauth_username': { + } + }], + 'ipsec_router': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ike_peer_ip_address': { + }, + 'ip_address': { + }, + 'ipsec': { + }, + 'netmask': { + } + }], + 'mme_sgw_pgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'netmask': { + }, + 'plmn': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + }, + 'ue_info': { + } + }], + 'mme_sgw_pgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + }, + 'ue_info': { + } + }], + 'mobility_session_info': [{ + 'access_point_name': { + }, + 'bearers': [{ + 'qci_label': { + } + }], + 'id': { + }, + 'initiated_dedicated_bearers': { + }, + 'password': { + }, + 'username': { + } + }], + 'mpls_settings': [{ + 'id': { + }, + 'mpls_tags': [{ + 'mpls_exp': { + }, + 'mpls_label': { + }, + 'mpls_ttl': { + } + }] + }], + 'path_advanced': [{ + 'destination_container': { + }, + 'destination_port_algorithm': { + }, + 'destination_port_base': { + }, + 'destination_port_count': { + }, + 'enable_external_file': { + }, + 'file': { + }, + 'id': { + }, + 'source_container': { + }, + 'source_port_algorithm': { + }, + 'source_port_base': { + }, + 'source_port_count': { + }, + 'stream_group': { + }, + 'tags': { + }, + 'tuple_limit': { + }, + 'xor_bits': { + } + }], + 'path_basic': [{ + 'destination_container': { + }, + 'id': { + }, + 'source_container': { + } + }], + 'pgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'netmask': { + }, + 'plmn': { + } + }], + 'pgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'plmn': { + }, + 'prefix_length': { + } + }], + 'plmn': [{ + 'description': { + }, + 'id': { + }, + 'mcc': { + }, + 'mnc': { + } + }], + 'sgsn': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'ggsn_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'netmask': { + } + }], + 'sgsn6': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'ggsn_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'sgw_pgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'netmask': { + }, + 'plmn': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + } + }], + 'sgw_pgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + } + }], + 'sixrd_ce': [{ + 'br_ip_address': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'enable_stats': { + }, + 'gateway_ip_address': { + }, + 'hosts_per_ce': { + }, + 'id': { + }, + 'ip4_mask_length': { + }, + 'ip_address': { + }, + 'netmask': { + }, + 'sixrd_prefix': { + }, + 'sixrd_prefix_length': { + }, + 'tags': { + } + }], + 'slaac_cfg': [{ + 'enable_dad': { + }, + 'fallback_ip_address': { + }, + 'id': { + }, + 'stateless_dhcpv6c_cfg': { + }, + 'use_rand_addr': { + } + }], + 'ue': [{ + 'allocation_rate': { + }, + 'behind_snapt': { + }, + 'default_container': { + }, + 'dns': { + }, + 'enable_stats': { + }, + 'id': { + }, + 'mobility_action': { + }, + 'mobility_interval_ms': { + }, + 'mobility_with_traffic': { + }, + 'proxy': { + }, + 'request_ipv6': { + }, + 'tags': { + }, + 'ue_info': { + } + }], + 'ue_info': [{ + 'count': { + }, + 'id': { + }, + 'imei_base': { + }, + 'imsi_base': { + }, + 'maxmbps_per_ue': { + }, + 'mobility_session_infos': [{ + 'id': { + }, + 'value': { + } + }], + 'msisdn_base': { + }, + 'operator_variant': { + }, + 'secret_key': { + }, + 'secret_key_step': { + } + }], + 'vlan': [{ + 'count': { + }, + 'default_container': { + }, + 'description': { + }, + 'duplicate_mac_address': { + }, + 'id': { + }, + 'inner_vlan': { + }, + 'mac_address': { + }, + 'mtu': { + }, + 'outer_vlan': { + }, + 'tpid': { + } + }] + }, + 'operations': { + 'addOpenRecent': [{ + }], + 'delete': [{ + }], + 'exportCSV': [{ + }], + 'exportNetwork': [{ + }], + 'getRecent': [{ + }], + 'importNetwork': [{ + }], + 'list': [{ + }], + 'load': [{ + }], + 'networkInfo': [{ + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'interfaceCount': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'name': { + }, + 'networkModel': { + 'dhcpv6c_cfg': [{ + 'dhcp6c_duid_type': { + }, + 'dhcp6c_ia_t1': { + }, + 'dhcp6c_ia_t2': { + }, + 'dhcp6c_ia_type': { + }, + 'dhcp6c_initial_srate': { + }, + 'dhcp6c_max_outstanding': { + }, + 'dhcp6c_renew_timer': { + }, + 'dhcp6c_req_opts_config': { + }, + 'dhcp6c_tout_and_retr_config': { + }, + 'id': { + } + }], + 'dhcpv6c_req_opts_cfg': [{ + 'dhcpv6v_req_dns_list': { + }, + 'dhcpv6v_req_dns_resolvers': { + }, + 'dhcpv6v_req_preference': { + }, + 'dhcpv6v_req_server_id': { + }, + 'id': { + } + }], + 'dhcpv6c_tout_and_retr_cfg': [{ + 'dhcp6c_inforeq_attempts': { + }, + 'dhcp6c_initial_inforeq_tout': { + }, + 'dhcp6c_initial_rebind_tout': { + }, + 'dhcp6c_initial_release_tout': { + }, + 'dhcp6c_initial_renew_tout': { + }, + 'dhcp6c_initial_req_tout': { + }, + 'dhcp6c_initial_sol_tout': { + }, + 'dhcp6c_max_inforeq_tout': { + }, + 'dhcp6c_max_rebind_tout': { + }, + 'dhcp6c_max_renew_tout': { + }, + 'dhcp6c_max_req_tout': { + }, + 'dhcp6c_max_sol_tout': { + }, + 'dhcp6c_release_attempts': { + }, + 'dhcp6c_req_attempts': { + }, + 'dhcp6c_sol_attempts': { + }, + 'id': { + } + }], + 'ds_lite_aftr': [{ + 'b4_count': { + }, + 'b4_ip_address': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ipv6_addr_alloc_mode': { + }, + 'prefix_length': { + } + }], + 'ds_lite_b4': [{ + 'aftr_addr': { + }, + 'aftr_count': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'host_ip_addr_alloc_mode': { + }, + 'host_ip_base_addr': { + }, + 'hosts_ip_increment': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ipv6_addr_alloc_mode': { + }, + 'prefix_length': { + } + }], + 'enodeb': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'enodebCount': { + }, + 'ip_address': { + }, + 'mme_ip_address': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'netmask': { + }, + 'plmn': { + }, + 'psn': { + }, + 'psn_netmask': { + }, + 'sctp_over_udp': { + }, + 'sctp_sport': { + } + }], + 'enodeb6': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'enodebCount': { + }, + 'ip_address': { + }, + 'mme_ip_address': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sctp_over_udp': { + }, + 'sctp_sport': { + } + }], + 'enodeb_mme': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'default_container': { + }, + 'enodebCount': { + }, + 'gateway_ip_address': { + }, + 'ip_address': { + }, + 'netmask': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'netmask': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'sgw_ip_address': { + }, + 'ue_address': { + } + }], + 'enodeb_mme6': [{ + 'default_container': { + }, + 'dns': { + }, + 'enodebs': [{ + 'default_container': { + }, + 'enodebCount': { + }, + 'gateway_ip_address': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sgw_ip_address': { + }, + 'ue_address': { + } + }], + 'enodeb_mme_sgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'netmask': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'ue_address': { + } + }], + 'enodeb_mme_sgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_allocation_mode': { + }, + 'mme_ip_address': { + }, + 'pgw_ip_address': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'ue_address': { + } + }], + 'geneve_tep': [{ + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'header_options': [{ + 'geneve_data': { + }, + 'geneve_option_class': { + }, + 'geneve_type': { + } + }], + 'id': { + }, + 'ip_address': { + }, + 'netmask': { + }, + 'vni_base': { + }, + 'vni_count': { + } + }], + 'ggsn': [{ + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'ggsn_advertised_control_ip_address': { + }, + 'ggsn_advertised_data_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'netmask': { + } + }], + 'ggsn6': [{ + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'ggsn_advertised_control_ip_address': { + }, + 'ggsn_advertised_data_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'prefix_length': { + } + }], + 'global_config': [{ + 'gtp': { + }, + 'id': { + } + }], + 'interface': [{ + 'description': { + }, + 'duplicate_mac_address': { + }, + 'id': { + }, + 'ignore_pause_frames': { + }, + 'impairments': { + 'corrupt_chksum': { + }, + 'corrupt_gt256': { + }, + 'corrupt_lt256': { + }, + 'corrupt_lt64': { + }, + 'corrupt_rand': { + }, + 'drop': { + }, + 'frack': { + }, + 'rate': { + } + }, + 'mac_address': { + }, + 'mtu': { + }, + 'number': { + }, + 'packet_filter': { + 'dest_ip': { + }, + 'dest_port': { + }, + 'filter': { + }, + 'not_dest_ip': { + }, + 'not_dest_port': { + }, + 'not_src_ip': { + }, + 'not_src_port': { + }, + 'not_vlan': { + }, + 'src_ip': { + }, + 'src_port': { + }, + 'vlan': { + } + }, + 'use_vnic_mac_address': { + }, + 'vlan_key': { + } + }], + 'ip6_dhcp_server': [{ + 'default_container': { + }, + 'default_lease_time': { + }, + 'gateway_ip_address': { + }, + 'ia_type': { + }, + 'id': { + }, + 'ip_address': { + }, + 'max_lease_time': { + }, + 'offer_lifetime': { + }, + 'pool_base_address': { + }, + 'pool_dns_address1': { + }, + 'pool_dns_address2': { + }, + 'pool_prefix_length': { + }, + 'pool_size': { + }, + 'prefix_length': { + } + }], + 'ip6_dns_config': [{ + 'dns_domain': { + }, + 'dns_server_address': { + }, + 'id': { + } + }], + 'ip6_dns_proxy': [{ + 'dns_proxy_ip_base': { + }, + 'dns_proxy_ip_count': { + }, + 'dns_proxy_src_ip_base': { + }, + 'dns_proxy_src_ip_count': { + }, + 'id': { + } + }], + 'ip6_external_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'id': { + }, + 'ip_address': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip6_geneve_tep': [{ + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'header_options': [{ + 'geneve_data': { + }, + 'geneve_option_class': { + }, + 'geneve_type': { + } + }], + 'id': { + }, + 'ip_address': { + }, + 'prefix_length': { + }, + 'vni_base': { + }, + 'vni_count': { + } + }], + 'ip6_mac_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'mac_address': { + }, + 'mtu': { + }, + 'prefix_length': { + }, + 'proxy': { + }, + 'tags': { + }, + 'tep_vni_mapping': { + } + }], + 'ip6_router': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'hosts_ip_alloc_container': { + }, + 'id': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'ip6_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'dns_proxy': { + }, + 'enable_stats': { + }, + 'gateway_ip_address': { + }, + 'host_ipv6_addr_alloc_mode': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ip_alloc_container': { + }, + 'ip_selection_type': { + }, + 'maxmbps_per_host': { + }, + 'mpls_list': [{ + 'id': { + }, + 'value': { + } + }], + 'prefix_length': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_dhcp_hosts': [{ + 'accept_local_offers_only': { + }, + 'allocation_rate': { + }, + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns_proxy': { + }, + 'enable_stats': { + }, + 'id': { + }, + 'ldap': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_dhcp_server': [{ + 'accept_local_requests_only': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_time': { + }, + 'netmask': { + } + }], + 'ip_dns_config': [{ + 'dns_domain': { + }, + 'dns_server_address': { + }, + 'id': { + } + }], + 'ip_dns_proxy': [{ + 'dns_proxy_ip_base': { + }, + 'dns_proxy_ip_count': { + }, + 'dns_proxy_src_ip_base': { + }, + 'dns_proxy_src_ip_count': { + }, + 'id': { + } + }], + 'ip_external_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'id': { + }, + 'ip_address': { + }, + 'proxy': { + }, + 'tags': { + } + }], + 'ip_ldap_server': [{ + 'auth_timeout': { + }, + 'authentication_rate': { + }, + 'dn_fixed_val': { + }, + 'id': { + }, + 'ldap_password_start_tag': { + }, + 'ldap_server_address': { + }, + 'ldap_user_count': { + }, + 'ldap_user_max': { + }, + 'ldap_user_min': { + }, + 'ldap_username_start_tag': { + } + }], + 'ip_mac_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'mac_address': { + }, + 'mtu': { + }, + 'netmask': { + }, + 'proxy': { + }, + 'tags': { + }, + 'tep_vni_mapping': { + } + }], + 'ip_router': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'netmask': { + } + }], + 'ip_static_hosts': [{ + 'behind_snapt': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'dns_proxy': { + }, + 'enable_stats': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ip_selection_type': { + }, + 'ldap': { + }, + 'maxmbps_per_host': { + }, + 'mpls_list': [{ + 'id': { + }, + 'value': { + } + }], + 'netmask': { + }, + 'proxy': { + }, + 'psn': { + }, + 'psn_netmask': { + }, + 'tags': { + } + }], + 'ipsec_config': [{ + 'debug_log': { + }, + 'dpd_delay': { + }, + 'dpd_enabled': { + }, + 'dpd_timeout': { + }, + 'enable_xauth': { + }, + 'esp_auth_alg': { + }, + 'esp_encr_alg': { + }, + 'id': { + }, + 'ike_1to1': { + }, + 'ike_auth_alg': { + }, + 'ike_dh': { + }, + 'ike_encr_alg': { + }, + 'ike_lifetime': { + }, + 'ike_mode': { + }, + 'ike_pfs': { + }, + 'ike_prf_alg': { + }, + 'ike_version': { + }, + 'init_rate': { + }, + 'initial_contact': { + }, + 'ipsec_lifetime': { + }, + 'left_id': { + }, + 'max_outstanding': { + }, + 'nat_traversal': { + }, + 'psk': { + }, + 'rekey_margin': { + }, + 'retrans_interval': { + }, + 'right_id': { + }, + 'setup_timeout': { + }, + 'wildcard_tsr': { + }, + 'xauth_password': { + }, + 'xauth_username': { + } + }], + 'ipsec_router': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ike_peer_ip_address': { + }, + 'ip_address': { + }, + 'ipsec': { + }, + 'netmask': { + } + }], + 'mme_sgw_pgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'netmask': { + }, + 'plmn': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + }, + 'ue_info': { + } + }], + 'mme_sgw_pgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + }, + 'ue_info': { + } + }], + 'mobility_session_info': [{ + 'access_point_name': { + }, + 'bearers': [{ + 'qci_label': { + } + }], + 'id': { + }, + 'initiated_dedicated_bearers': { + }, + 'password': { + }, + 'username': { + } + }], + 'mpls_settings': [{ + 'id': { + }, + 'mpls_tags': [{ + 'mpls_exp': { + }, + 'mpls_label': { + }, + 'mpls_ttl': { + } + }] + }], + 'path_advanced': [{ + 'destination_container': { + }, + 'destination_port_algorithm': { + }, + 'destination_port_base': { + }, + 'destination_port_count': { + }, + 'enable_external_file': { + }, + 'file': { + }, + 'id': { + }, + 'source_container': { + }, + 'source_port_algorithm': { + }, + 'source_port_base': { + }, + 'source_port_count': { + }, + 'stream_group': { + }, + 'tags': { + }, + 'tuple_limit': { + }, + 'xor_bits': { + } + }], + 'path_basic': [{ + 'destination_container': { + }, + 'id': { + }, + 'source_container': { + } + }], + 'pgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'netmask': { + }, + 'plmn': { + } + }], + 'pgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'plmn': { + }, + 'prefix_length': { + } + }], + 'plmn': [{ + 'description': { + }, + 'id': { + }, + 'mcc': { + }, + 'mnc': { + } + }], + 'sgsn': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'ggsn_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'netmask': { + } + }], + 'sgsn6': [{ + 'default_container': { + }, + 'gateway_ip_address': { + }, + 'ggsn_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'sgw_pgw': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'netmask': { + }, + 'plmn': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + } + }], + 'sgw_pgw6': [{ + 'default_container': { + }, + 'dns': { + }, + 'gateway_ip_address': { + }, + 'id': { + }, + 'ip_address': { + }, + 'lease_address': { + }, + 'lease_address_v6': { + }, + 'max_sessions': { + }, + 'plmn': { + }, + 'prefix_length': { + }, + 'sgw_advertised_pgw': { + }, + 'sgw_advertised_sgw': { + } + }], + 'sixrd_ce': [{ + 'br_ip_address': { + }, + 'count': { + }, + 'default_container': { + }, + 'dns': { + }, + 'enable_stats': { + }, + 'gateway_ip_address': { + }, + 'hosts_per_ce': { + }, + 'id': { + }, + 'ip4_mask_length': { + }, + 'ip_address': { + }, + 'netmask': { + }, + 'sixrd_prefix': { + }, + 'sixrd_prefix_length': { + }, + 'tags': { + } + }], + 'slaac_cfg': [{ + 'enable_dad': { + }, + 'fallback_ip_address': { + }, + 'id': { + }, + 'stateless_dhcpv6c_cfg': { + }, + 'use_rand_addr': { + } + }], + 'ue': [{ + 'allocation_rate': { + }, + 'behind_snapt': { + }, + 'default_container': { + }, + 'dns': { + }, + 'enable_stats': { + }, + 'id': { + }, + 'mobility_action': { + }, + 'mobility_interval_ms': { + }, + 'mobility_with_traffic': { + }, + 'proxy': { + }, + 'request_ipv6': { + }, + 'tags': { + }, + 'ue_info': { + } + }], + 'ue_info': [{ + 'count': { + }, + 'id': { + }, + 'imei_base': { + }, + 'imsi_base': { + }, + 'maxmbps_per_ue': { + }, + 'mobility_session_infos': [{ + 'id': { + }, + 'value': { + } + }], + 'msisdn_base': { + }, + 'operator_variant': { + }, + 'secret_key': { + }, + 'secret_key_step': { + } + }], + 'vlan': [{ + 'count': { + }, + 'default_container': { + }, + 'description': { + }, + 'duplicate_mac_address': { + }, + 'id': { + }, + 'inner_vlan': { + }, + 'mac_address': { + }, + 'mtu': { + }, + 'outer_vlan': { + }, + 'tpid': { + } + }] + }, + 'revision': { + } + }], + 'new': [{ + }], + 'save': [{ + }], + 'saveAs': [{ + }], + 'search': [{ + }] + }, + 'revision': { + } + }, + 'remote': { + 'operations': { + 'connectChassis': [{ + }], + 'disconnectChassis': [{ + }] + } + }, + 'reports': { + 'duration': { + }, + 'endtime': { + }, + 'isPartOfResiliency': { + }, + 'iteration': { + }, + 'label': { + }, + 'name': { + }, + 'network': { + }, + 'operations': { + 'delete': [{ + }], + 'exportReport': [{ + }], + 'getReportContents': [{ + }], + 'getReportTable': [{ + }], + 'search': [{ + }] + }, + 'result': { + }, + 'size': { + }, + 'starttime': { + }, + 'testid': { + 'host': { + }, + 'iteration': { + }, + 'name': { + } + }, + 'testname': { + }, + 'user': { + } + }, + 'results': [{ + 'content': { + }, + 'datasetvals': { + }, + 'name': { + }, + 'operations': { + 'getGroups': [{ + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'revision': { + } + }], + 'getHistoricalResultSize': [{ + }], + 'getHistoricalSeries': [{ + }] + } + }], + 'statistics': { + 'component': [{ + 'label': { + }, + 'statNames': [{ + 'description': { + }, + 'label': { + }, + 'name': { + }, + 'realtimeGroup': { + }, + 'units': { + } + }] + }] + }, + 'strikeList': { + 'SecurityBehavior': { + }, + 'StrikeOptions': { + }, + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'name': { + }, + 'numStrikes': { + }, + 'operations': { + 'add': [{ + }], + 'delete': [{ + }], + 'exportStrikeList': [{ + }], + 'importStrikeList': [{ + }], + 'load': [{ + }], + 'new': [{ + }], + 'remove': [{ + }], + 'save': [{ + }], + 'saveAs': [{ + }], + 'search': [{ + }] + }, + 'queryString': { + }, + 'revision': { + }, + 'strikes': [{ + 'category': { + }, + 'direction': { + }, + 'fileExtension': { + }, + 'fileSize': { + }, + 'id': { + }, + 'keyword': [{ + 'name': { + } + }], + 'name': { + }, + 'path': { + }, + 'protocol': { + }, + 'reference': [{ + 'label': { + }, + 'type': { + }, + 'value': { + } + }], + 'severity': { + }, + 'strike': { + }, + 'strikeset': { + }, + 'variants': { + }, + 'year': { + } + }] + }, + 'strikes': { + 'category': { + }, + 'direction': { + }, + 'fileExtension': { + }, + 'fileSize': { + }, + 'id': { + }, + 'keyword': [{ + 'name': { + } + }], + 'name': { + }, + 'operations': { + 'search': [{ + }] + }, + 'path': { + }, + 'protocol': { + }, + 'reference': [{ + 'label': { + }, + 'type': { + }, + 'value': { + } + }], + 'severity': { + }, + 'variants': { + }, + 'year': { + } + }, + 'superflow': { + 'actions': [{ + 'actionInfo': [{ + 'description': { + }, + 'label': { + }, + 'name': { + }, + 'realtimeGroup': { + }, + 'units': { + } + }], + 'exflows': { + }, + 'flowid': { + }, + 'flowlabel': { + }, + 'gotoBlock': { + }, + 'id': { + }, + 'label': { + }, + 'matchBlock': { + }, + 'operations': { + 'getActionChoices': [{ + }], + 'getActionInfo': [{ + 'description': { + }, + 'label': { + }, + 'name': { + }, + 'realtimeGroup': { + }, + 'units': { + } + }] + }, + 'params': { + }, + 'source': { + }, + 'type': { + } + }], + 'author': { + }, + 'clazz': { + }, + 'constraints': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'estimate_bytes': { + }, + 'estimate_flows': { + }, + 'flows': [{ + 'flowcount': { + }, + 'from': { + }, + 'id': { + }, + 'label': { + }, + 'name': { + }, + 'operations': { + 'getCannedFlows': [{ + }], + 'getFlowChoices': [{ + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'revision': { + } + }] + }, + 'params': { + }, + 'singleNP': { + }, + 'to': { + } + }], + 'generated': { + }, + 'hosts': [{ + 'hostname': { + }, + 'id': { + }, + 'iface': { + }, + 'ip': { + 'type': { + } + } + }], + 'label': { + }, + 'lockedBy': { + }, + 'name': { + }, + 'operations': { + 'addAction': [{ + }], + 'addFlow': [{ + }], + 'addHost': [{ + }], + 'delete': [{ + }], + 'importResource': [{ + }], + 'load': [{ + }], + 'new': [{ + }], + 'removeAction': [{ + }], + 'removeFlow': [{ + }], + 'save': [{ + }], + 'saveAs': [{ + }], + 'search': [{ + }] + }, + 'params': { + }, + 'percentBandwidth': { + }, + 'percentFlows': { + }, + 'revision': { + }, + 'seed': { + }, + 'settings': [{ + 'description': { + }, + 'label': { + }, + 'name': { + }, + 'realtimeGroup': { + }, + 'units': { + } + }], + 'weight': { + } + }, + 'testmodel': { + 'author': { + }, + 'clazz': { + }, + 'component': [{ + '@type:appsim': { + 'app': { + 'fidelity': { + }, + 'removedns': { + }, + 'replace_streams': { + }, + 'streamsPerSuperflow': { + } + }, + 'delayStart': { + }, + 'experimental': { + 'tcpSegmentsBurst': { + }, + 'unify_l4_bufs': { + } + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'profile': { + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'resources': { + 'expand': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ssl': { + 'client_record_len': { + }, + 'server_record_len': { + }, + 'sslReuseType': { + }, + 'ssl_client_keylog': { + }, + 'ssl_keylog_max_entries': { + }, + 'upgrade': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:clientsim': { + 'app': { + 'fidelity': { + }, + 'removedns': { + }, + 'replace_streams': { + }, + 'streamsPerSuperflow': { + } + }, + 'delayStart': { + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'resources': { + 'expand': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ssl': { + 'client_record_len': { + }, + 'server_record_len': { + }, + 'sslReuseType': { + }, + 'ssl_client_keylog': { + }, + 'ssl_keylog_max_entries': { + }, + 'upgrade': { + } + }, + 'superflow': { + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:layer2': { + 'advanced': { + 'ethTypeField': { + }, + 'ethTypeVal': { + } + }, + 'bidirectional': { + }, + 'delayStart': { + }, + 'duration': { + 'disable_nd_probes': { + }, + 'durationFrames': { + }, + 'durationTime': { + } + }, + 'maxStreams': { + }, + 'payload': { + 'data': { + }, + 'dataWidth': { + }, + 'type': { + } + }, + 'payloadAdvanced': { + 'udfDataWidth': { + }, + 'udfLength': { + }, + 'udfMode': { + }, + 'udfOffset': { + } + }, + 'rateDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'ramptype': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'sizeDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'mixlen1': { + }, + 'mixlen10': { + }, + 'mixlen2': { + }, + 'mixlen3': { + }, + 'mixlen4': { + }, + 'mixlen5': { + }, + 'mixlen6': { + }, + 'mixlen7': { + }, + 'mixlen8': { + }, + 'mixlen9': { + }, + 'mixweight1': { + }, + 'mixweight10': { + }, + 'mixweight2': { + }, + 'mixweight3': { + }, + 'mixweight4': { + }, + 'mixweight5': { + }, + 'mixweight6': { + }, + 'mixweight7': { + }, + 'mixweight8': { + }, + 'mixweight9': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'slowStart': { + }, + 'slowStartFps': { + } + }, + '@type:layer3': { + 'Templates': { + 'TemplateType': { + } + }, + 'addrGenMode': { + }, + 'advancedIPv4': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'optionHeaderData': { + }, + 'optionHeaderField': { + }, + 'tos': { + }, + 'ttl': { + } + }, + 'advancedIPv6': { + 'extensionHeaderData': { + }, + 'extensionHeaderField': { + }, + 'flowLabel': { + }, + 'hopLimit': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'nextHeader': { + }, + 'trafficClass': { + } + }, + 'advancedUDP': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + } + }, + 'bidirectional': { + }, + 'delayStart': { + }, + 'dstPort': { + }, + 'dstPortMask': { + }, + 'duration': { + 'disable_nd_probes': { + }, + 'durationFrames': { + }, + 'durationTime': { + } + }, + 'enableTCP': { + }, + 'maxStreams': { + }, + 'payload': { + 'data': { + }, + 'dataWidth': { + }, + 'type': { + } + }, + 'payloadAdvanced': { + 'udfDataWidth': { + }, + 'udfLength': { + }, + 'udfMode': { + }, + 'udfOffset': { + } + }, + 'randomizeIP': { + }, + 'rateDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'ramptype': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'sizeDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'mixlen1': { + }, + 'mixlen10': { + }, + 'mixlen2': { + }, + 'mixlen3': { + }, + 'mixlen4': { + }, + 'mixlen5': { + }, + 'mixlen6': { + }, + 'mixlen7': { + }, + 'mixlen8': { + }, + 'mixlen9': { + }, + 'mixweight1': { + }, + 'mixweight10': { + }, + 'mixweight2': { + }, + 'mixweight3': { + }, + 'mixweight4': { + }, + 'mixweight5': { + }, + 'mixweight6': { + }, + 'mixweight7': { + }, + 'mixweight8': { + }, + 'mixweight9': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'slowStart': { + }, + 'slowStartFps': { + }, + 'srcPort': { + }, + 'srcPortMask': { + }, + 'syncIP': { + }, + 'udpDstPortMode': { + }, + 'udpSrcPortMode': { + } + }, + '@type:layer3advanced': { + 'Templates': { + 'TemplateType': { + } + }, + 'advancedIPv4': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'optionHeaderData': { + }, + 'optionHeaderField': { + }, + 'tos': { + }, + 'ttl': { + } + }, + 'advancedIPv6': { + 'extensionHeaderData': { + }, + 'extensionHeaderField': { + }, + 'flowLabel': { + }, + 'hopLimit': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'nextHeader': { + }, + 'trafficClass': { + } + }, + 'advancedUDP': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + } + }, + 'bidirectional': { + }, + 'delayStart': { + }, + 'duration': { + 'disable_nd_probes': { + }, + 'durationFrames': { + }, + 'durationTime': { + } + }, + 'enablePerStreamStats': { + }, + 'enableTCP': { + }, + 'payload': { + 'data': { + }, + 'dataWidth': { + }, + 'type': { + } + }, + 'payloadAdvanced': { + 'udfDataWidth': { + }, + 'udfLength': { + }, + 'udfMode': { + }, + 'udfOffset': { + } + }, + 'rateDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'ramptype': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'sizeDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'mixlen1': { + }, + 'mixlen10': { + }, + 'mixlen2': { + }, + 'mixlen3': { + }, + 'mixlen4': { + }, + 'mixlen5': { + }, + 'mixlen6': { + }, + 'mixlen7': { + }, + 'mixlen8': { + }, + 'mixlen9': { + }, + 'mixweight1': { + }, + 'mixweight10': { + }, + 'mixweight2': { + }, + 'mixweight3': { + }, + 'mixweight4': { + }, + 'mixweight5': { + }, + 'mixweight6': { + }, + 'mixweight7': { + }, + 'mixweight8': { + }, + 'mixweight9': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'slowStart': { + }, + 'slowStartFps': { + }, + 'tuple_gen_seed': { + } + }, + '@type:layer4': { + 'delayStart': { + }, + 'dstPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'packetsPerSession': { + }, + 'payload': { + 'add_timestamp': { + }, + 'data': { + }, + 'http_type': { + }, + 'transport': { + }, + 'type': { + } + }, + 'payloadSizeDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:liveappsim': { + 'app': { + 'fidelity': { + }, + 'removeUnknownSSL': { + }, + 'removeUnknownTcpUdp': { + }, + 'removedns': { + }, + 'replace_streams': { + }, + 'streamsPerSuperflow': { + } + }, + 'concurrencyscalefactor': { + }, + 'delayStart': { + }, + 'inflateDeflate': { + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'liveProfile': { + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + } + }, + 'sfratescalefactor': { + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + }, + 'tputscalefactor': { + } + }, + '@type:playback': { + 'behavior': { + }, + 'delayStart': { + }, + 'file': { + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'modification': { + 'bpfstring': { + }, + 'endpacket': { + }, + 'independentflows': { + }, + 'loopcount': { + }, + 'newport': { + }, + 'originalport': { + }, + 'replay': { + }, + 'serveripinjection': { + }, + 'single': { + }, + 'startpacket': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:security_all': { + 'attackPlan': { + }, + 'attackPlanIterationDelay': { + }, + 'attackPlanIterations': { + }, + 'attackProfile': { + }, + 'attackRetries': { + }, + 'delayStart': { + }, + 'maxAttacksPerSecond': { + }, + 'maxConcurrAttacks': { + }, + 'maxPacketsPerSecond': { + }, + 'randomSeed': { + } + }, + '@type:security_np': { + 'attackPlan': { + }, + 'attackPlanIterationDelay': { + }, + 'attackPlanIterations': { + }, + 'attackProfile': { + }, + 'attackRetries': { + }, + 'delayStart': { + }, + 'randomSeed': { + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'max': { + }, + 'maxPerSecond': { + } + } + }, + '@type:stackscrambler': { + 'delayStart': { + }, + 'dstPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'payload': { + 'data': { + }, + 'transport': { + }, + 'type': { + } + }, + 'payloadSizeDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'prng': { + 'offset': { + }, + 'seed': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'scrambleOptions': { + 'badEthType': { + }, + 'badGTPFlags': { + }, + 'badGTPLen': { + }, + 'badGTPNext': { + }, + 'badGTPNpdu': { + }, + 'badGTPSeqno': { + }, + 'badGTPType': { + }, + 'badICMPCode': { + }, + 'badICMPType': { + }, + 'badIPChecksum': { + }, + 'badIPFlags': { + }, + 'badIPFlowLabel': { + }, + 'badIPFragOffset': { + }, + 'badIPLength': { + }, + 'badIPOptions': { + }, + 'badIPProtocol': { + }, + 'badIPTOS': { + }, + 'badIPTTL': { + }, + 'badIPTotalLength': { + }, + 'badIPVersion': { + }, + 'badL4Checksum': { + }, + 'badL4HeaderLength': { + }, + 'badSCTPChecksum': { + }, + 'badSCTPFlags': { + }, + 'badSCTPLength': { + }, + 'badSCTPType': { + }, + 'badSCTPVerificationTag': { + }, + 'badTCPFlags': { + }, + 'badTCPOptions': { + }, + 'badUrgentPointer': { + }, + 'handshakeTCP': { + }, + 'maxCorruptions': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + 'active': { + }, + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'id': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'operations': { + 'getComponentPreset': [{ + '@type:appsim': { + 'app': { + 'fidelity': { + }, + 'removedns': { + }, + 'replace_streams': { + }, + 'streamsPerSuperflow': { + } + }, + 'delayStart': { + }, + 'experimental': { + 'tcpSegmentsBurst': { + }, + 'unify_l4_bufs': { + } + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'profile': { + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'resources': { + 'expand': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ssl': { + 'client_record_len': { + }, + 'server_record_len': { + }, + 'sslReuseType': { + }, + 'ssl_client_keylog': { + }, + 'ssl_keylog_max_entries': { + }, + 'upgrade': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:clientsim': { + 'app': { + 'fidelity': { + }, + 'removedns': { + }, + 'replace_streams': { + }, + 'streamsPerSuperflow': { + } + }, + 'delayStart': { + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'resources': { + 'expand': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ssl': { + 'client_record_len': { + }, + 'server_record_len': { + }, + 'sslReuseType': { + }, + 'ssl_client_keylog': { + }, + 'ssl_keylog_max_entries': { + }, + 'upgrade': { + } + }, + 'superflow': { + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:layer2': { + 'advanced': { + 'ethTypeField': { + }, + 'ethTypeVal': { + } + }, + 'bidirectional': { + }, + 'delayStart': { + }, + 'duration': { + 'disable_nd_probes': { + }, + 'durationFrames': { + }, + 'durationTime': { + } + }, + 'maxStreams': { + }, + 'payload': { + 'data': { + }, + 'dataWidth': { + }, + 'type': { + } + }, + 'payloadAdvanced': { + 'udfDataWidth': { + }, + 'udfLength': { + }, + 'udfMode': { + }, + 'udfOffset': { + } + }, + 'rateDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'ramptype': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'sizeDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'mixlen1': { + }, + 'mixlen10': { + }, + 'mixlen2': { + }, + 'mixlen3': { + }, + 'mixlen4': { + }, + 'mixlen5': { + }, + 'mixlen6': { + }, + 'mixlen7': { + }, + 'mixlen8': { + }, + 'mixlen9': { + }, + 'mixweight1': { + }, + 'mixweight10': { + }, + 'mixweight2': { + }, + 'mixweight3': { + }, + 'mixweight4': { + }, + 'mixweight5': { + }, + 'mixweight6': { + }, + 'mixweight7': { + }, + 'mixweight8': { + }, + 'mixweight9': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'slowStart': { + }, + 'slowStartFps': { + } + }, + '@type:layer3': { + 'Templates': { + 'TemplateType': { + } + }, + 'addrGenMode': { + }, + 'advancedIPv4': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'optionHeaderData': { + }, + 'optionHeaderField': { + }, + 'tos': { + }, + 'ttl': { + } + }, + 'advancedIPv6': { + 'extensionHeaderData': { + }, + 'extensionHeaderField': { + }, + 'flowLabel': { + }, + 'hopLimit': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'nextHeader': { + }, + 'trafficClass': { + } + }, + 'advancedUDP': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + } + }, + 'bidirectional': { + }, + 'delayStart': { + }, + 'dstPort': { + }, + 'dstPortMask': { + }, + 'duration': { + 'disable_nd_probes': { + }, + 'durationFrames': { + }, + 'durationTime': { + } + }, + 'enableTCP': { + }, + 'maxStreams': { + }, + 'payload': { + 'data': { + }, + 'dataWidth': { + }, + 'type': { + } + }, + 'payloadAdvanced': { + 'udfDataWidth': { + }, + 'udfLength': { + }, + 'udfMode': { + }, + 'udfOffset': { + } + }, + 'randomizeIP': { + }, + 'rateDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'ramptype': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'sizeDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'mixlen1': { + }, + 'mixlen10': { + }, + 'mixlen2': { + }, + 'mixlen3': { + }, + 'mixlen4': { + }, + 'mixlen5': { + }, + 'mixlen6': { + }, + 'mixlen7': { + }, + 'mixlen8': { + }, + 'mixlen9': { + }, + 'mixweight1': { + }, + 'mixweight10': { + }, + 'mixweight2': { + }, + 'mixweight3': { + }, + 'mixweight4': { + }, + 'mixweight5': { + }, + 'mixweight6': { + }, + 'mixweight7': { + }, + 'mixweight8': { + }, + 'mixweight9': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'slowStart': { + }, + 'slowStartFps': { + }, + 'srcPort': { + }, + 'srcPortMask': { + }, + 'syncIP': { + }, + 'udpDstPortMode': { + }, + 'udpSrcPortMode': { + } + }, + '@type:layer3advanced': { + 'Templates': { + 'TemplateType': { + } + }, + 'advancedIPv4': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'optionHeaderData': { + }, + 'optionHeaderField': { + }, + 'tos': { + }, + 'ttl': { + } + }, + 'advancedIPv6': { + 'extensionHeaderData': { + }, + 'extensionHeaderField': { + }, + 'flowLabel': { + }, + 'hopLimit': { + }, + 'lengthField': { + }, + 'lengthVal': { + }, + 'nextHeader': { + }, + 'trafficClass': { + } + }, + 'advancedUDP': { + 'checksumField': { + }, + 'checksumVal': { + }, + 'lengthField': { + }, + 'lengthVal': { + } + }, + 'bidirectional': { + }, + 'delayStart': { + }, + 'duration': { + 'disable_nd_probes': { + }, + 'durationFrames': { + }, + 'durationTime': { + } + }, + 'enablePerStreamStats': { + }, + 'enableTCP': { + }, + 'payload': { + 'data': { + }, + 'dataWidth': { + }, + 'type': { + } + }, + 'payloadAdvanced': { + 'udfDataWidth': { + }, + 'udfLength': { + }, + 'udfMode': { + }, + 'udfOffset': { + } + }, + 'rateDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'ramptype': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'sizeDist': { + 'increment': { + }, + 'max': { + }, + 'min': { + }, + 'mixlen1': { + }, + 'mixlen10': { + }, + 'mixlen2': { + }, + 'mixlen3': { + }, + 'mixlen4': { + }, + 'mixlen5': { + }, + 'mixlen6': { + }, + 'mixlen7': { + }, + 'mixlen8': { + }, + 'mixlen9': { + }, + 'mixweight1': { + }, + 'mixweight10': { + }, + 'mixweight2': { + }, + 'mixweight3': { + }, + 'mixweight4': { + }, + 'mixweight5': { + }, + 'mixweight6': { + }, + 'mixweight7': { + }, + 'mixweight8': { + }, + 'mixweight9': { + }, + 'rate': { + }, + 'type': { + }, + 'unit': { + } + }, + 'slowStart': { + }, + 'slowStartFps': { + }, + 'tuple_gen_seed': { + } + }, + '@type:layer4': { + 'delayStart': { + }, + 'dstPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'packetsPerSession': { + }, + 'payload': { + 'add_timestamp': { + }, + 'data': { + }, + 'http_type': { + }, + 'transport': { + }, + 'type': { + } + }, + 'payloadSizeDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:liveappsim': { + 'app': { + 'fidelity': { + }, + 'removeUnknownSSL': { + }, + 'removeUnknownTcpUdp': { + }, + 'removedns': { + }, + 'replace_streams': { + }, + 'streamsPerSuperflow': { + } + }, + 'concurrencyscalefactor': { + }, + 'delayStart': { + }, + 'inflateDeflate': { + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'liveProfile': { + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + } + }, + 'sfratescalefactor': { + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + }, + 'tputscalefactor': { + } + }, + '@type:playback': { + 'behavior': { + }, + 'delayStart': { + }, + 'file': { + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'modification': { + 'bpfstring': { + }, + 'endpacket': { + }, + 'independentflows': { + }, + 'loopcount': { + }, + 'newport': { + }, + 'originalport': { + }, + 'replay': { + }, + 'serveripinjection': { + }, + 'single': { + }, + 'startpacket': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + '@type:security_all': { + 'attackPlan': { + }, + 'attackPlanIterationDelay': { + }, + 'attackPlanIterations': { + }, + 'attackProfile': { + }, + 'attackRetries': { + }, + 'delayStart': { + }, + 'maxAttacksPerSecond': { + }, + 'maxConcurrAttacks': { + }, + 'maxPacketsPerSecond': { + }, + 'randomSeed': { + } + }, + '@type:security_np': { + 'attackPlan': { + }, + 'attackPlanIterationDelay': { + }, + 'attackPlanIterations': { + }, + 'attackProfile': { + }, + 'attackRetries': { + }, + 'delayStart': { + }, + 'randomSeed': { + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'sessions': { + 'max': { + }, + 'maxPerSecond': { + } + } + }, + '@type:stackscrambler': { + 'delayStart': { + }, + 'dstPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'ip': { + 'tos': { + }, + 'ttl': { + } + }, + 'ip6': { + 'flowlabel': { + }, + 'hop_limit': { + }, + 'traffic_class': { + } + }, + 'loadprofile': { + 'label': { + }, + 'name': { + } + }, + 'payload': { + 'data': { + }, + 'transport': { + }, + 'type': { + } + }, + 'payloadSizeDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'prng': { + 'offset': { + }, + 'seed': { + } + }, + 'rampDist': { + 'down': { + }, + 'downBehavior': { + }, + 'steady': { + }, + 'steadyBehavior': { + }, + 'synRetryMode': { + }, + 'up': { + }, + 'upBehavior': { + } + }, + 'rampUpProfile': { + 'increment': { + }, + 'interval': { + }, + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'rateDist': { + 'max': { + }, + 'min': { + }, + 'scope': { + }, + 'type': { + }, + 'unit': { + }, + 'unlimited': { + } + }, + 'scrambleOptions': { + 'badEthType': { + }, + 'badGTPFlags': { + }, + 'badGTPLen': { + }, + 'badGTPNext': { + }, + 'badGTPNpdu': { + }, + 'badGTPSeqno': { + }, + 'badGTPType': { + }, + 'badICMPCode': { + }, + 'badICMPType': { + }, + 'badIPChecksum': { + }, + 'badIPFlags': { + }, + 'badIPFlowLabel': { + }, + 'badIPFragOffset': { + }, + 'badIPLength': { + }, + 'badIPOptions': { + }, + 'badIPProtocol': { + }, + 'badIPTOS': { + }, + 'badIPTTL': { + }, + 'badIPTotalLength': { + }, + 'badIPVersion': { + }, + 'badL4Checksum': { + }, + 'badL4HeaderLength': { + }, + 'badSCTPChecksum': { + }, + 'badSCTPFlags': { + }, + 'badSCTPLength': { + }, + 'badSCTPType': { + }, + 'badSCTPVerificationTag': { + }, + 'badTCPFlags': { + }, + 'badTCPOptions': { + }, + 'badUrgentPointer': { + }, + 'handshakeTCP': { + }, + 'maxCorruptions': { + } + }, + 'sessions': { + 'allocationOverride': { + }, + 'closeFast': { + }, + 'emphasis': { + }, + 'engine': { + }, + 'max': { + }, + 'maxActive': { + }, + 'maxPerSecond': { + }, + 'openFast': { + }, + 'statDetail': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'targetPerSecond': { + } + }, + 'srcPortDist': { + 'max': { + }, + 'min': { + }, + 'type': { + } + }, + 'tcp': { + 'ack_every_n': { + }, + 'add_timestamps': { + }, + 'aging_time': { + }, + 'aging_time_data_type': { + }, + 'delay_acks': { + }, + 'delay_acks_ms': { + }, + 'disable_ack_piggyback': { + }, + 'dynamic_receive_window_size': { + }, + 'ecn': { + }, + 'handshake_data': { + }, + 'initial_receive_window': { + }, + 'mss': { + }, + 'psh_every_segment': { + }, + 'raw_flags': { + }, + 'reset_at_end': { + }, + 'retries': { + }, + 'retry_quantum_ms': { + }, + 'shutdown_data': { + }, + 'syn_data_padding': { + }, + 'tcp_4_way_close': { + }, + 'tcp_connect_delay_ms': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'tcp_window_scale': { + } + } + }, + 'active': { + }, + 'author': { + }, + 'clazz': { + }, + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'id': { + }, + 'label': { + }, + 'lockedBy': { + }, + 'originalPreset': { + }, + 'originalPresetLabel': { + }, + 'reportResults': { + }, + 'revision': { + }, + 'tags': [{ + 'domainId': { + 'external': { + }, + 'iface': { + }, + 'name': { + } + }, + 'id': { + }, + 'type': { + } + }], + 'timeline': { + 'timesegment': [{ + 'label': { + }, + 'size': { + }, + 'type': { + } + }] + }, + 'type': { + } + }], + 'getComponentPresetNames': [{ + }] + }, + 'originalPreset': { + }, + 'originalPresetLabel': { + }, + 'reportResults': { + }, + 'revision': { + }, + 'tags': [{ + 'domainId': { + 'external': { + }, + 'iface': { + }, + 'name': { + } + }, + 'id': { + }, + 'type': { + } + }], + 'timeline': { + 'timesegment': [{ + 'label': { + }, + 'size': { + }, + 'type': { + } + }] + }, + 'type': { + } + }], + 'createdBy': { + }, + 'createdOn': { + }, + 'description': { + }, + 'duration': { + }, + 'dut': { + }, + 'label': { + }, + 'lastrun': { + }, + 'lastrunby': { + }, + 'lockedBy': { + }, + 'name': { + }, + 'network': { + }, + 'operations': { + 'add': [{ + }], + 'addOpenRecent': [{ + }], + 'clone': [{ + }], + 'delete': [{ + }], + 'exportModel': [{ + }], + 'flowExceptions': [{ + 'component': { + }, + 'componentLabel': { + }, + 'componentType': { + 'label': { + } + }, + 'dataIndex': { + }, + 'group': { + }, + 'iface': { + }, + 'params': { + }, + 'protocol': { + }, + 'slot': { + }, + 'vlan': { + } + }], + 'getRecent': [{ + }], + 'importModel': [{ + }], + 'load': [{ + }], + 'new': [{ + }], + 'realTimeStats': [{ + }], + 'remove': [{ + }], + 'run': [{ + }], + 'save': [{ + }], + 'saveAs': [{ + }], + 'search': [{ + }], + 'stopRun': [{ + }], + 'testComponentDefinition': [{ + }], + 'validate': [{ + 'fixAction': { + 'content': { + }, + 'key': { + } + }, + 'fixable': { + }, + 'message': { + 'content': { + }, + 'key': { + } + }, + 'result': { + } + }] + }, + 'result': { + }, + 'revision': { + }, + 'sharedComponentSettings': { + 'maxFlowCreationRate': { + 'content': { + }, + 'current': { + }, + 'original': { + } + }, + 'maximumConcurrentFlows': { + 'content': { + }, + 'current': { + }, + 'original': { + } + }, + 'samplePeriod': { + 'content': { + }, + 'current': { + }, + 'original': { + } + }, + 'totalAddresses': { + 'content': { + }, + 'current': { + }, + 'original': { + } + }, + 'totalAttacks': { + 'content': { + }, + 'current': { + }, + 'original': { + } + }, + 'totalBandwidth': { + 'content': { + }, + 'current': { + }, + 'original': { + } + } + }, + 'summaryInfo': { + 'requiredMTU': { + }, + 'totalMacAddresses': { + }, + 'totalSubnets': { + }, + 'totalUniqueStrikes': { + }, + 'totalUniqueSuperflows': { + } + }, + 'testComponentTypesDescription': [{ + 'description': { + }, + 'label': { + }, + 'name': { + }, + 'template': { + }, + 'type': { + } + }] + }, + 'topology': { + 'chain': { + 'name': { + }, + 'remotes': [{ + 'host': { + }, + 'state': { + } + }] + }, + 'cnState': [{ + 'cnId': { + }, + 'cnName': { + }, + 'cnSerial': { + }, + 'cnSlotNo': { + }, + 'firmwareUpgrade': { + }, + 'licensed': { + }, + 'marketingName': { + }, + 'opModes': [{ + 'active': { + }, + 'id': { + }, + 'label': { + }, + 'name': { + } + }], + 'state': { + } + }], + 'ixos': { + }, + 'ixoslicensed': { + }, + 'model': { + }, + 'operations': { + 'addPortNote': [{ + }], + 'addResourceNote': [{ + }], + 'exportCapture': [{ + }], + 'getFanoutModes': [{ + 'cardModel': { + }, + 'fanout': [{ + 'fanoutId': { + }, + 'name': { + } + }] + }], + 'getPortAvailableModes': [{ + 'modes': [{ + 'fanoutId': { + }, + 'name': { + } + }], + 'port': { + }, + 'slot': { + } + }], + 'reboot': [{ + }], + 'rebootComputeNode': [{ + }], + 'releaseAllCnResources': [{ + }], + 'releaseResource': [{ + }], + 'releaseResources': [{ + }], + 'reserve': [{ + }], + 'reserveAllCnResources': [{ + }], + 'reserveResource': [{ + }], + 'reserveResources': [{ + }], + 'run': [{ + }], + 'setCardFanout': [{ + }], + 'setCardMode': [{ + }], + 'setCardSpeed': [{ + }], + 'setPerfAcc': [{ + }], + 'setPortFanoutMode': [{ + }], + 'setPortSettings': [{ + }], + 'softReboot': [{ + }], + 'stopRun': [{ + }], + 'unreserve': [{ + }] + }, + 'resourceOverview': { + 'resourceOverviewList': [{ + 'l23Count': { + }, + 'l47Count': { + }, + 'portCount': { + }, + 'userAndGroup': { + } + }] + }, + 'runningTest': [{ + 'capturing': { + }, + 'completed': { + }, + 'currentTest': { + }, + 'initProgress': { + }, + 'label': { + }, + 'phase': { + }, + 'port': [{ + }], + 'progress': { + }, + 'reservedEngines': [{ + }], + 'result': { + }, + 'runtime': { + }, + 'state': { + }, + 'testid': { + 'host': { + }, + 'iteration': { + }, + 'name': { + } + }, + 'timeRemaining': { + }, + 'user': { + } + }], + 'serialNumber': { + }, + 'slot': [{ + 'firmwareUpgrade': { + }, + 'fpga': [{ + 'group': { + }, + 'id': { + }, + 'name': { + }, + 'note': { + }, + 'reservedBy': { + }, + 'resourceType': { + }, + 'state': { + } + }], + 'id': { + }, + 'interfaceCount': { + }, + 'mode': { + }, + 'model': { + }, + 'np': [{ + 'cnId': { + }, + 'group': { + }, + 'id': { + }, + 'name': { + }, + 'note': { + }, + 'reservedBy': { + }, + 'resourceType': { + }, + 'state': { + } + }], + 'opModes': [{ + 'active': { + }, + 'id': { + }, + 'label': { + }, + 'name': { + } + }], + 'port': [{ + 'active': { + }, + 'auto': { + }, + 'capture': { + }, + 'capturing': { + }, + 'currentMode': { + }, + 'exportProgress': { + }, + 'fullduplex': { + }, + 'group': { + }, + 'id': { + }, + 'ifmacaddr': { + }, + 'ifname': { + }, + 'ignorepause': { + }, + 'link': { + }, + 'media': { + }, + 'model': { + }, + 'mtu': { + }, + 'note': { + }, + 'number': { + }, + 'owner': { + }, + 'pcap': [{ + 'rxbytes': { + }, + 'rxframes': { + }, + 'txbytes': { + }, + 'txframes': { + } + }], + 'portGroup': { + }, + 'possibleModes': { + }, + 'precoder': { + }, + 'reservedBy': { + }, + 'speed': { + }, + 'state': { + } + }], + 'remoteInfo': { + 'host': { + }, + 'slotId': { + }, + 'state': { + } + }, + 'serialNumber': { + }, + 'state': { + } + }] + } + } + + def __call__(cls, *args, **kwds): + return DataModelMeta._decorate_model_object(type.__call__(cls, *args, **kwds)) + + @staticmethod + def _decorate_model_object(obj): + obj_name = obj._name + (data_model_path, data_model) = DataModelMeta._get_from_model(obj.__data_model_path__()) + if data_model is None: + return obj + if isinstance(data_model, list): + setattr(obj, '_getitem_', lambda x: DataModelProxy(wrapper=obj._wrapper, name=str(x), path=obj.__full_path__(), model_path=obj.__data_model_path__())) + if data_model_path.endswith(obj_name): + DataModelMeta._decorate_model_object_operations(data_model[0], data_model_path, obj) + return obj + else: + data_model = data_model[0] + DataModelMeta._decorate_model_object_operations(data_model, data_model_path, obj) + for key in data_model: + if key.startswith("@") or key == 'operations': + continue + setattr(obj, key, DataModelProxy(wrapper=obj._wrapper, name=key, path=obj.__full_path__(), model_path=obj.__data_model_path__())) + if obj_name not in data_model: + for key in data_model: + if not key.startswith("@") or ":" not in key: + continue + [fieldName, fieldValue] = key.split(":") + fieldName = fieldName.replace("@", "") + try: + if obj.__cached_get__(fieldName) != fieldValue: + continue + except: + continue + for extField in data_model[key]: + ext_path = obj.__full_path__() + ext_dm_path = obj.__data_model_path__() + "/" + key + setattr(obj, extField, DataModelProxy(wrapper=obj._wrapper, name=extField, path=ext_path, model_path=ext_dm_path)) + return obj + + @staticmethod + def _decorate_model_object_operations(data_model, data_model_path, obj): + if 'operations' not in data_model: + return + for operation in data_model['operations']: + if obj.__full_path__().replace("/", "") == '': + continue + method_name = data_model_path.replace("/", "_") + '_operations_' + operation + setattr(obj, operation, obj._wrapper.__getattribute__(method_name).__get__(obj)) + setattr(getattr(obj, operation).__func__, '__name__', operation) + + @staticmethod + def _get_from_model(path): + model_data = DataModelMeta._dataModel + model_path = "" + for path_part in path.split('/'): + if len(path_part) == 0: continue + if isinstance(model_data, list): + model_data = model_data[0] + continue + if path_part not in model_data: return (None, None) + model_data = model_data[path_part] + model_path = model_path + "/" + path_part + return (model_path, model_data) + +class DataModelProxy(object, metaclass = DataModelMeta): + + def __init__(self, wrapper, name, path='', model_path=None): + self.__cache = {} + self._wrapper = wrapper + self._name = name + self._path = path + if model_path is None: + self._model_path = self._path + else: + self._model_path = model_path + + def __cached_get__(self, field): + if field not in self.__cache: self.__cache[field] = self._wrapper._BPS__get(self.__data_model_path__()+"/"+field) + return self.__cache[field] + + def __data_model_path__(self): + return '%s/%s' % (self._model_path, self._name) + + def __full_path__(self): + return '%s/%s' % (self._path, self._name) + + def __getitem__(self, item): + return self._getitem_(item) + + def __repr__(self): + return 'proxy object for \'%s\' ' % (self.__url__()) + + def __url__(self): + return 'https://%s/bps/api/v2/core%s' % (self._wrapper.host, self.__full_path__()) + + def delete(self): + return self._wrapper._BPS__delete(self._path+'/'+self._name) + + def get(self, responseDepth=None, **kwargs): + return self._wrapper._BPS__get(self._path+'/'+self._name, responseDepth, **kwargs) + + def help(self): + doc_data = self._wrapper._BPS__options(self._path+'/'+self._name) + if doc_data and 'custom' in doc_data: + doc_data = doc_data['custom'] + if doc_data and 'description' in doc_data: + print(doc_data['description']) + + def patch(self, value): + return self._wrapper._BPS__patch(self._path+'/'+self._name, value) + + def put(self, value): + return self._wrapper._BPS__put(self._path+'/'+self._name, value) + + def set(self, value): + return self.patch(value) diff --git a/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/s06_security_rest_example.bpt b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/s06_security_rest_example.bpt new file mode 100644 index 0000000..78c58f4 --- /dev/null +++ b/RestApi/Python/RestApi_v2/SampleScripts/Runtime_Strike_Update_Sample/s06_security_rest_example.bpt @@ -0,0 +1 @@ +1.512New StrikesNew Strikes is a dynamic list, containing the new strikes from the current ATI release.CreatedStrikeList120Default evasion settingsdefault000000:00:00100100100100100100012221500/strikes/malware/malware_e26eeed42cd54e359dae49bd0ae48a3c.xml/strikes/exploits/scada/7t_scada_dir_traversal_file_read_write.xml/strikes/generic/ixia/apache_struts_2_conversionerrorinterceptor_ognl_script_injection_attack-public-sec-consult-1.xml/strikes/exploits/webapp/exec/cve_2013_4212_apache_roller_ognl_code_exec.xml/strikes/exploits/apache/cve_2021_45105_apache_log4j_StrSubstitutor_Uncontrolled_Recursion.xml/strikes/exploits/webapp/dos/cve_2021_44224_apache_httpd_mod_proxy_null_pointer_deref_dos.xml/strikes/exploits/apache/apache_win32_batch_file_cmd_append.xml/strikes/denial/apache/subproducts/cve_2020_17525_apache_subversion_mod_authz_svn_authzsvnreposrelativeaccessfile_null_pointer_dereference.xml/strikes/exploits/apache/apache_solr_velocity_template_rce.xml/strikes/exploits/apache/cve_2012_0392_apache_struts2_cookie_ognl_command_execution.xml/strikes/exploits/apache/cve_2014_0114_apache_struts_classloader_security_bypass.xml/strikes/exploits/httpd/cve_2011_3368_apache_modproxy_auth_bypass.xml \ No newline at end of file diff --git a/RestApi/Python/RestApi_v2/SampleScripts/create_bps_execution_based_on_json_definition/sample_usage_create_and_run_test_json.py b/RestApi/Python/RestApi_v2/SampleScripts/create_bps_execution_based_on_json_definition/sample_usage_create_and_run_test_json.py index 52ca52e..f3cafd5 100644 --- a/RestApi/Python/RestApi_v2/SampleScripts/create_bps_execution_based_on_json_definition/sample_usage_create_and_run_test_json.py +++ b/RestApi/Python/RestApi_v2/SampleScripts/create_bps_execution_based_on_json_definition/sample_usage_create_and_run_test_json.py @@ -25,9 +25,6 @@ # bps_system = '' # bpsuser = 'bps user' # bpspass = 'bps pass' -bps_system = '10.36.83.188' -bpsuser = 'admin' -bpspass = 'admin' file = os.path.join(os.path.dirname(__file__), 'http_https.json') slot_number = 5 diff --git a/Virtualization/Deployment/BreakingPoint_in_GoogleCloud_ReadMe.md b/Virtualization/Deployment/BreakingPoint_in_GoogleCloud_ReadMe.md index 6545ae9..0c1c4b6 100644 --- a/Virtualization/Deployment/BreakingPoint_in_GoogleCloud_ReadMe.md +++ b/Virtualization/Deployment/BreakingPoint_in_GoogleCloud_ReadMe.md @@ -1,2 +1,2 @@ -[https://github.com/OpenIxia/gcp-bps](https://github.com/OpenIxia/gcp-bps) \ No newline at end of file +[https://github.com/Keysight/bpsve/tree/main/google-cloud-platform](https://github.com/Keysight/bpsve/tree/main/google-cloud-platform) \ No newline at end of file diff --git a/Virtualization/Deployment/BreakingPoint_in_Other_Cloud_Enviroments_ReadMe.md b/Virtualization/Deployment/BreakingPoint_in_Other_Cloud_Enviroments_ReadMe.md new file mode 100644 index 0000000..0c1c4b6 --- /dev/null +++ b/Virtualization/Deployment/BreakingPoint_in_Other_Cloud_Enviroments_ReadMe.md @@ -0,0 +1,2 @@ + +[https://github.com/Keysight/bpsve/tree/main/google-cloud-platform](https://github.com/Keysight/bpsve/tree/main/google-cloud-platform) \ No newline at end of file