diff --git a/RestApi/Python/RestApi_v2/Modules/bps_restpy/bps.py b/RestApi/Python/RestApi_v2/Modules/bps_restpy/bps.py index def0a05..1e23913 100755 --- a/RestApi/Python/RestApi_v2/Modules/bps_restpy/bps.py +++ b/RestApi/Python/RestApi_v2/Modules/bps_restpy/bps.py @@ -24,6 +24,6 @@ import sys,os #sys.path.insert(0,os.path.abspath(__file__+"/../..")) if sys.version_info[0] >= 3: - from .restPyWrapper3 import BPS, pp + from restPyWrapper3 import BPS, pp else: from restPyWrapper import BPS, pp \ No newline at end of file diff --git a/RestApi/Python/RestApi_v2/Modules/bps_restpy/restPyWrapper.py b/RestApi/Python/RestApi_v2/Modules/bps_restpy/restPyWrapper.py index 10695fe..97ffedd 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: 9.37.0.129 +### this BPS REST API wrapper is generated for version: 9.38.1.27 class BPS(object): def __init__(self, host, user, password, checkVersion=True): @@ -25,23 +25,24 @@ def __init__(self, host, user, password, checkVersion=True): self.sessionId = None self.session = requests.Session() self.session.mount('https://', TlsAdapter()) - self.clientVersion = '9.37' + self.clientVersion = '9.38' self.serverVersions = None self.checkVersion = checkVersion - self.testmodel = DataModelProxy(wrapper=self, name='testmodel') - self.superflow = DataModelProxy(wrapper=self, name='superflow') - self.loadProfile = DataModelProxy(wrapper=self, name='loadProfile') self.strikeList = DataModelProxy(wrapper=self, name='strikeList') - self.appProfile = DataModelProxy(wrapper=self, name='appProfile') - self.capture = DataModelProxy(wrapper=self, name='capture') self.administration = DataModelProxy(wrapper=self, name='administration') - self.network = DataModelProxy(wrapper=self, name='network') - self.topology = DataModelProxy(wrapper=self, name='topology') + self.statistics = DataModelProxy(wrapper=self, name='statistics') + self.capture = DataModelProxy(wrapper=self, name='capture') self.evasionProfile = DataModelProxy(wrapper=self, name='evasionProfile') + self.loadProfile = DataModelProxy(wrapper=self, name='loadProfile') + self.topology = DataModelProxy(wrapper=self, name='topology') + self.testmodel = DataModelProxy(wrapper=self, name='testmodel') + self.results = DataModelProxy(wrapper=self, name='results') + self.superflow = DataModelProxy(wrapper=self, name='superflow') + self.network = DataModelProxy(wrapper=self, name='network') self.strikes = DataModelProxy(wrapper=self, name='strikes') self.reports = DataModelProxy(wrapper=self, name='reports') - self.statistics = DataModelProxy(wrapper=self, name='statistics') - self.results = DataModelProxy(wrapper=self, name='results') + self.appProfile = DataModelProxy(wrapper=self, name='appProfile') + self.remote = DataModelProxy(wrapper=self, name='remote') ### connect to the system def __connect(self): @@ -202,50 +203,105 @@ def _export(self, path, **kwargs): else: raise Exception({'status_code': r.status_code, 'content': self.__json_load(r)}) - ### Deletes a given Strike List from the database. + ### 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 _strikeList_operations_delete(self, name): + def _superflow_operations_importResource(self, name, filename, force, type='resource'): """ - Deletes a given Strike List from the database. - :param name (string): The name of the Strike List to be deleted. + 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._post('/strikeList/operations/delete', **{'name': name}) + return self._wrapper._import('/superflow/operations/importResource', **{'name': name, 'filename': filename, 'force': force, 'type': type}) + + ### 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}) + + ### 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}) ### null @staticmethod - def _evasionProfile_operations_search(self, searchString, limit, sort, sortorder): + def _capture_operations_search(self, searchString, limit, sort, sortorder): """ - :param searchString (string): Search evasion profile name matching the string given. + :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. (name/createdBy ...) + :param sort (string): Parameter to sort by. :param sortorder (string): The sort order (ascending/descending) - :return results (list): + :return item (list): list of object with fields name (string): - label (string): - createdBy (string): - revision (number): - description (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('/evasionProfile/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + return self._wrapper._post('/capture/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) - ### Stops the test run. + ### 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 _testmodel_operations_stopRun(self, runid): + def _strikeList_operations_exportStrikeList(self, name, filepath): """ - Stops the test run. - :param runid (number): Test RUN ID + 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._post('/testmodel/operations/stopRun', **{'runid': runid}) + return self._wrapper._export('/strikeList/operations/exportStrikeList', **{'name': name, 'filepath': filepath}) - ### Stops the test run. + ### Imports an ATI License file (.lic) on a hardware platform. This operation is NOT recommended to be used on BPS Virtual platforms. @staticmethod - def _topology_operations_stopRun(self, runid): + def _administration_atiLicensing_operations_importAtiLicense(self, filename, name): """ - Stops the test run. - :param runid (number): Test RUN ID + 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._post('/topology/operations/stopRun', **{'runid': runid}) + return self._wrapper._import('/administration/atiLicensing/operations/importAtiLicense', **{'filename': filename, 'name': name}) + + ### 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}) + + ### 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}) ### 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 @@ -260,166 +316,175 @@ def _reports_operations_exportReport(self, filepath, runid, reportType, sectionI """ return self._wrapper._export('/reports/operations/exportReport', **{'filepath': filepath, 'runid': runid, 'reportType': reportType, 'sectionIds': sectionIds, 'dataType': dataType}) - ### Get available port fan-out modes. + ### Gets the card Fanout modes of a board. @staticmethod - def _topology_operations_getPortAvailableModes(self, cardId, port): + def _topology_operations_getFanoutModes(self, cardId): """ - 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. + 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/getPortAvailableModes', **{'cardId': cardId, 'port': port}) + return self._wrapper._post('/topology/operations/getFanoutModes', **{'cardId': cardId}) - ### Adds a flow to the current working SuperFlow + ### Saves the current working Application Profiles and gives it a new name. @staticmethod - def _superflow_operations_addFlow(self, flowParams): + def _superflow_operations_saveAs(self, name, force): """ - 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. + 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/addFlow', **{'flowParams': flowParams}) + return self._wrapper._post('/superflow/operations/saveAs', **{'name': name, 'force': force}) - ### Reserves the specified number of resources of given type. + ### Saves the working Super Flow using the current name @staticmethod - def _topology_operations_reserveResources(self, group, count, resourceType): + def _superflow_operations_save(self, name=None, force=True): """ - Reserves the specified number of resources of given type. - :param group (number): - :param count (number): - :param resourceType (string): + 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('/topology/operations/reserveResources', **{'group': group, 'count': count, 'resourceType': resourceType}) + return self._wrapper._post('/superflow/operations/save', **{'name': name, 'force': force}) - ### Lists all the component presets names. + ### Search Networks. @staticmethod - def _testmodel_component_operations_getComponentPresetNames(self, type='None'): + def _network_operations_search(self, searchString, userid, clazz, sortorder, sort, limit, offset): """ - 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 result (list): + 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 - id (string): + name (string): label (string): - type (string): + createdBy (string): + revision (number): description (string): + type (enum): """ - return self._wrapper._post('/testmodel/component/operations/getComponentPresetNames', **{'type': type}) + return self._wrapper._post('/network/operations/search', **{'searchString': searchString, 'userid': userid, 'clazz': clazz, 'sortorder': sortorder, 'sort': sort, 'limit': limit, 'offset': offset}) - ### Load an existing Application Profile and sets it as the current one. + ### Adds an action to the current working SuperFlow @staticmethod - def _appProfile_operations_load(self, template): + def _superflow_operations_addAction(self, flowid, type, actionid, source): """ - Load an existing Application Profile and sets it as the current one. - :param template (string): The name of the template application profile + 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('/appProfile/operations/load', **{'template': template}) + return self._wrapper._post('/superflow/operations/addAction', **{'flowid': flowid, 'type': type, 'actionid': actionid, 'source': source}) - ### Creates a new Application Profile. + ### Load an existing Strike List and sets it as the current one. @staticmethod - def _appProfile_operations_new(self, template=None): + def _strikeList_operations_load(self, template): """ - Creates a new Application Profile. - :param template (string): This argument must remain unset. Do not set any value for it. + 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('/appProfile/operations/new', **{'template': template}) + return self._wrapper._post('/strikeList/operations/load', **{'template': template}) - ### Imports a list of strikes residing in a file. + ### Creates a new Strike List. @staticmethod - def _strikeList_operations_importStrikeList(self, name, filename, force): + def _strikeList_operations_new(self, template=None): """ - 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. + Creates a new Strike List. + :param template (string): The name of the template. In this case will be empty. """ - return self._wrapper._import('/strikeList/operations/importStrikeList', **{'name': name, 'filename': filename, 'force': force}) - - ### null - @staticmethod - def _loadProfile_operations_save(self): - return self._wrapper._post('/loadProfile/operations/save', **{}) + return self._wrapper._post('/strikeList/operations/new', **{'template': template}) - ### Save the active editing LoadProfile under specified name + ### 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 _loadProfile_operations_saveAs(self, name): + def _remote_operations_connectChassis(self, address, remote): """ - Save the active editing LoadProfile under specified name - :param name (string): + 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('/loadProfile/operations/saveAs', **{'name': name}) + return self._wrapper._post('/remote/operations/connectChassis', **{'address': address, 'remote': remote}) - ### 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. + ### list active sessions @staticmethod - def _testmodel_operations_importModel(self, name, filename, force): + def _administration_sessions_operations_list(self): """ - 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. + list active sessions + :return result (list): """ - return self._wrapper._import('/testmodel/operations/importModel', **{'name': name, 'filename': filename, 'force': force}) + return self._wrapper._post('/administration/sessions/operations/list', **{}) - ### 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. + ### Add a host to the current working Superflow @staticmethod - def _appProfile_operations_importAppProfile(self, name, filename, force): + def _superflow_operations_addHost(self, hostParams, 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. + 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._import('/appProfile/operations/importAppProfile', **{'name': name, 'filename': filename, 'force': force}) + return self._wrapper._post('/superflow/operations/addHost', **{'hostParams': hostParams, 'force': 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. + ### Deletes a specified load profile from the database. @staticmethod - def _network_operations_importNetwork(self, name, filename, force): + def _loadProfile_operations_delete(self, name): """ - 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. + Deletes a specified load profile from the database. + :param name (string): The name of the loadProfile object to delete. """ - return self._wrapper._import('/network/operations/importNetwork', **{'name': name, 'filename': filename, 'force': force}) + return self._wrapper._post('/loadProfile/operations/delete', **{'name': name}) ### null @staticmethod - def _network_operations_list(self, userid, clazz, sortorder, sort, limit, offset): + def _testmodel_operations_search(self, searchString, limit, sort, sortorder): """ - :param userid (string): - :param clazz (string): - :param sortorder (string): - :param sort (string): - :param limit (number): - :param offset (number): - :return returnArg (list): + :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): - type (string): - author (string): - createdOn (string): + label (string): + createdBy (string): + network (string): + duration (number): + description (string): """ - return self._wrapper._post('/network/operations/list', **{'userid': userid, 'clazz': clazz, 'sortorder': sortorder, 'sort': sort, 'limit': limit, 'offset': offset}) + return self._wrapper._post('/testmodel/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) - ### Search Networks. + ### 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 _network_operations_search(self, searchString, userid, clazz, sortorder, sort, limit, offset): + def _results_operations_getGroups(self, name, dynamicEnums=True, includeOutputs=True): """ - 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 results (list): + 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 _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): @@ -427,286 +492,171 @@ def _network_operations_search(self, searchString, userid, clazz, sortorder, sor revision (number): description (string): """ - return self._wrapper._post('/network/operations/search', **{'searchString': searchString, 'userid': userid, 'clazz': clazz, 'sortorder': sortorder, 'sort': sort, 'limit': limit, 'offset': offset}) + return self._wrapper._post('/evasionProfile/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) - ### 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. + ### Load an existing Evasion Profile and sets it as the current one. @staticmethod - def _topology_operations_exportCapture(self, filepath, args): + def _evasionProfile_operations_load(self, template): """ - 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. + 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._export('/topology/operations/exportCapture', **{'filepath': filepath, 'args': args}) + return self._wrapper._post('/evasionProfile/operations/load', **{'template': template}) - ### Deletes a Test Report from the database. + ### Creates a new Evasion Profile. @staticmethod - def _reports_operations_delete(self, runid): + def _evasionProfile_operations_new(self, template=None): """ - Deletes a Test Report from the database. - :param runid (number): The test run id that generated the report you want to delete. + Creates a new Evasion Profile. + :param template (string): The name should be empty to create a new object. """ - return self._wrapper._post('/reports/operations/delete', **{'runid': runid}) + return self._wrapper._post('/evasionProfile/operations/new', **{'template': template}) - ### Adds a note to given port. + ### Reboots the metwork processors on the given card card. Only available for APS cards. @staticmethod - def _topology_operations_addPortNote(self, interface, note): + def _topology_operations_softReboot(self, board, cnId): """ - 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. + 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/addPortNote', **{'interface': interface, 'note': note}) + return self._wrapper._post('/topology/operations/softReboot', **{'board': board, 'cnId': cnId}) - ### Removes a strike from the current working Strike List.([{id: 'bb/c/d'}, {id: 'aa/f/g'}]) + ### Returns stats series for a given component group stat output for a given timestamp @staticmethod - def _strikeList_operations_remove(self, strike): + def _results_operations_getHistoricalSeries(self, runid, componentid, dataindex, group): """ - 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. + 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}) + + ### 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('/strikeList/operations/remove', **{'strike': strike}) + return self._wrapper._post('/strikes/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder, 'offset': offset}) - ### Adds a note to given resource. + ### null @staticmethod - def _topology_operations_addResourceNote(self, resourceId, resourceType): + def _administration_userSettings_operations_setAutoReserve(self, resourceType, units): """ - Adds a note to given resource. - :param resourceId (string): Resource Id. - :param resourceType (string): Resource type. + :param resourceType (string): Valid values: >l47< or >l23< + :param units (number): """ - return self._wrapper._post('/topology/operations/addResourceNote', **{'resourceId': resourceId, 'resourceType': resourceType}) + return self._wrapper._post('/administration/userSettings/operations/setAutoReserve', **{'resourceType': resourceType, 'units': units}) - ### Deletes a specified load profile from the database. + ### Deletes a given Evasion Profile from the database. @staticmethod - def _loadProfile_operations_delete(self, name): + def _evasionProfile_operations_delete(self, name): """ - Deletes a specified load profile from the database. - :param name (string): The name of the loadProfile object to delete. + Deletes a given Evasion Profile from the database. + :param name (string): The name of the profile to delete. """ - return self._wrapper._post('/loadProfile/operations/delete', **{'name': name}) + return self._wrapper._post('/evasionProfile/operations/delete', **{'name': name}) - ### Add a host to the current working Superflow + ### Gives abbreviated information about all Canned Flow Names. @staticmethod - def _superflow_operations_addHost(self, hostParams, force): + def _superflow_flows_operations_getCannedFlows(self): """ - 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. + 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/operations/addHost', **{'hostParams': hostParams, 'force': force}) + return self._wrapper._post('/superflow/flows/operations/getCannedFlows', **{}) - ### null + ### Deletes a given Strike List from the database. @staticmethod - def _reports_operations_search(self, searchString, limit, sort, sortorder): + def _strikeList_operations_delete(self, name): """ - :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 + Deletes a given Strike List from the database. + :param name (string): The name of the Strike List to be deleted. """ - return self._wrapper._post('/reports/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + return self._wrapper._post('/strikeList/operations/delete', **{'name': name}) - ### Retrieves the real time statistics for the running test, by giving the run id. + ### Load an existing test model template. @staticmethod - def _testmodel_operations_realTimeStats(self, runid, rtsgroup, numSeconds, numDataPoints=1): + def _testmodel_operations_load(self, template): """ - 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): + Load an existing test model template. + :param template (string): The name of the template testmodel """ - return self._wrapper._post('/testmodel/operations/realTimeStats', **{'runid': runid, 'rtsgroup': rtsgroup, 'numSeconds': numSeconds, 'numDataPoints': numDataPoints}) + return self._wrapper._post('/testmodel/operations/load', **{'template': template}) - ### Reserves all l47 resources of given compute node id. + ### Creates a new Test Model @staticmethod - def _topology_operations_reserveAllCnResources(self, group, cnId): + def _testmodel_operations_new(self, template=None): """ - Reserves all l47 resources of given compute node id. - :param group (number): - :param cnId (string): + Creates a new Test Model + :param template (string): The name of the template. In this case will be empty. """ - return self._wrapper._post('/topology/operations/reserveAllCnResources', **{'group': group, 'cnId': cnId}) + return self._wrapper._post('/testmodel/operations/new', **{'template': template}) - ### Deletes a given Super Flow from the database. + ### Reserves the specified resource of the given type. @staticmethod - def _superflow_operations_delete(self, name): + def _topology_operations_reserveResource(self, group, resourceId, resourceType): """ - Deletes a given Super Flow from the database. - :param name (string): The name of the Super Flow. + Reserves the specified resource of the given type. + :param group (number): + :param resourceId (number): + :param resourceType (string): """ - return self._wrapper._post('/superflow/operations/delete', **{'name': name}) + return self._wrapper._post('/topology/operations/reserveResource', **{'group': group, 'resourceId': resourceId, 'resourceType': resourceType}) ### null @staticmethod - def _superflow_flows_operations_getFlowChoices(self, id, name): + def _topology_operations_unreserve(self, unreservation): """ - :param id (number): The flow id. - :param name (string): The flow type/name. - :return result (list): + :param unreservation (list): + list of object with fields + slot (number): + port (number): """ - return self._wrapper._post('/superflow/flows/operations/getFlowChoices', **{'id': id, 'name': name}) + return self._wrapper._post('/topology/operations/unreserve', **{'unreservation': unreservation}) - ### 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. + ### Adds a list of SuperFlow to the current working Application Profile. ([{'superflow':'adadad', 'weight':'20'},{..}]) @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}) - - ### 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}) - - ### 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}) - - ### 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): + def _appProfile_operations_add(self, add): """ - 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 results (list): + Adds a list of SuperFlow to the current working Application Profile. ([{'superflow':'adadad', 'weight':'20'},{..}]) + :param add (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}) - - ### 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}) - - ### 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}) - - ### 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}) - - ### 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}) - - ### null - @staticmethod - def _topology_operations_releaseResources(self, count, resourceType): - """ - :param count (number): - :param resourceType (string): - """ - return self._wrapper._post('/topology/operations/releaseResources', **{'count': count, 'resourceType': resourceType}) - - ### 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. + superflow (string): The name of the super flow + weight (string): The weight of the super flow """ - return self._wrapper._post('/superflow/operations/addAction', **{'flowid': flowid, 'type': type, 'actionid': actionid, 'source': source}) + return self._wrapper._post('/appProfile/operations/add', **{'add': add}) ### Returns the report Table of Contents using the test run id. @staticmethod @@ -733,52 +683,13 @@ def _reports_operations_getReportTable(self, runid, sectionId): """ return self._wrapper._post('/reports/operations/getReportTable', **{'runid': runid, 'sectionId': sectionId}) - ### 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}) - - ### 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}) - - ### 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}) - - ### 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}) - - ### Deletes a given Evasion Profile from the database. + ### null @staticmethod - def _evasionProfile_operations_delete(self, name): + def _topology_operations_releaseAllCnResources(self, cnId): """ - Deletes a given Evasion Profile from the database. - :param name (string): The name of the profile to delete. + :param cnId (string): """ - return self._wrapper._post('/evasionProfile/operations/delete', **{'name': name}) + return self._wrapper._post('/topology/operations/releaseAllCnResources', **{'cnId': cnId}) ### 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 @@ -792,358 +703,328 @@ 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 + ### 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 _administration_operations_logs(self, error=False, messages=False, web=False, all=False, audit=False, info=False, system=False, lines=20, drop=0): + def _appProfile_operations_exportAppProfile(self, name, attachments, filepath): """ - :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 + 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._post('/administration/operations/logs', **{'error': error, 'messages': messages, 'web': web, 'all': all, 'audit': audit, 'info': info, 'system': system, 'lines': lines, 'drop': drop}) + return self._wrapper._export('/appProfile/operations/exportAppProfile', **{'name': name, 'attachments': attachments, 'filepath': filepath}) - ### Reboots the slot with slotId. + ### Lists all the component presets names. @staticmethod - def _topology_operations_reboot(self, board): + def _testmodel_component_operations_getComponentPresetNames(self, type='None'): """ - Reboots the slot with slotId. - :param board (number): + 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 result (list): + list of object with fields + id (string): + label (string): + type (string): + description (string): """ - return self._wrapper._post('/topology/operations/reboot', **{'board': board}) + return self._wrapper._post('/testmodel/component/operations/getComponentPresetNames', **{'type': type}) - ### Recompute percentages in the current working Application Profile + ### null @staticmethod - def _appProfile_operations_recompute(self): - """ - Recompute percentages in the current working Application Profile - """ - return self._wrapper._post('/appProfile/operations/recompute', **{}) + def _loadProfile_operations_save(self): + return self._wrapper._post('/loadProfile/operations/save', **{}) - ### null + ### Save the active editing LoadProfile under specified name @staticmethod - def _topology_operations_releaseResource(self, group, resourceId, resourceType): + def _loadProfile_operations_saveAs(self, name): """ - :param group (number): - :param resourceId (number): - :param resourceType (string): + Save the active editing LoadProfile under specified name + :param name (string): """ - return self._wrapper._post('/topology/operations/releaseResource', **{'group': group, 'resourceId': resourceId, 'resourceType': resourceType}) + return self._wrapper._post('/loadProfile/operations/saveAs', **{'name': name}) - ### null + ### Adds a note to given port. @staticmethod - def _topology_operations_setPortSettings(self, linkState, slotId, portId): + def _topology_operations_addPortNote(self, interface, note): """ - :param linkState (string): - :param slotId (number): - :param portId (number): + 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/setPortSettings', **{'linkState': linkState, 'slotId': slotId, 'portId': portId}) + return self._wrapper._post('/topology/operations/addPortNote', **{'interface': interface, 'note': note}) - ### Adds a list of SuperFlow to the current working Application Profile. ([{'superflow':'adadad', 'weight':'20'},{..}]) + ### 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 _appProfile_operations_add(self, add): + def _capture_operations_importCapture(self, name, filename, force): """ - 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 + 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._post('/appProfile/operations/add', **{'add': add}) + return self._wrapper._import('/capture/operations/importCapture', **{'name': name, 'filename': filename, 'force': force}) - ### Sets a User Preference. + ### Runs a Test. @staticmethod - def _administration_userSettings_operations_changeUserSetting(self, name, value): + def _testmodel_operations_run(self, modelname, group, allowMalware=False): """ - Sets a User Preference. - :param name (string): The setting name. - :param value (string): The new value for setting. + 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('/administration/userSettings/operations/changeUserSetting', **{'name': name, 'value': value}) + return self._wrapper._post('/testmodel/operations/run', **{'modelname': modelname, 'group': group, 'allowMalware': allowMalware}) - ### Retrieves all the security options + ### Runs a Test. @staticmethod - def _evasionProfile_StrikeOptions_operations_getStrikeOptions(self): + def _topology_operations_run(self, modelname, group, allowMalware=False): """ - Retrieves all the security options - :return result (list): + 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('/evasionProfile/StrikeOptions/operations/getStrikeOptions', **{}) + return self._wrapper._post('/topology/operations/run', **{'modelname': modelname, 'group': group, 'allowMalware': allowMalware}) - ### null + ### Retrieves the real time statistics for the running test, by giving the run id. @staticmethod - def _results_operations_getHistoricalResultSize(self, runid, componentid, group): + def _testmodel_operations_realTimeStats(self, runid, rtsgroup, numSeconds, numDataPoints=1): """ - :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): + 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('/results/operations/getHistoricalResultSize', **{'runid': runid, 'componentid': componentid, 'group': group}) + return self._wrapper._post('/testmodel/operations/realTimeStats', **{'runid': runid, 'rtsgroup': rtsgroup, 'numSeconds': numSeconds, 'numDataPoints': numDataPoints}) - ### Saves the current working Application Profiles and gives it a new name. + ### Deletes a given Network Neighborhood Config from the database. @staticmethod - def _superflow_operations_saveAs(self, name, force): + def _network_operations_delete(self, name): """ - 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. + Deletes a given Network Neighborhood Config from the database. + :param name (string): The name of the Network Neighborhood Config. """ - return self._wrapper._post('/superflow/operations/saveAs', **{'name': name, 'force': force}) + return self._wrapper._post('/network/operations/delete', **{'name': name}) - ### Saves the working Super Flow using the current name + ### Switch port fan-out mode. @staticmethod - def _superflow_operations_save(self, name=None, force=True): + def _topology_operations_setPortFanoutMode(self, board, port, mode): """ - 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. + Switch port fan-out mode. + :param board (number): + :param port (string): + :param mode (string): """ - return self._wrapper._post('/superflow/operations/save', **{'name': name, 'force': force}) + return self._wrapper._post('/topology/operations/setPortFanoutMode', **{'board': board, 'port': port, 'mode': mode}) - ### Adds a new test component to the current working test model + ### Adds a flow to the current working SuperFlow @staticmethod - def _testmodel_operations_add(self, name, component, type, active): + def _superflow_operations_addFlow(self, flowParams): """ - 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 + 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('/testmodel/operations/add', **{'name': name, 'component': component, 'type': type, 'active': active}) + return self._wrapper._post('/superflow/operations/addFlow', **{'flowParams': flowParams}) - ### Removes an action from the current working SuperFlow. + ### Retrieves all the security options @staticmethod - def _superflow_operations_removeAction(self, id): + def _evasionProfile_StrikeOptions_operations_getStrikeOptions(self): """ - Removes an action from the current working SuperFlow. - :param id (number): The action ID. + Retrieves all the security options + :return result (list): """ - return self._wrapper._post('/superflow/operations/removeAction', **{'id': id}) + return self._wrapper._post('/evasionProfile/StrikeOptions/operations/getStrikeOptions', **{}) - ### Runs a Test. + ### Saves the current working Strike List and gives it a new name. @staticmethod - def _testmodel_operations_run(self, modelname, group, allowMalware=False): + def _strikeList_operations_saveAs(self, name, force): """ - 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. + 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('/testmodel/operations/run', **{'modelname': modelname, 'group': group, 'allowMalware': allowMalware}) + return self._wrapper._post('/strikeList/operations/saveAs', **{'name': name, 'force': force}) - ### Runs a Test. + ### Saves the current working Strike List using the current name @staticmethod - def _topology_operations_run(self, modelname, group, allowMalware=False): + def _strikeList_operations_save(self, name=None, force=True): """ - 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. + 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('/topology/operations/run', **{'modelname': modelname, 'group': group, 'allowMalware': allowMalware}) + return self._wrapper._post('/strikeList/operations/save', **{'name': name, 'force': force}) - ### Saves the current working Test Model under specified name. + ### 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_saveAs(self, name, force): + def _testmodel_operations_importModel(self, name, filename, 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. + 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._post('/testmodel/operations/saveAs', **{'name': name, 'force': force}) + return self._wrapper._import('/testmodel/operations/importModel', **{'name': name, 'filename': filename, 'force': force}) - ### Saves the working Test Model using the current name. No need to configure. The current name is used. + ### 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 _testmodel_operations_save(self, name=None, force=True): + def _appProfile_operations_importAppProfile(self, name, filename, force): """ - 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. + 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._post('/testmodel/operations/save', **{'name': name, 'force': force}) + return self._wrapper._import('/appProfile/operations/importAppProfile', **{'name': name, 'filename': filename, 'force': 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. + ### 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 _capture_operations_importCapture(self, name, filename, force): + def _network_operations_importNetwork(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. + 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('/capture/operations/importCapture', **{'name': name, 'filename': filename, 'force': force}) + return self._wrapper._import('/network/operations/importNetwork', **{'name': name, 'filename': filename, 'force': force}) - ### Get information about an action in the current working Superflow, retrieving also the choices for each action setting. + ### Reserves the specified number of resources of given type. @staticmethod - def _superflow_actions_operations_getActionInfo(self, id): + def _topology_operations_reserveResources(self, group, count, resourceType, slotId): """ - 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): + 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('/superflow/actions/operations/getActionInfo', **{'id': id}) + return self._wrapper._post('/topology/operations/reserveResources', **{'group': group, 'count': count, 'resourceType': resourceType, 'slotId': slotId}) - ### Gets the card Fanout modes of a board. + ### null @staticmethod - def _topology_operations_getFanoutModes(self, cardId): + def _topology_operations_setPortSettings(self, linkState, autoNegotiation, precoder, slotId, portId): """ - Gets the card Fanout modes of a board. - :param cardId (number): Slot ID. - :return modes (object): Fanout mode id per card type. + :param linkState (string): + :param autoNegotiation (bool): + :param precoder (bool): + :param slotId (number): + :param portId (string): """ - return self._wrapper._post('/topology/operations/getFanoutModes', **{'cardId': cardId}) + return self._wrapper._post('/topology/operations/setPortSettings', **{'linkState': linkState, 'autoNegotiation': autoNegotiation, 'precoder': precoder, 'slotId': slotId, 'portId': portId}) - ### Imports an ATI License file (.lic) on a hardware platform. This operation is NOT recommended to be used on BPS Virtual platforms. + ### Adds a new test component to the current working test model @staticmethod - def _administration_atiLicensing_operations_importAtiLicense(self, filename, name): + def _testmodel_operations_add(self, name, component, type, active): """ - 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 + 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._import('/administration/atiLicensing/operations/importAtiLicense', **{'filename': filename, 'name': name}) + return self._wrapper._post('/testmodel/operations/add', **{'name': name, 'component': component, 'type': type, 'active': active}) - ### Load an existing Super Flow and sets it as the current one. + ### Sets the card mode of a board. @staticmethod - def _superflow_operations_load(self, template): + def _topology_operations_setCardMode(self, board, mode): """ - Load an existing Super Flow and sets it as the current one. - :param template (string): The name of the existing Super Flow template + 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('/superflow/operations/load', **{'template': template}) + return self._wrapper._post('/topology/operations/setCardMode', **{'board': board, 'mode': mode}) - ### Creates a new Super Flow. + ### Sets the card speed of a board @staticmethod - def _superflow_operations_new(self, template=None): + def _topology_operations_setCardSpeed(self, board, speed): """ - Creates a new Super Flow. - :param template (string): The name of the template. In this case will be empty. + 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('/superflow/operations/new', **{'template': template}) + return self._wrapper._post('/topology/operations/setCardSpeed', **{'board': board, 'speed': speed}) - ### Deletes a given Test Model from the database. + ### Sets the card fanout of a board @staticmethod - def _testmodel_operations_delete(self, name): + def _topology_operations_setCardFanout(self, board, fanid): """ - Deletes a given Test Model from the database. - :param name (string): The name of the Test Model. + 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('/testmodel/operations/delete', **{'name': name}) + return self._wrapper._post('/topology/operations/setCardFanout', **{'board': board, 'fanid': fanid}) - ### null + ### Enables/Disables the performance acceleration for a BPS VE blade. @staticmethod - def _capture_operations_search(self, searchString, limit, sort, sortorder): + def _topology_operations_setPerfAcc(self, board, perfacc): """ - :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 results (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}) - - ### null - @staticmethod - def _topology_operations_unreserve(self, unreservation): - """ - :param unreservation (list): - list of object with fields - slot (number): - port (number): + 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/unreserve', **{'unreservation': unreservation}) + return self._wrapper._post('/topology/operations/setPerfAcc', **{'board': board, 'perfacc': perfacc}) - ### Deletes a given Network Neighborhood Config from the database. + ### Reboots the slot with slotId. @staticmethod - def _network_operations_delete(self, name): + def _topology_operations_reboot(self, board): """ - Deletes a given Network Neighborhood Config from the database. - :param name (string): The name of the Network Neighborhood Config. + Reboots the slot with slotId. + :param board (number): """ - return self._wrapper._post('/network/operations/delete', **{'name': name}) + return self._wrapper._post('/topology/operations/reboot', **{'board': board}) ### 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}) - - ### 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}) - - ### Reboots the compute node with cnId. - @staticmethod - def _topology_operations_rebootComputeNode(self, cnId): + def _topology_operations_releaseResources(self, count, resourceType, slotId): """ - Reboots the compute node with cnId. - :param cnId (number): Compute node id + :param count (number): + :param resourceType (string): + :param slotId (number): """ - return self._wrapper._post('/topology/operations/rebootComputeNode', **{'cnId': cnId}) + return self._wrapper._post('/topology/operations/releaseResources', **{'count': count, 'resourceType': resourceType, 'slotId': slotId}) - ### Removes a flow from the current working SuperFlow. + ### Saves the working network config and gives it a new name. @staticmethod - def _superflow_operations_removeFlow(self, id): + def _network_operations_saveAs(self, name, regenerateOldStyle=True, force=False): """ - Removes a flow from the current working SuperFlow. - :param id (number): The flow ID. + 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('/superflow/operations/removeFlow', **{'id': id}) + return self._wrapper._post('/network/operations/saveAs', **{'name': name, 'regenerateOldStyle': regenerateOldStyle, 'force': 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. + ### Save the current working network config. @staticmethod - def _administration_operations_importAllTests(self, name, filename, force): + def _network_operations_save(self, name=None, regenerateOldStyle=True, force=True): """ - 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. + 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._import('/administration/operations/importAllTests', **{'name': name, 'filename': filename, 'force': force}) + return self._wrapper._post('/network/operations/save', **{'name': name, 'regenerateOldStyle': regenerateOldStyle, 'force': force}) ### null @staticmethod @@ -1159,2343 +1040,1316 @@ def _topology_operations_reserve(self, reservation, force=False): """ return self._wrapper._post('/topology/operations/reserve', **{'reservation': reservation, 'force': force}) - ### Adds a list of strikes to the current working Strike List.([{id: 'b/b/v/f'}, {id: 'aa/f/h'}]) + ### Removes a flow from the current working SuperFlow. @staticmethod - def _strikeList_operations_add(self, strike, validate=True, toList=None): + def _superflow_operations_removeFlow(self, id): """ - 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 + Removes a flow from the current working SuperFlow. + :param id (number): The flow ID. """ - return self._wrapper._post('/strikeList/operations/add', **{'strike': strike, 'validate': validate, 'toList': toList}) + return self._wrapper._post('/superflow/operations/removeFlow', **{'id': id}) - ### Reboots the metwork processors on the given card card. Only available for APS cards. + ### 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 _topology_operations_softReboot(self, board): + def _administration_operations_exportAllTests(self, filepath): """ - Reboots the metwork processors on the given card card. Only available for APS cards. - :param board (number): + 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._post('/topology/operations/softReboot', **{'board': board}) + return self._wrapper._export('/administration/operations/exportAllTests', **{'filepath': filepath}) - ### Reserves the specified resource of the given type. + ### Reboots the compute node with cnId. @staticmethod - def _topology_operations_reserveResource(self, group, resourceId, resourceType): + def _topology_operations_rebootComputeNode(self, cnId): """ - Reserves the specified resource of the given type. - :param group (number): - :param resourceId (number): - :param resourceType (string): + Reboots the compute node with cnId. + :param cnId (string): Compute node id """ - return self._wrapper._post('/topology/operations/reserveResource', **{'group': group, 'resourceId': resourceId, 'resourceType': resourceType}) + return self._wrapper._post('/topology/operations/rebootComputeNode', **{'cnId': cnId}) - ### null + ### Deletes a given Application Profile from the database. @staticmethod - def _topology_operations_releaseAllCnResources(self, cnId): + def _appProfile_operations_delete(self, name): """ - :param cnId (string): + Deletes a given Application Profile from the database. + :param name (string): The name of the Application Profiles. """ - return self._wrapper._post('/topology/operations/releaseAllCnResources', **{'cnId': cnId}) + return self._wrapper._post('/appProfile/operations/delete', **{'name': name}) - ### Returns stats series for a given component group stat output for a given timestamp + ### null @staticmethod - def _results_operations_getHistoricalSeries(self, runid, componentid, dataindex, group): + def _network_operations_list(self, userid, clazz, sortorder, sort, limit, offset): """ - 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 results (list): + :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): - content (string): - datasetvals (string): - """ - return self._wrapper._post('/results/operations/getHistoricalSeries', **{'runid': runid, 'componentid': componentid, 'dataindex': dataindex, 'group': group}) - - ### null - @staticmethod - def _loadProfile_operations_load(self, template): - """ - :param template (string): + type (string): + author (string): + createdOn (string): """ - return self._wrapper._post('/loadProfile/operations/load', **{'template': template}) + return self._wrapper._post('/network/operations/list', **{'userid': userid, 'clazz': clazz, 'sortorder': sortorder, 'sort': sort, 'limit': limit, 'offset': offset}) - ### 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. + ### Removes an action from the current working SuperFlow. @staticmethod - def _results_operations_getGroups(self, name, dynamicEnums=True, includeOutputs=True): + def _superflow_operations_removeAction(self, id): """ - 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 (object): + Removes an action from the current working SuperFlow. + :param id (number): The action ID. """ - return self._wrapper._post('/results/operations/getGroups', **{'name': name, 'dynamicEnums': dynamicEnums, 'includeOutputs': includeOutputs}) + return self._wrapper._post('/superflow/operations/removeAction', **{'id': id}) ### Saves the current working Test Model under specified name. @staticmethod - def _evasionProfile_operations_saveAs(self, name, force): + 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 Evasion Profile - :param force (bool): Force to save the working Evasion Profile using a new 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('/evasionProfile/operations/saveAs', **{'name': name, 'force': force}) + return self._wrapper._post('/testmodel/operations/saveAs', **{'name': name, 'force': force}) ### 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): + 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): 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. + :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('/evasionProfile/operations/save', **{'name': name, 'force': force}) + return self._wrapper._post('/testmodel/operations/save', **{'name': name, 'force': force}) - ### null + ### Removes a SuperFlow from the current working Application Profile. @staticmethod - def _superflow_actions_operations_getActionChoices(self, id): + def _appProfile_operations_remove(self, superflow): """ - :param id (number): the flow id + Removes a SuperFlow from the current working Application Profile. + :param superflow (string): The name of the super flow. """ - return self._wrapper._post('/superflow/actions/operations/getActionChoices', **{'id': id}) + return self._wrapper._post('/appProfile/operations/remove', **{'superflow': superflow}) - ### 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. + ### Deletes a given Test Model from the database. @staticmethod - def _strikeList_operations_exportStrikeList(self, name, filepath): + def _testmodel_operations_delete(self, 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. - :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 + Deletes a given Test Model from the database. + :param name (string): The name of the Test Model. """ - return self._wrapper._export('/strikeList/operations/exportStrikeList', **{'name': name, 'filepath': filepath}) + return self._wrapper._post('/testmodel/operations/delete', **{'name': name}) - ### Removes a component from the current working Test Model. + ### null @staticmethod - def _testmodel_operations_remove(self, id): + def _topology_operations_releaseResource(self, group, resourceId, resourceType): """ - Removes a component from the current working Test Model. - :param id (string): The component id. + :param group (number): + :param resourceId (number): + :param resourceType (string): """ - return self._wrapper._post('/testmodel/operations/remove', **{'id': id}) + return self._wrapper._post('/topology/operations/releaseResource', **{'group': group, 'resourceId': resourceId, 'resourceType': resourceType}) - ### Saves the current working Strike List and gives it a new name. + ### 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 _strikeList_operations_saveAs(self, name, force): + def _administration_operations_importAllTests(self, name, filename, 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. + 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._post('/strikeList/operations/saveAs', **{'name': name, 'force': force}) + return self._wrapper._import('/administration/operations/importAllTests', **{'name': name, 'filename': filename, 'force': force}) - ### Saves the current working Strike List using the current name + ### Loads an existing network config by name. @staticmethod - def _strikeList_operations_save(self, name=None, force=True): + def _network_operations_load(self, template): """ - 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}) - - ### 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. + Loads an existing network config by name. + :param template (string): The name of the network neighborhood template """ - return self._wrapper._post('/appProfile/operations/delete', **{'name': name}) + return self._wrapper._post('/network/operations/load', **{'template': template}) - ### Load an existing Strike List and sets it as the current one. + ### Creates a new Network Neighborhood configuration with no name. The template value must remain empty. @staticmethod - def _strikeList_operations_load(self, template): + def _network_operations_new(self, template=None): """ - Load an existing Strike List and sets it as the current one. - :param template (string): The name of the Strike List template + 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('/strikeList/operations/load', **{'template': template}) + return self._wrapper._post('/network/operations/new', **{'template': template}) - ### Creates a new Strike List. + ### null @staticmethod - def _strikeList_operations_new(self, template=None): + def _superflow_flows_operations_getFlowChoices(self, id, name): """ - Creates a new Strike List. - :param template (string): The name of the template. In this case will be empty. + :param id (number): The flow id. + :param name (string): The flow type/name. + :return result (list): """ - return self._wrapper._post('/strikeList/operations/new', **{'template': template}) + return self._wrapper._post('/superflow/flows/operations/getFlowChoices', **{'id': id, 'name': name}) - ### Load an existing Evasion Profile and sets it as the current one. + ### Reserves all l47 resources of given compute node id. @staticmethod - def _evasionProfile_operations_load(self, template): + def _topology_operations_reserveAllCnResources(self, group, cnId): """ - Load an existing Evasion Profile and sets it as the current one. - :param template (string): The name of an Evasion profile template. + Reserves all l47 resources of given compute node id. + :param group (number): + :param cnId (string): """ - return self._wrapper._post('/evasionProfile/operations/load', **{'template': template}) + return self._wrapper._post('/topology/operations/reserveAllCnResources', **{'group': group, 'cnId': cnId}) - ### Creates a new Evasion Profile. + ### Load an existing Super Flow and sets it as the current one. @staticmethod - def _evasionProfile_operations_new(self, template=None): + def _superflow_operations_load(self, template): """ - Creates a new Evasion Profile. - :param template (string): The name should be empty to create a new object. + 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('/evasionProfile/operations/new', **{'template': template}) + return self._wrapper._post('/superflow/operations/load', **{'template': template}) - ### 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. + ### Creates a new Super Flow. @staticmethod - def _administration_operations_exportAllTests(self, filepath): + def _superflow_operations_new(self, template=None): """ - 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' + Creates a new Super Flow. + :param template (string): The name of the template. In this case will be empty. """ - return self._wrapper._export('/administration/operations/exportAllTests', **{'filepath': filepath}) + return self._wrapper._post('/superflow/operations/new', **{'template': template}) ### null @staticmethod - def _strikeList_operations_search(self, searchString='', limit=10, sort='name', sortorder='ascending'): + def _administration_operations_logs(self, error=False, messages=False, web=False, all=False, audit=False, info=False, system=False, lines=20, drop=0): """ - :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. + :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('/strikeList/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + 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}) - ### Create a new custom Load Profile. + ### null @staticmethod - def _loadProfile_operations_createNewCustom(self, loadProfile): + def _superflow_operations_search(self, searchString, limit, sort, sortorder): """ - Create a new custom Load Profile. - :param loadProfile (string): The Name of The load profile object to create. + :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('/loadProfile/operations/createNewCustom', **{'loadProfile': loadProfile}) + return self._wrapper._post('/superflow/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) ### null @staticmethod - def _testmodel_operations_search(self, searchString, limit, sort, sortorder): + def _appProfile_operations_search(self, searchString, limit, sort, sortorder): """ - :param searchString (string): Search test name matching the string given. + :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: 'createdOn'/'timestamp'/'bandwidth'/'result'/'lastrunby'/'createdBy'/'interfaces'/'testLabType' - :param sortorder (string): The sort order: ascending/descending - :return results (list): + :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): - network (string): - duration (number): + createdOn (string): + revision (number): description (string): """ - return self._wrapper._post('/testmodel/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + return self._wrapper._post('/appProfile/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) - ### Gives abbreviated information about all Canned Flow Names. + ### Load an existing Application Profile and sets it as the current one. @staticmethod - def _superflow_flows_operations_getCannedFlows(self): + def _appProfile_operations_load(self, template): """ - Gives abbreviated information about all Canned Flow Names. - :return results (list): - list of object with fields - name (string): - label (string): + 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('/superflow/flows/operations/getCannedFlows', **{}) + return self._wrapper._post('/appProfile/operations/load', **{'template': template}) - ### 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. + ### Creates a new Application Profile. @staticmethod - def _appProfile_operations_exportAppProfile(self, name, attachments, filepath): + def _appProfile_operations_new(self, template=None): """ - 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. + Creates a new Application Profile. + :param template (string): This argument must remain unset. Do not set any value for it. """ - return self._wrapper._export('/appProfile/operations/exportAppProfile', **{'name': name, 'attachments': attachments, 'filepath': filepath}) + return self._wrapper._post('/appProfile/operations/new', **{'template': template}) - ### Switch port fan-out mode. + ### Removes a strike from the current working Strike List.([{id: 'bb/c/d'}, {id: 'aa/f/g'}]) @staticmethod - def _topology_operations_setPortFanoutMode(self, board, port, mode): + def _strikeList_operations_remove(self, strike): """ - Switch port fan-out mode. - :param board (number): - :param port (string): - :param mode (string): + 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('/topology/operations/setPortFanoutMode', **{'board': board, 'port': port, 'mode': mode}) + return self._wrapper._post('/strikeList/operations/remove', **{'strike': strike}) - ### Clones a component in the current working Test Model + ### close active session @staticmethod - def _testmodel_operations_clone(self, template, type, active): + def _administration_sessions_operations_close(self, session): """ - 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 + close active session + :param session (string): """ - return self._wrapper._post('/testmodel/operations/clone', **{'template': template, 'type': type, 'active': active}) + return self._wrapper._post('/administration/sessions/operations/close', **{'session': session}) - ### Removes a SuperFlow from the current working Application Profile. + ### Imports a list of strikes residing in a file. @staticmethod - def _appProfile_operations_remove(self, superflow): + def _strikeList_operations_importStrikeList(self, name, filename, force): """ - Removes a SuperFlow from the current working Application Profile. - :param superflow (string): The name of the super flow. + 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._post('/appProfile/operations/remove', **{'superflow': superflow}) + return self._wrapper._import('/strikeList/operations/importStrikeList', **{'name': name, 'filename': filename, 'force': force}) ### null @staticmethod - def _appProfile_operations_search(self, searchString, limit, sort, sortorder): + def _superflow_actions_operations_getActionChoices(self, id): """ - :param searchString (string): Search application profile name matching the string given. + :param id (number): the flow id + """ + return self._wrapper._post('/superflow/actions/operations/getActionChoices', **{'id': id}) + + ### 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. - :param sortorder (string): The sort order (ascending/descending) - :return results (list): - list of object with fields - name (string): - label (string): - createdBy (string): - revision (number): - description (string): + :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('/appProfile/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + return self._wrapper._post('/reports/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) -class DataModelMeta(type): - _dataModel = { - 'testmodel': { - 'lastrunby': { - }, - 'summaryInfo': { - 'totalSubnets': { - }, - 'totalMacAddresses': { - }, - 'totalUniqueStrikes': { - }, - 'totalUniqueSuperflows': { - }, - 'requiredMTU': { - } - }, - 'author': { - }, - 'lastrun': { - }, - 'description': { - }, - 'label': { - }, - 'sharedComponentSettings': { - 'maximumConcurrentFlows': { - 'current': { - }, - 'original': { - }, - 'content': { - } - }, - 'totalAttacks': { - 'current': { - }, - 'original': { - }, - 'content': { - } - }, - 'totalBandwidth': { - 'current': { - }, - 'original': { - }, - 'content': { - } - }, - 'maxFlowCreationRate': { - 'current': { - }, - 'original': { - }, - 'content': { - } - }, - 'totalAddresses': { - 'current': { - }, - 'original': { - }, - 'content': { - } + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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', **{}) + + ### null + @staticmethod + def _loadProfile_operations_load(self, template): + """ + :param template (string): + """ + return self._wrapper._post('/loadProfile/operations/load', **{'template': template}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + +class DataModelMeta(type): + _dataModel = { + 'strikeList': { + 'strikes': [{ + 'severity': { }, - 'samplePeriod': { - 'current': { + 'year': { + }, + 'variants': { + }, + 'reference': [{ + 'label': { }, - 'original': { + 'type': { }, - 'content': { + 'value': { + } + }], + 'path': { + }, + 'protocol': { + }, + 'fileSize': { + }, + 'fileExtension': { + }, + 'name': { + }, + 'id': { + }, + 'category': { + }, + 'keyword': [{ + 'name': { } + }], + 'direction': { + }, + 'strike': { + }, + 'strikeset': { } + }], + 'author': { }, - 'createdOn': { + 'description': { }, - 'network': { + 'label': { + }, + 'queryString': { + }, + 'SecurityBehavior': { + }, + 'StrikeOptions': { + }, + 'createdOn': { }, 'revision': { }, - 'duration': { + 'lockedBy': { }, - 'result': { + 'createdBy': { }, - 'component': [{ - 'author': { - }, - 'originalPreset': { - }, - 'active': { - }, - 'originalPresetLabel': { - }, - 'description': { - }, - 'label': { - }, - 'type': { - }, - '@type:liveappsim': { - 'app': { - 'removeUnknownTcpUdp': { - }, - 'replace_streams': { - }, - 'removeUnknownSSL': { - }, - 'streamsPerSuperflow': { - }, - 'removedns': { - }, - 'fidelity': { - } - }, - 'tcp': { - 'disable_ack_piggyback': { - }, - 'delay_acks': { - }, - 'mss': { - }, - 'raw_flags': { - }, - 'psh_every_segment': { - }, - 'ecn': { - }, - 'tcp_window_scale': { - }, - 'initial_receive_window': { - }, - 'reset_at_end': { - }, - 'dynamic_receive_window_size': { - }, - 'tcp_connect_delay_ms': { - }, - 'aging_time_data_type': { - }, - 'tcp_4_way_close': { - }, - 'shutdown_data': { - }, - 'tcp_icw': { - }, - 'tcp_keepalive_timer': { - }, - 'aging_time': { - }, - 'add_timestamps': { - }, - 'retries': { - }, - 'handshake_data': { - }, - 'ack_every_n': { - }, - 'syn_data_padding': { - }, - 'retry_quantum_ms': { - }, - 'delay_acks_ms': { - } - }, - 'inflateDeflate': { - }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'unlimited': { - }, - 'scope': { - }, - 'type': { - } - }, - 'sessions': { - 'openFast': { - }, - 'closeFast': { - }, - 'max': { - }, - 'allocationOverride': { - }, - 'targetPerSecond': { - }, - 'target': { - }, - 'targetMatches': { - }, - 'maxPerSecond': { - }, - 'engine': { - }, - 'statDetail': { - }, - 'emphasis': { - }, - 'maxActive': { - } - }, - 'loadprofile': { - 'name': { - }, - 'label': { - } - }, - 'ip': { - 'tos': { - }, - 'ttl': { - } - }, - 'ip6': { - 'flowlabel': { - }, - 'traffic_class': { - }, - 'hop_limit': { - } - }, - 'srcPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } - }, - 'tputscalefactor': { - }, - 'rampUpProfile': { - 'min': { - }, - 'max': { - }, - 'increment': { - }, - 'interval': { - }, - 'type': { - } - }, - 'concurrencyscalefactor': { - }, - 'delayStart': { - }, - 'rampDist': { - 'upBehavior': { - }, - 'down': { - }, - 'steadyBehavior': { - }, - 'downBehavior': { - }, - 'up': { - }, - 'synRetryMode': { - }, - 'steady': { - } - }, - 'sfratescalefactor': { - }, - 'liveProfile': { - } - }, - '@type:layer3advanced': { - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'rate': { - }, - 'increment': { - }, - 'type': { - }, - 'ramptype': { - } - }, - 'bidirectional': { - }, - 'enableTCP': { - }, - 'slowStart': { - }, - 'Templates': { - 'TemplateType': { - } - }, - 'slowStartFps': { - }, - 'duration': { - 'disable_nd_probes': { - }, - 'durationTime': { - }, - 'durationFrames': { - } - }, - 'enablePerStreamStats': { - }, - 'tuple_gen_seed': { - }, - 'payload': { - 'data': { - }, - 'type': { - }, - 'dataWidth': { - } - }, - 'advancedUDP': { - 'lengthVal': { - }, - 'lengthField': { - }, - 'checksumVal': { - }, - 'checksumField': { - } - }, - 'delayStart': { - }, - 'payloadAdvanced': { - 'udfMode': { - }, - 'udfLength': { - }, - 'udfDataWidth': { - }, - 'udfOffset': { - } - }, - 'sizeDist': { - 'increment': { - }, - 'type': { - }, - 'min': { - }, - 'rate': { - }, - 'mixlen2': { - }, - 'mixweight6': { - }, - 'mixlen1': { - }, - 'mixweight7': { - }, - 'mixlen4': { - }, - 'mixweight4': { - }, - 'mixlen3': { - }, - 'mixweight5': { - }, - 'mixlen6': { - }, - 'mixlen5': { - }, - 'mixlen8': { - }, - 'mixweight8': { - }, - 'mixlen7': { - }, - 'mixweight9': { - }, - 'mixlen9': { - }, - 'mixweight2': { - }, - 'max': { - }, - 'mixweight3': { - }, - 'mixweight1': { - }, - 'mixlen10': { - }, - 'mixweight10': { - }, - 'unit': { - } - }, - 'advancedIPv4': { - 'lengthVal': { - }, - 'optionHeaderField': { - }, - 'optionHeaderData': { - }, - 'lengthField': { - }, - 'checksumVal': { - }, - 'tos': { - }, - 'checksumField': { - }, - 'ttl': { - } - }, - 'advancedIPv6': { - 'flowLabel': { - }, - 'lengthVal': { - }, - 'extensionHeaderField': { - }, - 'lengthField': { - }, - 'nextHeader': { - }, - 'trafficClass': { - }, - 'extensionHeaderData': { - }, - 'hopLimit': { - } - } - }, - '@type:appsim': { - 'app': { - 'replace_streams': { - }, - 'streamsPerSuperflow': { - }, - 'removedns': { - }, - 'fidelity': { - } - }, - 'tcp': { - 'disable_ack_piggyback': { - }, - 'delay_acks': { - }, - 'mss': { - }, - 'raw_flags': { - }, - 'psh_every_segment': { - }, - 'ecn': { - }, - 'tcp_window_scale': { - }, - 'initial_receive_window': { - }, - 'reset_at_end': { - }, - 'dynamic_receive_window_size': { - }, - 'tcp_connect_delay_ms': { - }, - 'aging_time_data_type': { - }, - 'tcp_4_way_close': { - }, - 'shutdown_data': { - }, - 'tcp_icw': { - }, - 'tcp_keepalive_timer': { - }, - 'aging_time': { - }, - 'add_timestamps': { - }, - 'retries': { - }, - 'handshake_data': { - }, - 'ack_every_n': { - }, - 'syn_data_padding': { - }, - 'retry_quantum_ms': { - }, - 'delay_acks_ms': { - } - }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'unlimited': { - }, - 'scope': { - }, - 'type': { - } - }, - 'sessions': { - 'openFast': { - }, - 'closeFast': { - }, - 'max': { - }, - 'allocationOverride': { - }, - 'targetPerSecond': { - }, - 'target': { - }, - 'targetMatches': { - }, - 'maxPerSecond': { - }, - 'engine': { - }, - 'statDetail': { - }, - 'emphasis': { - }, - 'maxActive': { - } - }, - 'loadprofile': { - 'name': { - }, - 'label': { - } - }, - 'profile': { - }, - 'ip': { - 'tos': { - }, - 'ttl': { - } - }, - 'resources': { - 'expand': { - } - }, - 'experimental': { - 'tcpSegmentsBurst': { - }, - 'unify_l4_bufs': { - } - }, - 'ssl': { - 'ssl_client_keylog': { - }, - 'upgrade': { - }, - 'sslReuseType': { - }, - 'server_record_len': { - }, - 'client_record_len': { - }, - 'ssl_keylog_max_entries': { - } - }, - 'ip6': { - 'flowlabel': { - }, - 'traffic_class': { - }, - 'hop_limit': { - } - }, - 'srcPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } - }, - 'rampUpProfile': { - 'min': { - }, - 'max': { - }, - 'increment': { - }, - 'interval': { - }, - 'type': { - } - }, - 'delayStart': { - }, - 'rampDist': { - 'upBehavior': { - }, - 'down': { - }, - 'steadyBehavior': { - }, - 'downBehavior': { - }, - 'up': { - }, - 'synRetryMode': { - }, - 'steady': { - } - } - }, - '@type:security_all': { - 'maxConcurrAttacks': { - }, - 'attackRetries': { - }, - 'maxPacketsPerSecond': { - }, - 'attackPlan': { - }, - 'randomSeed': { - }, - 'delayStart': { - }, - 'attackProfile': { - }, - 'attackPlanIterations': { - }, - 'attackPlanIterationDelay': { - }, - 'maxAttacksPerSecond': { - } - }, - '@type:security_np': { - 'attackRetries': { - }, - 'sessions': { - 'max': { - }, - 'maxPerSecond': { - } - }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'unlimited': { - }, - 'scope': { - }, - 'type': { - } - }, - 'attackPlan': { - }, - 'randomSeed': { - }, - 'delayStart': { - }, - 'attackProfile': { - }, - 'attackPlanIterations': { - }, - 'attackPlanIterationDelay': { - } - }, - '@type:layer3': { - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'rate': { - }, - 'increment': { - }, - 'type': { - }, - 'ramptype': { - } - }, - 'bidirectional': { - }, - 'randomizeIP': { - }, - 'enableTCP': { - }, - 'slowStart': { - }, - 'Templates': { - 'TemplateType': { - } - }, - 'srcPort': { - }, - 'slowStartFps': { - }, - 'duration': { - 'disable_nd_probes': { - }, - 'durationTime': { - }, - 'durationFrames': { - } - }, - 'udpSrcPortMode': { - }, - 'dstPort': { - }, - 'payload': { - 'data': { - }, - 'type': { - }, - 'dataWidth': { - } - }, - 'syncIP': { - }, - 'addrGenMode': { - }, - 'maxStreams': { - }, - 'dstPortMask': { - }, - 'udpDstPortMode': { - }, - 'advancedUDP': { - 'lengthVal': { - }, - 'lengthField': { - }, - 'checksumVal': { - }, - 'checksumField': { - } - }, - 'delayStart': { - }, - 'payloadAdvanced': { - 'udfMode': { - }, - 'udfLength': { - }, - 'udfDataWidth': { - }, - 'udfOffset': { - } - }, - 'sizeDist': { - 'increment': { - }, - 'type': { - }, - 'min': { - }, - 'rate': { - }, - 'mixlen2': { - }, - 'mixweight6': { - }, - 'mixlen1': { - }, - 'mixweight7': { - }, - 'mixlen4': { - }, - 'mixweight4': { - }, - 'mixlen3': { - }, - 'mixweight5': { - }, - 'mixlen6': { - }, - 'mixlen5': { - }, - 'mixlen8': { - }, - 'mixweight8': { - }, - 'mixlen7': { - }, - 'mixweight9': { - }, - 'mixlen9': { - }, - 'mixweight2': { - }, - 'max': { - }, - 'mixweight3': { - }, - 'mixweight1': { - }, - 'mixlen10': { - }, - 'mixweight10': { - }, - 'unit': { - } - }, - 'advancedIPv4': { - 'lengthVal': { - }, - 'optionHeaderField': { - }, - 'optionHeaderData': { - }, - 'lengthField': { - }, - 'checksumVal': { - }, - 'tos': { - }, - 'checksumField': { - }, - 'ttl': { - } - }, - 'srcPortMask': { - }, - 'advancedIPv6': { - 'flowLabel': { - }, - 'lengthVal': { - }, - 'extensionHeaderField': { - }, - 'lengthField': { - }, - 'nextHeader': { - }, - 'trafficClass': { - }, - 'extensionHeaderData': { - }, - 'hopLimit': { - } - } - }, - '@type:layer4': { - 'tcp': { - 'disable_ack_piggyback': { - }, - 'delay_acks': { - }, - 'mss': { - }, - 'raw_flags': { - }, - 'psh_every_segment': { - }, - 'ecn': { - }, - 'tcp_window_scale': { - }, - 'initial_receive_window': { - }, - 'reset_at_end': { - }, - 'dynamic_receive_window_size': { - }, - 'tcp_connect_delay_ms': { - }, - 'aging_time_data_type': { - }, - 'tcp_4_way_close': { - }, - 'shutdown_data': { - }, - 'tcp_icw': { - }, - 'tcp_keepalive_timer': { - }, - 'aging_time': { - }, - 'add_timestamps': { - }, - 'retries': { - }, - 'handshake_data': { - }, - 'ack_every_n': { - }, - 'syn_data_padding': { - }, - 'retry_quantum_ms': { - }, - 'delay_acks_ms': { - } - }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'unlimited': { - }, - 'scope': { - }, - 'type': { - } - }, - 'sessions': { - 'openFast': { - }, - 'closeFast': { - }, - 'max': { - }, - 'allocationOverride': { - }, - 'targetPerSecond': { - }, - 'target': { - }, - 'targetMatches': { - }, - 'maxPerSecond': { - }, - 'engine': { - }, - 'statDetail': { - }, - 'emphasis': { - }, - 'maxActive': { - } - }, - 'loadprofile': { - 'name': { - }, - 'label': { - } - }, - 'ip': { - 'tos': { - }, - 'ttl': { - } - }, - 'ip6': { - 'flowlabel': { - }, - 'traffic_class': { - }, - 'hop_limit': { - } - }, - 'srcPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } - }, - 'rampUpProfile': { - 'min': { - }, - 'max': { - }, - 'increment': { - }, - 'interval': { - }, - 'type': { - } - }, - 'delayStart': { - }, - 'payload': { - 'add_timestamp': { - }, - 'data': { - }, - 'http_type': { - }, - 'transport': { - }, - 'type': { - } - }, - 'rampDist': { - 'upBehavior': { - }, - 'down': { - }, - 'steadyBehavior': { - }, - 'downBehavior': { - }, - 'up': { - }, - 'synRetryMode': { - }, - 'steady': { - } - }, - 'packetsPerSession': { - }, - 'payloadSizeDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } - }, - 'dstPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } - } - }, - '@type:playback': { - 'tcp': { - 'disable_ack_piggyback': { - }, - 'delay_acks': { - }, - 'mss': { - }, - 'raw_flags': { - }, - 'psh_every_segment': { - }, - 'ecn': { - }, - 'tcp_window_scale': { - }, - 'initial_receive_window': { - }, - 'reset_at_end': { - }, - 'dynamic_receive_window_size': { - }, - 'tcp_connect_delay_ms': { - }, - 'aging_time_data_type': { - }, - 'tcp_4_way_close': { - }, - 'shutdown_data': { - }, - 'tcp_icw': { - }, - 'tcp_keepalive_timer': { - }, - 'aging_time': { - }, - 'add_timestamps': { - }, - 'retries': { - }, - 'handshake_data': { - }, - 'ack_every_n': { - }, - 'syn_data_padding': { - }, - 'retry_quantum_ms': { - }, - 'delay_acks_ms': { - } - }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'unlimited': { - }, - 'scope': { - }, - 'type': { - } - }, - 'sessions': { - 'openFast': { - }, - 'closeFast': { - }, - 'max': { - }, - 'allocationOverride': { - }, - 'targetPerSecond': { - }, - 'target': { - }, - 'targetMatches': { - }, - 'maxPerSecond': { - }, - 'engine': { - }, - 'statDetail': { - }, - 'emphasis': { - }, - 'maxActive': { - } - }, - 'loadprofile': { - 'name': { - }, - 'label': { - } - }, - 'ip': { - 'tos': { - }, - 'ttl': { - } - }, - 'modification': { - 'startpacket': { - }, - 'originalport': { - }, - 'newport': { - }, - 'replay': { - }, - 'bpfstring': { - }, - 'single': { - }, - 'loopcount': { - }, - 'endpacket': { - }, - 'independentflows': { - }, - 'serveripinjection': { - } - }, - 'ip6': { - 'flowlabel': { - }, - 'traffic_class': { - }, - 'hop_limit': { - } - }, - 'srcPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } - }, - 'rampUpProfile': { - 'min': { - }, - 'max': { - }, - 'increment': { - }, - 'interval': { - }, - 'type': { - } - }, - 'delayStart': { + 'name': { + }, + 'clazz': { + }, + 'numStrikes': { + }, + 'operations': { + 'exportStrikeList': [{ + }], + 'load': [{ + }], + 'new': [{ + }], + 'delete': [{ + }], + 'saveAs': [{ + }], + 'save': [{ + }], + 'remove': [{ + }], + 'importStrikeList': [{ + }], + 'add': [{ + }], + 'search': [{ + }] + } + }, + 'administration': { + 'systemSettings': { + 'strikepackUpdate': { + 'password': { }, - 'file': { + 'interval': { }, - 'rampDist': { - 'upBehavior': { - }, - 'down': { - }, - 'steadyBehavior': { - }, - 'downBehavior': { - }, - 'up': { - }, - 'synRetryMode': { - }, - 'steady': { - } + 'check': { }, - 'behavior': { + 'username': { } }, - '@type:layer2': { - 'bidirectional': { + 'author': { + }, + 'description': { + }, + 'label': { + }, + 'guardrailSettings': { + 'enableStrictMode': { }, - 'maxStreams': { + 'testStop': { }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'rate': { - }, - 'increment': { - }, - 'type': { - }, - 'ramptype': { - } + 'testStatusWarning': { }, - 'advanced': { - 'ethTypeField': { - }, - 'ethTypeVal': { - } + 'stopOnLinkdown': { }, - 'slowStart': { + 'testStartPrevention': { + } + }, + 'createdOn': { + }, + 'revision': { + }, + 'vacuumSettings': { + 'vacuumWindowHigh': { }, - 'slowStartFps': { + 'autoVacuum': { }, - 'duration': { - 'disable_nd_probes': { - }, - 'durationTime': { - }, - 'durationFrames': { - } + 'vacuumWindowLow': { }, - 'delayStart': { + 'vacuumWindowTZ': { + } + }, + 'lockedBy': { + }, + 'createdBy': { + }, + 'softwareUpdate': { + 'password': { }, - 'payloadAdvanced': { - 'udfMode': { - }, - 'udfLength': { - }, - 'udfDataWidth': { - }, - 'udfOffset': { - } + 'interval': { }, - 'sizeDist': { - 'increment': { - }, - 'type': { - }, - 'min': { - }, - 'rate': { - }, - 'mixlen2': { - }, - 'mixweight6': { - }, - 'mixlen1': { - }, - 'mixweight7': { - }, - 'mixlen4': { - }, - 'mixweight4': { - }, - 'mixlen3': { - }, - 'mixweight5': { - }, - 'mixlen6': { - }, - 'mixlen5': { - }, - 'mixlen8': { - }, - 'mixweight8': { - }, - 'mixlen7': { - }, - 'mixweight9': { - }, - 'mixlen9': { - }, - 'mixweight2': { - }, - 'max': { - }, - 'mixweight3': { - }, - 'mixweight1': { - }, - 'mixlen10': { - }, - 'mixweight10': { - }, - 'unit': { - } + 'check': { }, - 'payload': { - 'data': { - }, - 'type': { - }, - 'dataWidth': { - } + 'username': { } }, - '@type:stackscrambler': { - 'tcp': { - 'disable_ack_piggyback': { - }, - 'delay_acks': { - }, - 'mss': { - }, - 'raw_flags': { - }, - 'psh_every_segment': { - }, - 'ecn': { - }, - 'tcp_window_scale': { - }, - 'initial_receive_window': { - }, - 'reset_at_end': { - }, - 'dynamic_receive_window_size': { - }, - 'tcp_connect_delay_ms': { - }, - 'aging_time_data_type': { - }, - 'tcp_4_way_close': { - }, - 'shutdown_data': { - }, - 'tcp_icw': { - }, - 'tcp_keepalive_timer': { - }, - 'aging_time': { - }, - 'add_timestamps': { - }, - 'retries': { - }, - 'handshake_data': { - }, - 'ack_every_n': { - }, - 'syn_data_padding': { - }, - 'retry_quantum_ms': { - }, - 'delay_acks_ms': { - } - }, - 'scrambleOptions': { - 'maxCorruptions': { - }, - 'badIPFlags': { - }, - 'badIPFragOffset': { - }, - 'badIPLength': { - }, - 'badUrgentPointer': { - }, - 'badIPFlowLabel': { - }, - 'badEthType': { - }, - 'badTCPOptions': { - }, - 'badGTPNext': { - }, - 'handshakeTCP': { - }, - 'badIPChecksum': { - }, - 'badSCTPLength': { - }, - 'badTCPFlags': { - }, - 'badICMPType': { - }, - 'badIPTTL': { - }, - 'badIPProtocol': { - }, - 'badSCTPFlags': { - }, - 'badGTPFlags': { - }, - 'badIPVersion': { - }, - 'badL4HeaderLength': { - }, - 'badL4Checksum': { - }, - 'badIPOptions': { - }, - 'badSCTPType': { - }, - 'badSCTPChecksum': { - }, - 'badGTPNpdu': { - }, - 'badICMPCode': { - }, - 'badSCTPVerificationTag': { - }, - 'badIPTOS': { - }, - 'badIPTotalLength': { - }, - 'badGTPLen': { - }, - 'badGTPType': { - }, - 'badGTPSeqno': { - } + 'clazz': { + } + }, + 'atiLicensing': { + 'license': [{ + 'expires': { }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'unlimited': { - }, - 'scope': { - }, - 'type': { + 'issuedBy': { + }, + 'name': { + }, + 'boardserialno': { + }, + 'issued': { + }, + 'slotNo': { + }, + 'maintenance': { + 'maintenanceExpiration': { } }, - 'sessions': { - 'openFast': { - }, - 'closeFast': { - }, - 'max': { - }, - 'allocationOverride': { - }, - 'targetPerSecond': { - }, - 'target': { - }, - 'targetMatches': { + 'serialno': { + } + }], + 'operations': { + 'importAtiLicense': [{ + }] + } + }, + 'userSettings': [{ + 'name': { + }, + 'content': { + }, + 'operations': { + 'setAutoReserve': [{ + }], + 'changeUserSetting': [{ + }] + } + }], + 'sessions': [{ + 'inactivityTimeout': { + }, + 'session': { + }, + 'inactivity': { + }, + 'type': { + }, + 'user': { + }, + 'age': { + }, + 'operations': { + 'list': [{ + 'inactivityTimeout': { }, - 'maxPerSecond': { + 'session': { }, - 'engine': { + 'inactivity': { }, - 'statDetail': { + 'type': { }, - 'emphasis': { + 'user': { }, - 'maxActive': { + 'age': { } + }], + 'close': [{ + }] + } + }], + 'operations': { + 'exportAllTests': [{ + }], + 'importAllTests': [{ + }], + 'logs': [{ + }] + } + }, + 'statistics': { + 'component': [{ + 'statNames': [{ + 'name': { }, - 'loadprofile': { - 'name': { - }, - 'label': { - } + 'description': { }, - 'ip': { - 'tos': { - }, - 'ttl': { - } + 'realtimeGroup': { }, - 'ip6': { - 'flowlabel': { - }, - 'traffic_class': { - }, - 'hop_limit': { - } + 'label': { }, - 'prng': { - 'seed': { - }, - 'offset': { - } + 'units': { + } + }], + 'label': { + } + }] + }, + 'capture': { + 'pcapFilesize': { + }, + 'avgPacketSize': { + }, + 'author': { + }, + 'udpPackets': { + }, + 'description': { + }, + 'label': { + }, + 'createdOn': { + }, + 'name': { + }, + 'revision': { + }, + 'duration': { + }, + 'ipv4Packets': { + }, + 'ipv6Packets': { + }, + 'lockedBy': { + }, + 'tcpPackets': { + }, + 'createdBy': { + }, + 'avgFlowLength': { + }, + 'totalPackets': { + }, + 'clazz': { + }, + 'operations': { + 'search': [{ + }], + 'importCapture': [{ + }] + } + }, + 'evasionProfile': { + 'lockedBy': { + }, + 'createdBy': { + }, + 'author': { + }, + 'name': { + }, + 'description': { + }, + 'label': { + }, + 'StrikeOptions': { + 'TCP': { + 'DuplicateBadSyn': { }, - 'srcPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } + 'DuplicateBadChecksum': { + }, + 'SneakAckHandshake': { + }, + 'AcknowledgeAllSegments': { + }, + 'DuplicateBadSeq': { + }, + 'SkipHandshake': { + }, + 'SourcePort': { + }, + 'MaxSegmentSize': { + }, + 'DestinationPort': { + }, + 'DuplicateBadReset': { + }, + 'DestinationPortType': { + }, + 'DuplicateLastSegment': { + }, + 'DuplicateNullFlags': { + }, + 'SegmentOrder': { + }, + 'SourcePortType': { + } + }, + 'JAVASCRIPT': { + 'Obfuscate': { + }, + 'Encoding': { + } + }, + 'FTP': { + 'PadCommandWhitespace': { + }, + 'Username': { + }, + 'FTPEvasionLevel': { + }, + 'AuthenticationType': { + }, + 'Password': { + } + }, + 'IPv6': { + 'TC': { + } + }, + 'DCERPC': { + 'MultiContextBindHead': { + }, + 'MultiContextBind': { + }, + 'MultiContextBindTail': { + }, + 'MaxFragmentSize': { + }, + 'UseObjectID': { + } + }, + 'RTF': { + 'FictitiousCW': { + }, + 'ASCII_Escaping': { }, - 'rampUpProfile': { - 'min': { - }, - 'max': { - }, - 'increment': { - }, - 'interval': { - }, - 'type': { - } + 'MixedCase': { }, - 'delayStart': { + 'WhiteSpace': { + } + }, + 'POP3': { + 'PadCommandWhitespace': { }, - 'payload': { - 'data': { - }, - 'transport': { - }, - 'type': { - } + 'Username': { }, - 'rampDist': { - 'upBehavior': { - }, - 'down': { - }, - 'steadyBehavior': { - }, - 'downBehavior': { - }, - 'up': { - }, - 'synRetryMode': { - }, - 'steady': { - } + 'POP3UseProxyMode': { }, - 'payloadSizeDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } + 'AuthenticationType': { }, - 'dstPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } + 'Password': { } }, - '@type:clientsim': { - 'app': { - 'replace_streams': { - }, - 'streamsPerSuperflow': { - }, - 'removedns': { - }, - 'fidelity': { - } + 'Variations': { + 'Subset': { }, - 'tcp': { - 'disable_ack_piggyback': { - }, - 'delay_acks': { - }, - 'mss': { - }, - 'raw_flags': { - }, - 'psh_every_segment': { - }, - 'ecn': { - }, - 'tcp_window_scale': { - }, - 'initial_receive_window': { - }, - 'reset_at_end': { - }, - 'dynamic_receive_window_size': { - }, - 'tcp_connect_delay_ms': { - }, - 'aging_time_data_type': { - }, - 'tcp_4_way_close': { - }, - 'shutdown_data': { - }, - 'tcp_icw': { - }, - 'tcp_keepalive_timer': { - }, - 'aging_time': { - }, - 'add_timestamps': { - }, - 'retries': { - }, - 'handshake_data': { - }, - 'ack_every_n': { - }, - 'syn_data_padding': { - }, - 'retry_quantum_ms': { - }, - 'delay_acks_ms': { - } + 'Shuffle': { }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'unlimited': { - }, - 'scope': { - }, - 'type': { - } + 'VariantTesting': { }, - 'sessions': { - 'openFast': { - }, - 'closeFast': { - }, - 'max': { - }, - 'allocationOverride': { - }, - 'targetPerSecond': { - }, - 'target': { - }, - 'targetMatches': { - }, - 'maxPerSecond': { - }, - 'engine': { - }, - 'statDetail': { - }, - 'emphasis': { - }, - 'maxActive': { - } + 'Limit': { }, - 'loadprofile': { - 'name': { - }, - 'label': { - } + 'TestType': { + } + }, + 'OLE': { + 'RefragmentData': { + } + }, + 'HTML': { + 'HTMLUnicodeUTF8EncodingMode': { }, - 'ip': { - 'tos': { - }, - 'ttl': { - } + 'HTMLUnicodeUTF8EncodingSize': { }, - 'resources': { - 'expand': { - } + 'HTMLUnicodeEncoding': { }, - 'ssl': { - 'ssl_client_keylog': { - }, - 'upgrade': { - }, - 'sslReuseType': { - }, - 'server_record_len': { - }, - 'client_record_len': { - }, - 'ssl_keylog_max_entries': { - } + 'HTMLUnicodeUTF7EncodingMode': { + } + }, + 'EMAIL': { + 'EnvelopeType': { }, - 'ip6': { - 'flowlabel': { - }, - 'traffic_class': { - }, - 'hop_limit': { - } + 'ShuffleHeaders': { }, - 'srcPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } + 'To': { }, - 'rampUpProfile': { - 'min': { - }, - 'max': { - }, - 'increment': { - }, - 'interval': { - }, - 'type': { - } + 'From': { + } + }, + 'Global': { + 'FalsePositives': { }, - 'delayStart': { + 'IOTimeout': { }, - 'rampDist': { - 'upBehavior': { - }, - 'down': { - }, - 'steadyBehavior': { - }, - 'downBehavior': { - }, - 'up': { - }, - 'synRetryMode': { - }, - 'steady': { - } + 'AllowDeprecated': { + }, + 'BehaviorOnTimeout': { + }, + 'MaxTimeoutPerStrike': { }, - 'superflow': { + 'CachePoisoning': { } }, - 'createdOn': { + 'MS_Exchange_Ports': { + 'SystemAttendant': { + } }, - 'tags': [{ - 'id': { + 'PDF': { + 'HexEncodeNames': { }, - 'type': { + 'ShortFilterNames': { }, - 'domainId': { - 'name': { - }, - 'iface': { - }, - 'external': { - } + 'RandomizeDictKeyOrder': { + }, + 'Version': { + }, + 'PreHeaderData': { } - }], - 'revision': { - }, - 'lockedBy': { - }, - 'createdBy': { - }, - 'reportResults': { }, - 'timeline': { - 'timesegment': [{ - 'label': { - }, - 'size': { - }, - 'type': { - } - }] + 'SNMP': { + 'CommunityString': { + } }, - 'id': { + 'COMMAND': { + 'PadCommandWhitespace': { + }, + 'PadPathSlashes': { + }, + 'Malicious': { + } }, - 'contentType': { + 'ICMP': { + 'DoEcho': { + } }, - 'operations': { - 'getComponentPresetNames': [{ - }] - } - }], - 'lockedBy': { - }, - 'createdBy': { - }, - 'name': { - }, - 'contentType': { - }, - 'testComponentTypesDescription': [{ - 'template': { + 'UDP': { + 'DestinationPortType': { + }, + 'SourcePort': { + }, + 'SourcePortType': { + }, + 'DestinationPort': { + } }, - 'name': { + 'IP': { + 'ReadWriteWindowSize': { + }, + 'RFC3128FakePort': { + }, + 'FragEvasion': { + }, + 'RFC3128': { + }, + 'TTL': { + }, + 'MaxReadSize': { + }, + 'RFC3514': { + }, + 'FragPolicy': { + }, + 'MaxFragSize': { + }, + 'FragOrder': { + }, + 'TOS': { + }, + 'IPEvasionsOnBothSides': { + }, + 'MaxWriteSize': { + } }, - 'description': { + 'SMB': { + 'Username': { + }, + 'RandomPipeOffset': { + }, + 'MaxReadSize': { + }, + 'MaxWriteSize': { + }, + 'AuthenticationType': { + }, + 'Password': { + } }, - 'label': { + 'IMAP4': { + 'Username': { + }, + 'IMAPUseProxyMode': { + }, + 'AuthenticationType': { + }, + 'Password': { + } }, - 'type': { - } - }], - 'operations': { - 'stopRun': [{ - }], - 'importModel': [{ - }], - 'realTimeStats': [{ - }], - 'exportModel': [{ - }], - 'add': [{ - }], - 'run': [{ - }], - 'saveAs': [{ - }], - 'save': [{ - }], - 'delete': [{ - }], - 'load': [{ - }], - 'new': [{ - }], - 'remove': [{ - }], - 'search': [{ - }], - 'clone': [{ - }] - } - }, - 'superflow': { - 'actions': [{ - 'actionInfo': [{ - 'name': { + 'HTTP': { + 'ClientChunkedTransferSize': { + }, + 'EncodeUnicodeBareByte': { + }, + 'VirtualHostname': { + }, + 'EncodeUnicodePercentU': { + }, + 'GetParameterRandomPrepend': { + }, + 'EncodeSecondNibbleHex': { + }, + 'EncodeUnicodeInvalid': { + }, + 'ServerChunkedTransferSize': { + }, + 'VersionRandomizeCase': { + }, + 'URIRandomizeCase': { + }, + 'AuthenticationType': { + }, + 'ServerCompression': { + }, + 'VirtualHostnameType': { + }, + 'URIPrependAltSpaces': { + }, + 'URIPrependAltSpacesSize': { + }, + 'EncodeFirstNibbleHex': { + }, + 'MethodRandomInvalid': { + }, + 'VersionRandomInvalid': { + }, + 'ServerChunkedTransfer': { + }, + 'EncodeDoublePercentHex': { + }, + 'URIAppendAltSpacesSize': { + }, + 'EncodeHexRandom': { + }, + 'DirectorySelfReference': { + }, + 'EndRequestFakeHTTPHeader': { + }, + 'EncodeUnicodeAll': { + }, + 'EncodeUnicodeRandom': { + }, + 'Base64EncodePOSTData': { + }, + 'IgnoreHeaders': { + }, + 'RequestFullURL': { + }, + 'HTTPTransportMethods': { + }, + 'Password': { + }, + 'MethodRandomizeCase': { + }, + 'MethodURISpaces': { + }, + 'ShuffleHeaders': { + }, + 'DirectoryFakeRelative': { + }, + 'URIAppendAltSpaces': { + }, + 'MethodURITabs': { + }, + 'RequireLeadingSlash': { + }, + 'EncodeDoubleNibbleHex': { + }, + 'ForwardToBackSlashes': { + }, + 'PadHTTPPost': { + }, + 'MethodURINull': { + }, + 'Username': { + }, + 'VersionUse0_9': { }, - 'description': { + 'EncodeHexAll': { }, - 'realtimeGroup': { + 'PostParameterRandomPrepend': { }, - 'label': { + 'ClientChunkedTransfer': { }, - 'units': { + 'HTTPServerProfile': { } - }], - 'flowlabel': { - }, - 'gotoBlock': { - }, - 'exflows': { - }, - 'matchBlock': { - }, - 'id': { - }, - 'source': { - }, - 'label': { - }, - 'type': { - }, - 'params': { - }, - 'flowid': { - }, - 'operations': { - 'getActionInfo': [{ - 'name': { - }, - 'description': { - }, - 'realtimeGroup': { - }, - 'label': { - }, - 'units': { - } - }], - 'getActionChoices': [{ - }] - } - }], - 'settings': [{ - 'name': { - }, - 'description': { - }, - 'realtimeGroup': { - }, - 'label': { - }, - 'units': { - } - }], - 'percentFlows': { - }, - 'seed': { - }, - 'hosts': [{ - 'iface': { }, - 'hostname': { - }, - 'ip': { - 'type': { + 'SELF': { + 'ApplicationPings': { + }, + 'TraversalVirtualDirectory': { + }, + 'AppSimUseNewTuple': { + }, + 'StartingFuzzerOffset': { + }, + 'URI': { + }, + 'FileTransferRandCase': { + }, + 'UnicodeTraversalWindowsDirectory': { + }, + 'AREA-ID': { + }, + 'AppSimAppProfile': { + }, + 'Repetitions': { + }, + 'FileTransferExtension': { + }, + 'Password': { + }, + 'AppSimSmartflow': { + }, + 'HTMLPadding': { + }, + 'MaximumIterations': { + }, + 'FileTransferFile': { + }, + 'AS-ID': { + }, + 'AppSimSuperflow': { + }, + 'EndingFuzzerOffset': { + }, + 'ReportCLSIDs': { + }, + 'DelaySeconds': { + }, + 'Username': { + }, + 'UnicodeTraversalVirtualDirectory': { + }, + 'TraversalWindowsDirectory': { + }, + 'FileTransferName': { + }, + 'MaximumRuntime': { + }, + 'ROUTER-ID': { + }, + 'TraversalRequestFilename': { } }, - 'id': { - } - }], - 'author': { - }, - 'estimate_bytes': { - }, - 'estimate_flows': { - }, - 'weight': { - }, - 'description': { - }, - 'label': { - }, - 'params': { - }, - 'constraints': { - }, - 'createdOn': { - }, - 'revision': { - }, - 'lockedBy': { - }, - 'flows': [{ - 'singleNP': { + 'SHELLCODE': { + 'RandomNops': { + } }, - 'name': { + 'SSL': { + 'ClientCertificateFile': { + }, + 'EnableOnAllTCP': { + }, + 'SecurityProtocol': { + }, + 'DestPortOverride': { + }, + 'ServerCertificateFile': { + }, + 'ServerKeyFile': { + }, + 'EnableOnAllHTTP': { + }, + 'ClientKeyFile': { + }, + 'Cipher': { + }, + 'DisableDefaultStrikeSSL': { + } }, - 'from': { + 'SUNRPC': { + 'OneFragmentMultipleTCPSegmentsCount': { + }, + 'RPCFragmentTCPSegmentDistribution': { + }, + 'TCPFragmentSize': { + }, + 'NullCredentialPadding': { + } }, - 'label': { + 'FILETRANSFER': { + 'SmtpEncoding': { + }, + 'CompressionMethod': { + }, + 'FtpTransferMethod': { + }, + 'TransportProtocol': { + }, + 'Imap4Encoding': { + }, + 'Pop3Encoding': { + } }, - 'id': { + 'UNIX': { + 'PadCommandWhitespace': { + }, + 'PadPathSlashes': { + } }, - 'to': { + 'SMTP': { + 'SMTPUseProxyMode': { + }, + 'PadCommandWhitespace': { + }, + 'ShuffleHeaders': { + } }, - 'params': { + 'Ethernet': { + 'MTU': { + } }, - 'flowcount': { + 'MALWARE': { + 'FilenameInsertEnvVar': { + }, + 'SmtpEncoding': { + }, + 'CompressionMethod': { + }, + 'FtpTransferMethod': { + }, + 'TransportProtocol': { + }, + 'Imap4Encoding': { + }, + 'Pop3Encoding': { + } }, - 'operations': { - 'getFlowChoices': [{ - 'lockedBy': { - }, - 'createdBy': { - }, - 'author': { + 'SIP': { + 'EnvelopeType': { + }, + 'CompactHeaders': { + }, + 'PadHeadersWhitespace': { + }, + 'RandomizeCase': { + }, + 'ShuffleHeaders': { + }, + 'To': { + }, + 'From': { + }, + 'PadHeadersLineBreak': { + } + }, + 'operations': { + 'getStrikeOptions': [{ + 'name': { }, 'description': { }, - 'label': { - }, - 'createdOn': { + 'realtimeGroup': { }, - 'contentType': { + 'label': { }, - 'revision': { + 'units': { } - }], - 'getCannedFlows': [{ }] } - }], - 'generated': { - }, - 'createdBy': { }, - 'percentBandwidth': { + 'createdOn': { }, - 'name': { + 'clazz': { }, - 'contentType': { + 'revision': { }, 'operations': { - 'addFlow': [{ - }], - 'addHost': [{ + 'search': [{ }], - 'delete': [{ + 'load': [{ }], - 'importResource': [{ + 'new': [{ }], - 'addAction': [{ + 'delete': [{ }], 'saveAs': [{ }], 'save': [{ - }], - 'removeAction': [{ - }], - 'load': [{ - }], - 'new': [{ - }], - 'search': [{ - }], - 'removeFlow': [{ }] } }, @@ -3581,7 +2435,7 @@ class DataModelMeta(type): }, 'name': { }, - 'contentType': { + 'clazz': { } }], 'phase': [{ @@ -3664,1124 +2518,2416 @@ class DataModelMeta(type): }, 'name': { }, - 'contentType': { + 'clazz': { }, 'operations': { - 'save': [{ - }], - 'saveAs': [{ - }], - 'delete': [{ - }], - 'load': [{ - }], 'createNewCustom': [{ - }] - } - }, - 'strikeList': { - 'author': { - }, - 'description': { - }, - 'label': { - }, - 'queryString': { - }, - 'SecurityBehavior': { - }, - 'strikes': [{ - 'path': { - }, - 'strike': { - }, - 'strikeset': { - } - }], - 'StrikeOptions': { - }, - 'createdOn': { - }, - 'revision': { - }, - 'lockedBy': { - }, - 'createdBy': { - }, - 'name': { - }, - 'contentType': { - }, - 'numStrikes': { - }, - 'operations': { - 'delete': [{ - }], - 'importStrikeList': [{ }], - 'remove': [{ - }], - 'add': [{ + 'delete': [{ }], - 'exportStrikeList': [{ + 'save': [{ }], 'saveAs': [{ }], - 'save': [{ - }], 'load': [{ - }], - 'new': [{ - }], - 'search': [{ }] } }, - 'appProfile': { - 'weightType': { - }, - 'lockedBy': { - }, - 'createdBy': { - }, - 'author': { + 'topology': { + 'ixoslicensed': { }, - 'name': { + 'ixos': { }, - 'superflow': [{ - 'settings': [{ - 'name': { - }, - 'description': { - }, - 'realtimeGroup': { - }, - 'label': { - }, - 'units': { - } - }], - 'percentFlows': { - }, - 'seed': { - }, - 'author': { + 'chain': { + 'name': { }, - 'estimate_bytes': { + 'remotes': { + } + }, + 'cnState': [{ + 'cnSlotNo': { }, - 'estimate_flows': { + 'licensed': { }, - 'weight': { + 'cnName': { }, - 'description': { + 'firmwareUpgrade': { }, - 'label': { + 'cnSerial': { }, - 'params': { + 'cnId': { }, - 'constraints': { + 'state': { }, - 'createdOn': { + 'marketingName': { + } + }], + 'runningTest': [{ + 'phase': { }, - 'revision': { + 'reservedEngines': [{ + }], + 'timeRemaining': { }, - 'lockedBy': { + 'runtime': { }, - 'generated': { + 'label': { }, - 'createdBy': { + 'completed': { }, - 'percentBandwidth': { + 'initProgress': { }, - 'name': { + 'result': { }, - 'contentType': { - } - }], - 'description': { - }, - 'label': { - }, - 'createdOn': { - }, - 'contentType': { - }, - 'revision': { - }, - 'operations': { - 'load': [{ - }], - 'new': [{ - }], - 'importAppProfile': [{ - }], - 'saveAs': [{ - }], - 'save': [{ - }], - 'recompute': [{ - }], - 'add': [{ - }], - 'delete': [{ - }], - 'exportAppProfile': [{ - }], - 'remove': [{ - }], - 'search': [{ - }] - } - }, - 'capture': { - 'pcapFilesize': { - }, - 'avgPacketSize': { - }, - 'author': { - }, - 'udpPackets': { - }, - 'description': { - }, - 'label': { - }, - 'createdOn': { - }, - 'name': { - }, - 'revision': { - }, - 'duration': { - }, - 'ipv4Packets': { - }, - 'ipv6Packets': { - }, - 'lockedBy': { - }, - 'tcpPackets': { - }, - 'createdBy': { - }, - 'avgFlowLength': { - }, - 'totalPackets': { - }, - 'contentType': { - }, - 'operations': { - 'importCapture': [{ + 'port': [{ }], - 'search': [{ - }] - } - }, - 'administration': { - 'userSettings': [{ - 'name': { + 'capturing': { + }, + 'progress': { }, - 'content': { + 'testid': { + 'host': { + }, + 'name': { + }, + 'iteration': { + } }, - 'operations': { - 'setAutoReserve': [{ - }], - 'changeUserSetting': [{ - }] + 'state': { + }, + 'user': { + }, + 'currentTest': { } }], - 'atiLicensing': { - 'license': [{ - 'expires': { + 'model': { + }, + 'slot': [{ + 'port': [{ + 'note': { }, - 'issuedBy': { + 'auto': { }, - 'name': { + 'link': { }, - 'boardserialno': { + 'media': { }, - 'issued': { + 'speed': { }, - 'slotNo': { + 'number': { }, - 'maintenance': { - 'maintenanceExpiration': { - } + 'ifname': { }, - 'serialno': { + 'capturing': { + }, + 'model': { + }, + 'id': { + }, + 'state': { + }, + 'group': { + }, + 'owner': { + }, + 'portGroup': { + }, + 'precoder': { + }, + 'capture': { + }, + 'active': { + }, + 'mtu': { + }, + 'currentMode': { + }, + 'exportProgress': { + }, + 'ifmacaddr': { + }, + 'reservedBy': { + }, + 'fullduplex': { + }, + 'possibleModes': { + }, + 'ignorepause': { } }], - 'operations': { - 'importAtiLicense': [{ - }] - } - }, - 'systemSettings': { - 'strikepackUpdate': { - 'password': { + 'np': [{ + 'note': { }, - 'interval': { + 'cnId': { }, - 'check': { + 'reservedBy': { }, - 'username': { + 'name': { + }, + 'id': { + }, + 'state': { + }, + 'group': { + }, + 'resourceType': { } + }], + 'mode': { }, - 'author': { - }, - 'description': { - }, - 'label': { - }, - 'guardrailSettings': { - 'enableStrictMode': { + 'fpga': [{ + 'note': { }, - 'testStop': { + 'reservedBy': { }, - 'testStatusWarning': { + 'name': { }, - 'stopOnLinkdown': { + 'id': { }, - 'testStartPrevention': { + 'state': { + }, + 'group': { + }, + 'resourceType': { } + }], + 'firmwareUpgrade': { }, - 'createdOn': { - }, - 'revision': { - }, - 'vacuumSettings': { - 'vacuumWindowHigh': { - }, - 'autoVacuum': { + 'remoteInfo': { + 'host': { }, - 'vacuumWindowLow': { + 'slotId': { }, - 'vacuumWindowTZ': { + 'state': { } }, - 'lockedBy': { + 'interfaceCount': { }, - 'createdBy': { + 'model': { }, - 'softwareUpdate': { - 'password': { + 'state': { + }, + 'id': { + }, + 'serialNumber': { + } + }], + 'serialNumber': { + }, + 'resourceOverview': { + 'resourceOverviewList': [{ + 'l23Count': { }, - 'interval': { + 'l47Count': { }, - 'check': { + 'portCount': { }, - 'username': { + 'userAndGroup': { } - }, - 'contentType': { - } + }] }, 'operations': { - 'logs': [{ + 'getFanoutModes': [{ + 'cardModel': { + }, + 'fanout': [{ + 'name': { + }, + 'fanoutId': { + } + }] }], - 'importAllTests': [{ + 'softReboot': [{ }], - 'exportAllTests': [{ + 'reserveResource': [{ + }], + 'unreserve': [{ + }], + 'releaseAllCnResources': [{ + }], + 'addPortNote': [{ + }], + 'run': [{ + }], + 'setPortFanoutMode': [{ + }], + 'reserveResources': [{ + }], + 'setPortSettings': [{ + }], + 'setCardMode': [{ + }], + 'setCardSpeed': [{ + }], + 'setCardFanout': [{ + }], + 'setPerfAcc': [{ + }], + 'reboot': [{ + }], + 'releaseResources': [{ + }], + 'reserve': [{ + }], + 'rebootComputeNode': [{ + }], + 'releaseResource': [{ + }], + 'reserveAllCnResources': [{ + }], + 'getPortAvailableModes': [{ + 'modes': [{ + 'name': { + }, + 'fanoutId': { + } + }], + 'slot': { + }, + 'port': { + } + }], + 'addResourceNote': [{ + }], + 'stopRun': [{ + }], + 'exportCapture': [{ }] } }, - 'network': { - 'lockedBy': { + 'testmodel': { + 'testComponentTypesDescription': [{ + 'template': { + }, + 'name': { + }, + 'description': { + }, + 'label': { + }, + 'type': { + } + }], + 'lastrunby': { }, - 'createdBy': { + 'summaryInfo': { + 'totalSubnets': { + }, + 'totalMacAddresses': { + }, + 'totalUniqueStrikes': { + }, + 'totalUniqueSuperflows': { + }, + 'requiredMTU': { + } }, 'author': { }, - 'name': { - }, - 'interfaceCount': { + 'lastrun': { }, 'description': { }, 'label': { }, - 'networkModel': { - 'ip_router': [{ - 'gateway_ip_address': { + 'sharedComponentSettings': { + 'maximumConcurrentFlows': { + 'current': { }, - 'netmask': { + 'original': { }, - 'default_container': { + 'content': { + } + }, + 'totalAttacks': { + 'current': { }, - 'id': { + 'original': { }, - 'ip_address': { + 'content': { } - }], - 'ue_info': [{ - 'imsi_base': { + }, + 'totalBandwidth': { + 'current': { }, - 'secret_key_step': { + 'original': { }, - 'count': { + 'content': { + } + }, + 'maxFlowCreationRate': { + 'current': { }, - 'operator_variant': { + 'original': { }, - 'secret_key': { + 'content': { + } + }, + 'totalAddresses': { + 'current': { }, - 'imei_base': { + 'original': { }, - 'msisdn_base': { + 'content': { + } + }, + 'samplePeriod': { + 'current': { }, - 'maxmbps_per_ue': { + 'original': { }, - 'mobility_session_infos': [{ - 'id': { + 'content': { + } + } + }, + 'createdOn': { + }, + 'network': { + }, + 'revision': { + }, + 'duration': { + }, + 'result': { + }, + 'component': [{ + 'author': { + }, + 'originalPreset': { + }, + 'active': { + }, + 'originalPresetLabel': { + }, + 'description': { + }, + 'label': { + }, + 'type': { + }, + '@type:liveappsim': { + 'app': { + 'removeUnknownTcpUdp': { }, - 'value': { + 'replace_streams': { + }, + 'removeUnknownSSL': { + }, + 'streamsPerSuperflow': { + }, + 'removedns': { + }, + 'fidelity': { } - }], - 'id': { - } - }], - 'ip_ldap_server': [{ - 'auth_timeout': { - }, - 'ldap_username_start_tag': { - }, - 'ldap_user_min': { - }, - 'ldap_user_count': { }, - 'authentication_rate': { + 'tcp': { + 'disable_ack_piggyback': { + }, + 'delay_acks': { + }, + 'mss': { + }, + 'raw_flags': { + }, + 'psh_every_segment': { + }, + 'ecn': { + }, + 'tcp_window_scale': { + }, + 'initial_receive_window': { + }, + 'reset_at_end': { + }, + 'dynamic_receive_window_size': { + }, + 'tcp_connect_delay_ms': { + }, + 'aging_time_data_type': { + }, + 'tcp_4_way_close': { + }, + 'shutdown_data': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'aging_time': { + }, + 'add_timestamps': { + }, + 'retries': { + }, + 'handshake_data': { + }, + 'ack_every_n': { + }, + 'syn_data_padding': { + }, + 'retry_quantum_ms': { + }, + 'delay_acks_ms': { + } }, - 'ldap_password_start_tag': { + 'inflateDeflate': { }, - 'ldap_user_max': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { + } }, - 'id': { + 'sessions': { + 'openFast': { + }, + 'closeFast': { + }, + 'max': { + }, + 'allocationOverride': { + }, + 'targetPerSecond': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'maxPerSecond': { + }, + 'engine': { + }, + 'statDetail': { + }, + 'emphasis': { + }, + 'maxActive': { + } }, - 'ldap_server_address': { + 'loadprofile': { + 'name': { + }, + 'label': { + } }, - 'dn_fixed_val': { - } - }], - 'mme_sgw_pgw6': [{ - 'ue_info': { + 'ip': { + 'tos': { + }, + 'ttl': { + } }, - 'max_sessions': { + 'ip6': { + 'flowlabel': { + }, + 'traffic_class': { + }, + 'hop_limit': { + } }, - 'lease_address': { + 'srcPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'dns': { + 'tputscalefactor': { }, - 'plmn': { + 'rampUpProfile': { + 'min': { + }, + 'max': { + }, + 'increment': { + }, + 'interval': { + }, + 'type': { + } }, - 'ip_address': { + 'concurrencyscalefactor': { }, - 'sgw_advertised_sgw': { + 'delayStart': { }, - 'sgw_advertised_pgw': { + 'rampDist': { + 'upBehavior': { + }, + 'down': { + }, + 'steadyBehavior': { + }, + 'downBehavior': { + }, + 'up': { + }, + 'synRetryMode': { + }, + 'steady': { + } }, - 'lease_address_v6': { + 'sfratescalefactor': { }, - 'gateway_ip_address': { + 'liveProfile': { + } + }, + '@type:layer3advanced': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'rate': { + }, + 'increment': { + }, + 'type': { + }, + 'ramptype': { + } }, - 'default_container': { + 'bidirectional': { }, - 'id': { + 'enableTCP': { }, - 'prefix_length': { - } - }], - 'mobility_session_info': [{ - 'password': { + 'slowStart': { }, - 'bearers': [{ - 'qci_label': { + 'Templates': { + 'TemplateType': { } - }], - 'id': { }, - 'access_point_name': { + 'slowStartFps': { }, - 'username': { + 'duration': { + 'disable_nd_probes': { + }, + 'durationTime': { + }, + 'durationFrames': { + } }, - 'initiated_dedicated_bearers': { - } - }], - 'ggsn6': [{ - 'lease_address': { + 'enablePerStreamStats': { }, - 'count': { + 'tuple_gen_seed': { }, - 'dns': { + 'payload': { + 'data': { + }, + 'type': { + }, + 'dataWidth': { + } }, - 'ggsn_advertised_control_ip_address': { + 'advancedUDP': { + 'lengthVal': { + }, + 'lengthField': { + }, + 'checksumVal': { + }, + 'checksumField': { + } }, - 'ip_address': { + 'delayStart': { }, - 'ggsn_advertised_data_ip_address': { + 'payloadAdvanced': { + 'udfMode': { + }, + 'udfLength': { + }, + 'udfDataWidth': { + }, + 'udfOffset': { + } }, - 'lease_address_v6': { + 'sizeDist': { + 'increment': { + }, + 'type': { + }, + 'min': { + }, + 'rate': { + }, + 'mixlen2': { + }, + 'mixweight6': { + }, + 'mixlen1': { + }, + 'mixweight7': { + }, + 'mixlen4': { + }, + 'mixweight4': { + }, + 'mixlen3': { + }, + 'mixweight5': { + }, + 'mixlen6': { + }, + 'mixlen5': { + }, + 'mixlen8': { + }, + 'mixweight8': { + }, + 'mixlen7': { + }, + 'mixweight9': { + }, + 'mixlen9': { + }, + 'mixweight2': { + }, + 'max': { + }, + 'mixweight3': { + }, + 'mixweight1': { + }, + 'mixlen10': { + }, + 'mixweight10': { + }, + 'unit': { + } }, - 'gateway_ip_address': { + 'advancedIPv4': { + 'lengthVal': { + }, + 'optionHeaderField': { + }, + 'optionHeaderData': { + }, + 'lengthField': { + }, + 'checksumVal': { + }, + 'tos': { + }, + 'checksumField': { + }, + 'ttl': { + } }, - 'default_container': { + 'advancedIPv6': { + 'flowLabel': { + }, + 'lengthVal': { + }, + 'extensionHeaderField': { + }, + 'lengthField': { + }, + 'nextHeader': { + }, + 'trafficClass': { + }, + 'extensionHeaderData': { + }, + 'hopLimit': { + } + } + }, + '@type:appsim': { + 'app': { + 'replace_streams': { + }, + 'streamsPerSuperflow': { + }, + 'removedns': { + }, + 'fidelity': { + } }, - 'id': { + 'tcp': { + 'disable_ack_piggyback': { + }, + 'delay_acks': { + }, + 'mss': { + }, + 'raw_flags': { + }, + 'psh_every_segment': { + }, + 'ecn': { + }, + 'tcp_window_scale': { + }, + 'initial_receive_window': { + }, + 'reset_at_end': { + }, + 'dynamic_receive_window_size': { + }, + 'tcp_connect_delay_ms': { + }, + 'aging_time_data_type': { + }, + 'tcp_4_way_close': { + }, + 'shutdown_data': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'aging_time': { + }, + 'add_timestamps': { + }, + 'retries': { + }, + 'handshake_data': { + }, + 'ack_every_n': { + }, + 'syn_data_padding': { + }, + 'retry_quantum_ms': { + }, + 'delay_acks_ms': { + } }, - 'prefix_length': { - } - }], - 'ip_static_hosts': [{ - 'mpls_list': [{ - 'id': { + 'rateDist': { + 'unit': { + }, + 'min': { }, - 'value': { + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { } - }], - 'ip_selection_type': { - }, - 'count': { - }, - 'dns': { - }, - 'psn': { - }, - 'psn_netmask': { }, - 'ip_address': { + 'sessions': { + 'openFast': { + }, + 'closeFast': { + }, + 'max': { + }, + 'allocationOverride': { + }, + 'targetPerSecond': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'maxPerSecond': { + }, + 'engine': { + }, + 'statDetail': { + }, + 'emphasis': { + }, + 'maxActive': { + } }, - 'tags': { + 'loadprofile': { + 'name': { + }, + 'label': { + } }, - 'proxy': { + 'profile': { }, - 'maxmbps_per_host': { + 'ip': { + 'tos': { + }, + 'ttl': { + } }, - 'gateway_ip_address': { + 'resources': { + 'expand': { + } }, - 'netmask': { + 'experimental': { + 'tcpSegmentsBurst': { + }, + 'unify_l4_bufs': { + } }, - 'ldap': { + 'ssl': { + 'ssl_client_keylog': { + }, + 'upgrade': { + }, + 'sslReuseType': { + }, + 'server_record_len': { + }, + 'client_record_len': { + }, + 'ssl_keylog_max_entries': { + } }, - 'default_container': { + 'ip6': { + 'flowlabel': { + }, + 'traffic_class': { + }, + 'hop_limit': { + } }, - 'id': { + 'srcPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'dns_proxy': { + 'rampUpProfile': { + 'min': { + }, + 'max': { + }, + 'increment': { + }, + 'interval': { + }, + 'type': { + } }, - 'behind_snapt': { + 'delayStart': { }, - 'enable_stats': { + 'rampDist': { + 'upBehavior': { + }, + 'down': { + }, + 'steadyBehavior': { + }, + 'downBehavior': { + }, + 'up': { + }, + 'synRetryMode': { + }, + 'steady': { + } } - }], - 'ggsn': [{ - 'lease_address': { - }, - 'count': { + }, + '@type:security_all': { + 'maxConcurrAttacks': { }, - 'dns': { + 'attackRetries': { }, - 'ggsn_advertised_control_ip_address': { + 'maxPacketsPerSecond': { }, - 'ip_address': { + 'attackPlan': { }, - 'ggsn_advertised_data_ip_address': { + 'randomSeed': { }, - 'lease_address_v6': { + 'delayStart': { }, - 'gateway_ip_address': { + 'attackProfile': { }, - 'netmask': { + 'attackPlanIterations': { }, - 'default_container': { + 'attackPlanIterationDelay': { }, - 'id': { + 'maxAttacksPerSecond': { } - }], - 'ue': [{ - 'allocation_rate': { - }, - 'mobility_interval_ms': { - }, - 'ue_info': { - }, - 'dns': { - }, - 'mobility_action': { + }, + '@type:security_np': { + 'attackRetries': { }, - 'tags': { + 'sessions': { + 'max': { + }, + 'maxPerSecond': { + } }, - 'proxy': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { + } }, - 'default_container': { + 'attackPlan': { }, - 'mobility_with_traffic': { + 'randomSeed': { }, - 'id': { + 'delayStart': { }, - 'behind_snapt': { + 'attackProfile': { }, - 'request_ipv6': { + 'attackPlanIterations': { }, - 'enable_stats': { + 'attackPlanIterationDelay': { } - }], - 'enodeb_mme_sgw6': [{ - 'dns': { - }, - 'plmn': { - }, - 'ip_allocation_mode': { - }, - 'mme_ip_address': { - }, - 'pgw_ip_address': { + }, + '@type:layer3': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'rate': { + }, + 'increment': { + }, + 'type': { + }, + 'ramptype': { + } }, - 'ue_address': { + 'bidirectional': { }, - 'gateway_ip_address': { + 'randomizeIP': { }, - 'default_container': { + 'enableTCP': { }, - 'id': { + 'slowStart': { }, - 'prefix_length': { - } - }], - 'ds_lite_aftr': [{ - 'count': { + 'Templates': { + 'TemplateType': { + } }, - 'ip_address': { + 'srcPort': { }, - 'ipv6_addr_alloc_mode': { + 'slowStartFps': { }, - 'gateway_ip_address': { + 'duration': { + 'disable_nd_probes': { + }, + 'durationTime': { + }, + 'durationFrames': { + } }, - 'default_container': { + 'udpSrcPortMode': { }, - 'b4_count': { + 'dstPort': { }, - 'b4_ip_address': { + 'payload': { + 'data': { + }, + 'type': { + }, + 'dataWidth': { + } }, - 'id': { + 'syncIP': { }, - 'prefix_length': { - } - }], - 'ipsec_router': [{ - 'gateway_ip_address': { + 'addrGenMode': { }, - 'netmask': { + 'maxStreams': { }, - 'ipsec': { + 'dstPortMask': { }, - 'default_container': { + 'udpDstPortMode': { }, - 'id': { + 'advancedUDP': { + 'lengthVal': { + }, + 'lengthField': { + }, + 'checksumVal': { + }, + 'checksumField': { + } }, - 'ip_address': { + 'delayStart': { }, - 'ike_peer_ip_address': { - } - }], - 'dhcpv6c_req_opts_cfg': [{ - 'dhcpv6v_req_preference': { + 'payloadAdvanced': { + 'udfMode': { + }, + 'udfLength': { + }, + 'udfDataWidth': { + }, + 'udfOffset': { + } }, - 'dhcpv6v_req_dns_list': { + 'sizeDist': { + 'increment': { + }, + 'type': { + }, + 'min': { + }, + 'rate': { + }, + 'mixlen2': { + }, + 'mixweight6': { + }, + 'mixlen1': { + }, + 'mixweight7': { + }, + 'mixlen4': { + }, + 'mixweight4': { + }, + 'mixlen3': { + }, + 'mixweight5': { + }, + 'mixlen6': { + }, + 'mixlen5': { + }, + 'mixlen8': { + }, + 'mixweight8': { + }, + 'mixlen7': { + }, + 'mixweight9': { + }, + 'mixlen9': { + }, + 'mixweight2': { + }, + 'max': { + }, + 'mixweight3': { + }, + 'mixweight1': { + }, + 'mixlen10': { + }, + 'mixweight10': { + }, + 'unit': { + } }, - 'dhcpv6v_req_dns_resolvers': { + 'advancedIPv4': { + 'lengthVal': { + }, + 'optionHeaderField': { + }, + 'optionHeaderData': { + }, + 'lengthField': { + }, + 'checksumVal': { + }, + 'tos': { + }, + 'checksumField': { + }, + 'ttl': { + } }, - 'dhcpv6v_req_server_id': { + 'srcPortMask': { }, - 'id': { + 'advancedIPv6': { + 'flowLabel': { + }, + 'lengthVal': { + }, + 'extensionHeaderField': { + }, + 'lengthField': { + }, + 'nextHeader': { + }, + 'trafficClass': { + }, + 'extensionHeaderData': { + }, + 'hopLimit': { + } } - }], - 'sgsn': [{ - 'gateway_ip_address': { - }, - 'netmask': { + }, + '@type:layer4': { + 'tcp': { + 'disable_ack_piggyback': { + }, + 'delay_acks': { + }, + 'mss': { + }, + 'raw_flags': { + }, + 'psh_every_segment': { + }, + 'ecn': { + }, + 'tcp_window_scale': { + }, + 'initial_receive_window': { + }, + 'reset_at_end': { + }, + 'dynamic_receive_window_size': { + }, + 'tcp_connect_delay_ms': { + }, + 'aging_time_data_type': { + }, + 'tcp_4_way_close': { + }, + 'shutdown_data': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'aging_time': { + }, + 'add_timestamps': { + }, + 'retries': { + }, + 'handshake_data': { + }, + 'ack_every_n': { + }, + 'syn_data_padding': { + }, + 'retry_quantum_ms': { + }, + 'delay_acks_ms': { + } }, - 'default_container': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { + } }, - 'ggsn_ip_address': { + 'sessions': { + 'openFast': { + }, + 'closeFast': { + }, + 'max': { + }, + 'allocationOverride': { + }, + 'targetPerSecond': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'maxPerSecond': { + }, + 'engine': { + }, + 'statDetail': { + }, + 'emphasis': { + }, + 'maxActive': { + } }, - 'id': { + 'loadprofile': { + 'name': { + }, + 'label': { + } }, - 'ip_address': { - } - }], - 'enodeb_mme6': [{ - 'dns': { + 'ip': { + 'tos': { + }, + 'ttl': { + } }, - 'plmn': { + 'ip6': { + 'flowlabel': { + }, + 'traffic_class': { + }, + 'hop_limit': { + } }, - 'ip_allocation_mode': { + 'srcPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'enodebs': [{ - 'gateway_ip_address': { + 'rampUpProfile': { + 'min': { }, - 'default_container': { + 'max': { }, - 'enodebCount': { + 'increment': { }, - 'ip_address': { + 'interval': { }, - 'prefix_length': { + 'type': { } - }], - 'mme_ip_address': { - }, - 'pgw_ip_address': { - }, - 'ue_address': { - }, - 'gateway_ip_address': { - }, - 'default_container': { }, - 'sgw_ip_address': { + 'delayStart': { }, - 'id': { + 'payload': { + 'add_timestamp': { + }, + 'data': { + }, + 'http_type': { + }, + 'transport': { + }, + 'type': { + } }, - 'prefix_length': { - } - }], - 'plmn': [{ - 'mnc': { + 'rampDist': { + 'upBehavior': { + }, + 'down': { + }, + 'steadyBehavior': { + }, + 'downBehavior': { + }, + 'up': { + }, + 'synRetryMode': { + }, + 'steady': { + } }, - 'description': { + 'packetsPerSession': { }, - 'id': { + 'payloadSizeDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'mcc': { + 'dstPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } } - }], - 'sgw_pgw': [{ - 'max_sessions': { - }, - 'lease_address': { - }, - 'dns': { - }, - 'plmn': { - }, - 'ip_address': { - }, - 'sgw_advertised_sgw': { - }, - 'sgw_advertised_pgw': { - }, - 'lease_address_v6': { + }, + '@type:playback': { + 'tcp': { + 'disable_ack_piggyback': { + }, + 'delay_acks': { + }, + 'mss': { + }, + 'raw_flags': { + }, + 'psh_every_segment': { + }, + 'ecn': { + }, + 'tcp_window_scale': { + }, + 'initial_receive_window': { + }, + 'reset_at_end': { + }, + 'dynamic_receive_window_size': { + }, + 'tcp_connect_delay_ms': { + }, + 'aging_time_data_type': { + }, + 'tcp_4_way_close': { + }, + 'shutdown_data': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'aging_time': { + }, + 'add_timestamps': { + }, + 'retries': { + }, + 'handshake_data': { + }, + 'ack_every_n': { + }, + 'syn_data_padding': { + }, + 'retry_quantum_ms': { + }, + 'delay_acks_ms': { + } }, - 'gateway_ip_address': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { + } }, - 'netmask': { + 'sessions': { + 'openFast': { + }, + 'closeFast': { + }, + 'max': { + }, + 'allocationOverride': { + }, + 'targetPerSecond': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'maxPerSecond': { + }, + 'engine': { + }, + 'statDetail': { + }, + 'emphasis': { + }, + 'maxActive': { + } }, - 'default_container': { + 'loadprofile': { + 'name': { + }, + 'label': { + } }, - 'id': { - } - }], - 'ip6_dhcp_server': [{ - 'ia_type': { + 'ip': { + 'tos': { + }, + 'ttl': { + } }, - 'pool_size': { + 'modification': { + 'startpacket': { + }, + 'originalport': { + }, + 'newport': { + }, + 'replay': { + }, + 'bpfstring': { + }, + 'single': { + }, + 'loopcount': { + }, + 'endpacket': { + }, + 'independentflows': { + }, + 'serveripinjection': { + } }, - 'ip_address': { + 'ip6': { + 'flowlabel': { + }, + 'traffic_class': { + }, + 'hop_limit': { + } }, - 'pool_prefix_length': { + 'srcPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'offer_lifetime': { + 'rampUpProfile': { + 'min': { + }, + 'max': { + }, + 'increment': { + }, + 'interval': { + }, + 'type': { + } }, - 'max_lease_time': { + 'delayStart': { }, - 'gateway_ip_address': { + 'file': { }, - 'default_container': { + 'rampDist': { + 'upBehavior': { + }, + 'down': { + }, + 'steadyBehavior': { + }, + 'downBehavior': { + }, + 'up': { + }, + 'synRetryMode': { + }, + 'steady': { + } }, - 'pool_base_address': { + 'behavior': { + } + }, + '@type:layer2': { + 'bidirectional': { }, - 'default_lease_time': { + 'maxStreams': { }, - 'pool_dns_address1': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'rate': { + }, + 'increment': { + }, + 'type': { + }, + 'ramptype': { + } }, - 'id': { + 'advanced': { + 'ethTypeField': { + }, + 'ethTypeVal': { + } }, - 'prefix_length': { + 'slowStart': { }, - 'pool_dns_address2': { - } - }], - 'ip6_external_hosts': [{ - 'proxy': { + 'slowStartFps': { }, - 'count': { + 'duration': { + 'disable_nd_probes': { + }, + 'durationTime': { + }, + 'durationFrames': { + } }, - 'id': { + 'delayStart': { }, - 'ip_address': { + 'payloadAdvanced': { + 'udfMode': { + }, + 'udfLength': { + }, + 'udfDataWidth': { + }, + 'udfOffset': { + } }, - 'behind_snapt': { + 'sizeDist': { + 'increment': { + }, + 'type': { + }, + 'min': { + }, + 'rate': { + }, + 'mixlen2': { + }, + 'mixweight6': { + }, + 'mixlen1': { + }, + 'mixweight7': { + }, + 'mixlen4': { + }, + 'mixweight4': { + }, + 'mixlen3': { + }, + 'mixweight5': { + }, + 'mixlen6': { + }, + 'mixlen5': { + }, + 'mixlen8': { + }, + 'mixweight8': { + }, + 'mixlen7': { + }, + 'mixweight9': { + }, + 'mixlen9': { + }, + 'mixweight2': { + }, + 'max': { + }, + 'mixweight3': { + }, + 'mixweight1': { + }, + 'mixlen10': { + }, + 'mixweight10': { + }, + 'unit': { + } }, - 'tags': { + 'payload': { + 'data': { + }, + 'type': { + }, + 'dataWidth': { + } } - }], - 'dhcpv6c_tout_and_retr_cfg': [{ - 'dhcp6c_inforeq_attempts': { - }, - 'dhcp6c_initial_rebind_tout': { + }, + '@type:stackscrambler': { + 'tcp': { + 'disable_ack_piggyback': { + }, + 'delay_acks': { + }, + 'mss': { + }, + 'raw_flags': { + }, + 'psh_every_segment': { + }, + 'ecn': { + }, + 'tcp_window_scale': { + }, + 'initial_receive_window': { + }, + 'reset_at_end': { + }, + 'dynamic_receive_window_size': { + }, + 'tcp_connect_delay_ms': { + }, + 'aging_time_data_type': { + }, + 'tcp_4_way_close': { + }, + 'shutdown_data': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'aging_time': { + }, + 'add_timestamps': { + }, + 'retries': { + }, + 'handshake_data': { + }, + 'ack_every_n': { + }, + 'syn_data_padding': { + }, + 'retry_quantum_ms': { + }, + 'delay_acks_ms': { + } }, - 'dhcp6c_sol_attempts': { + 'scrambleOptions': { + 'maxCorruptions': { + }, + 'badIPFlags': { + }, + 'badIPFragOffset': { + }, + 'badIPLength': { + }, + 'badUrgentPointer': { + }, + 'badIPFlowLabel': { + }, + 'badEthType': { + }, + 'badTCPOptions': { + }, + 'badGTPNext': { + }, + 'handshakeTCP': { + }, + 'badIPChecksum': { + }, + 'badSCTPLength': { + }, + 'badTCPFlags': { + }, + 'badICMPType': { + }, + 'badIPTTL': { + }, + 'badIPProtocol': { + }, + 'badSCTPFlags': { + }, + 'badGTPFlags': { + }, + 'badIPVersion': { + }, + 'badL4HeaderLength': { + }, + 'badL4Checksum': { + }, + 'badIPOptions': { + }, + 'badSCTPType': { + }, + 'badSCTPChecksum': { + }, + 'badGTPNpdu': { + }, + 'badICMPCode': { + }, + 'badSCTPVerificationTag': { + }, + 'badIPTOS': { + }, + 'badIPTotalLength': { + }, + 'badGTPLen': { + }, + 'badGTPType': { + }, + 'badGTPSeqno': { + } }, - 'dhcp6c_max_rebind_tout': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { + } }, - 'dhcp6c_release_attempts': { + 'sessions': { + 'openFast': { + }, + 'closeFast': { + }, + 'max': { + }, + 'allocationOverride': { + }, + 'targetPerSecond': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'maxPerSecond': { + }, + 'engine': { + }, + 'statDetail': { + }, + 'emphasis': { + }, + 'maxActive': { + } }, - 'dhcp6c_initial_release_tout': { + 'loadprofile': { + 'name': { + }, + 'label': { + } }, - 'dhcp6c_req_attempts': { + 'ip': { + 'tos': { + }, + 'ttl': { + } }, - 'dhcp6c_max_req_tout': { + 'ip6': { + 'flowlabel': { + }, + 'traffic_class': { + }, + 'hop_limit': { + } }, - 'dhcp6c_max_renew_tout': { + 'prng': { + 'seed': { + }, + 'offset': { + } }, - 'dhcp6c_max_sol_tout': { + 'srcPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'dhcp6c_initial_req_tout': { + 'rampUpProfile': { + 'min': { + }, + 'max': { + }, + 'increment': { + }, + 'interval': { + }, + 'type': { + } }, - 'dhcp6c_max_inforeq_tout': { + 'delayStart': { }, - 'dhcp6c_initial_sol_tout': { + 'payload': { + 'data': { + }, + 'transport': { + }, + 'type': { + } }, - 'dhcp6c_initial_renew_tout': { + 'rampDist': { + 'upBehavior': { + }, + 'down': { + }, + 'steadyBehavior': { + }, + 'downBehavior': { + }, + 'up': { + }, + 'synRetryMode': { + }, + 'steady': { + } }, - 'dhcp6c_initial_inforeq_tout': { + 'payloadSizeDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'id': { + 'dstPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } } - }], - 'sgw_pgw6': [{ - 'max_sessions': { - }, - 'lease_address': { - }, - 'dns': { - }, - 'plmn': { - }, - 'ip_address': { - }, - 'sgw_advertised_sgw': { - }, - 'sgw_advertised_pgw': { - }, - 'lease_address_v6': { - }, - 'gateway_ip_address': { + }, + '@type:clientsim': { + 'app': { + 'replace_streams': { + }, + 'streamsPerSuperflow': { + }, + 'removedns': { + }, + 'fidelity': { + } }, - 'default_container': { + 'tcp': { + 'disable_ack_piggyback': { + }, + 'delay_acks': { + }, + 'mss': { + }, + 'raw_flags': { + }, + 'psh_every_segment': { + }, + 'ecn': { + }, + 'tcp_window_scale': { + }, + 'initial_receive_window': { + }, + 'reset_at_end': { + }, + 'dynamic_receive_window_size': { + }, + 'tcp_connect_delay_ms': { + }, + 'aging_time_data_type': { + }, + 'tcp_4_way_close': { + }, + 'shutdown_data': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'aging_time': { + }, + 'add_timestamps': { + }, + 'retries': { + }, + 'handshake_data': { + }, + 'ack_every_n': { + }, + 'syn_data_padding': { + }, + 'retry_quantum_ms': { + }, + 'delay_acks_ms': { + } }, - 'id': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { + } }, - 'prefix_length': { - } - }], - 'mpls_settings': [{ - 'mpls_tags': [{ - 'mpls_ttl': { + 'sessions': { + 'openFast': { + }, + 'closeFast': { + }, + 'max': { + }, + 'allocationOverride': { + }, + 'targetPerSecond': { + }, + 'target': { + }, + 'targetMatches': { }, - 'mpls_label': { + 'maxPerSecond': { }, - 'mpls_exp': { + 'engine': { + }, + 'statDetail': { + }, + 'emphasis': { + }, + 'maxActive': { } - }], - 'id': { - } - }], - 'sixrd_ce': [{ - 'sixrd_prefix': { - }, - 'count': { - }, - 'dns': { - }, - 'sixrd_prefix_length': { - }, - 'ip_address': { - }, - 'tags': { - }, - 'br_ip_address': { - }, - 'gateway_ip_address': { - }, - 'netmask': { - }, - 'default_container': { - }, - 'hosts_per_ce': { - }, - 'ip4_mask_length': { - }, - 'id': { - }, - 'enable_stats': { - } - }], - 'ip_dhcp_hosts': [{ - 'allocation_rate': { - }, - 'count': { - }, - 'tags': { - }, - 'proxy': { - }, - 'ldap': { - }, - 'default_container': { - }, - 'accept_local_offers_only': { }, - 'id': { + 'loadprofile': { + 'name': { + }, + 'label': { + } }, - 'behind_snapt': { + 'ip': { + 'tos': { + }, + 'ttl': { + } }, - 'dns_proxy': { + 'resources': { + 'expand': { + } }, - 'enable_stats': { - } - }], - 'enodeb_mme': [{ - 'dns': { + 'ssl': { + 'ssl_client_keylog': { + }, + 'upgrade': { + }, + 'sslReuseType': { + }, + 'server_record_len': { + }, + 'client_record_len': { + }, + 'ssl_keylog_max_entries': { + } }, - 'plmn': { + 'ip6': { + 'flowlabel': { + }, + 'traffic_class': { + }, + 'hop_limit': { + } }, - 'ip_allocation_mode': { + 'srcPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'enodebs': [{ - 'gateway_ip_address': { + 'rampUpProfile': { + 'min': { }, - 'netmask': { + 'max': { }, - 'default_container': { + 'increment': { }, - 'enodebCount': { + 'interval': { }, - 'ip_address': { + 'type': { } - }], - 'mme_ip_address': { - }, - 'pgw_ip_address': { - }, - 'ue_address': { }, - 'gateway_ip_address': { + 'delayStart': { }, - 'netmask': { + 'rampDist': { + 'upBehavior': { + }, + 'down': { + }, + 'steadyBehavior': { + }, + 'downBehavior': { + }, + 'up': { + }, + 'synRetryMode': { + }, + 'steady': { + } }, - 'default_container': { + 'superflow': { + } + }, + 'createdOn': { + }, + 'tags': [{ + 'id': { }, - 'sgw_ip_address': { + 'type': { }, - 'id': { + 'domainId': { + 'name': { + }, + 'iface': { + }, + 'external': { + } } }], - 'enodeb': [{ - 'dns': { - }, - 'plmn': { - }, - 'psn': { - }, - 'psn_netmask': { - }, - 'sctp_over_udp': { - }, - 'enodebs': [{ - 'mme_ip_address': { + 'revision': { + }, + 'lockedBy': { + }, + 'createdBy': { + }, + 'reportResults': { + }, + 'timeline': { + 'timesegment': [{ + 'label': { }, - 'enodebCount': { + 'size': { }, - 'ip_address': { + 'type': { } - }], - 'gateway_ip_address': { - }, - 'netmask': { - }, - 'default_container': { + }] + }, + 'id': { + }, + 'clazz': { + }, + 'operations': { + 'getComponentPresetNames': [{ + }] + } + }], + 'lockedBy': { + }, + 'createdBy': { + }, + 'name': { + }, + 'clazz': { + }, + 'operations': { + 'clone': [{ + }], + 'search': [{ + }], + 'load': [{ + }], + 'new': [{ + }], + 'exportModel': [{ + }], + 'run': [{ + }], + 'realTimeStats': [{ + }], + 'importModel': [{ + }], + 'add': [{ + }], + 'saveAs': [{ + }], + 'save': [{ + }], + 'delete': [{ + }], + 'remove': [{ + }], + 'stopRun': [{ + }] + } + }, + 'results': [{ + 'name': { + }, + 'content': { + }, + 'datasetvals': { + }, + 'operations': { + 'getGroups': [{ + 'lockedBy': { }, - 'id': { + 'createdBy': { }, - 'sctp_sport': { - } - }], - 'ip6_router': [{ - 'hosts_ip_alloc_container': { + 'author': { }, - 'gateway_ip_address': { + 'description': { }, - 'default_container': { + 'label': { }, - 'id': { + 'createdOn': { }, - 'ip_address': { + 'clazz': { }, - 'prefix_length': { + 'revision': { } }], - 'ip_external_hosts': [{ - 'proxy': { - }, - 'count': { + 'getHistoricalSeries': [{ + }], + 'getHistoricalResultSize': [{ + }] + } + }], + 'superflow': { + 'actions': [{ + 'actionInfo': [{ + 'name': { }, - 'id': { + 'description': { }, - 'ip_address': { + 'realtimeGroup': { }, - 'behind_snapt': { + 'label': { }, - 'tags': { + 'units': { } }], - 'interface': [{ - 'ignore_pause_frames': { - }, - 'duplicate_mac_address': { - }, - 'description': { - }, - 'packet_filter': { - 'not_dest_port': { - }, - 'not_src_ip': { - }, - 'filter': { - }, - 'src_ip': { - }, - 'src_port': { - }, - 'vlan': { - }, - 'not_vlan': { + 'flowlabel': { + }, + 'gotoBlock': { + }, + 'exflows': { + }, + 'matchBlock': { + }, + 'id': { + }, + 'source': { + }, + 'label': { + }, + 'type': { + }, + 'params': { + }, + 'flowid': { + }, + 'operations': { + 'getActionInfo': [{ + 'name': { }, - 'dest_ip': { + 'description': { }, - 'not_dest_ip': { + 'realtimeGroup': { }, - 'dest_port': { + 'label': { }, - 'not_src_port': { + 'units': { } - }, - 'impairments': { - 'drop': { + }], + 'getActionChoices': [{ + }] + } + }], + 'settings': [{ + 'name': { + }, + 'description': { + }, + 'realtimeGroup': { + }, + 'label': { + }, + 'units': { + } + }], + 'percentFlows': { + }, + 'seed': { + }, + 'hosts': [{ + 'iface': { + }, + 'hostname': { + }, + 'ip': { + 'type': { + } + }, + 'id': { + } + }], + 'author': { + }, + 'estimate_bytes': { + }, + 'estimate_flows': { + }, + 'weight': { + }, + 'description': { + }, + 'label': { + }, + 'params': { + }, + 'constraints': { + }, + 'createdOn': { + }, + 'revision': { + }, + 'lockedBy': { + }, + 'flows': [{ + 'singleNP': { + }, + 'name': { + }, + 'from': { + }, + 'label': { + }, + 'id': { + }, + 'to': { + }, + 'params': { + }, + 'flowcount': { + }, + 'operations': { + 'getCannedFlows': [{ + }], + 'getFlowChoices': [{ + 'lockedBy': { }, - 'corrupt_lt64': { + 'createdBy': { }, - 'rate': { + 'author': { }, - 'corrupt_lt256': { + 'description': { }, - 'corrupt_rand': { + 'label': { }, - 'corrupt_chksum': { + 'createdOn': { }, - 'corrupt_gt256': { + 'clazz': { }, - 'frack': { + 'revision': { } - }, - 'mtu': { - }, - 'vlan_key': { - }, - 'number': { - }, - 'use_vnic_mac_address': { - }, - 'mac_address': { - }, - 'id': { - } + }] + } + }], + 'generated': { + }, + 'createdBy': { + }, + 'percentBandwidth': { + }, + 'name': { + }, + 'clazz': { + }, + 'operations': { + 'importResource': [{ }], - 'ds_lite_b4': [{ - 'aftr_addr': { - }, - 'count': { - }, - 'ip_address': { - }, - 'host_ip_base_addr': { - }, - 'ipv6_addr_alloc_mode': { - }, + 'saveAs': [{ + }], + 'save': [{ + }], + 'addAction': [{ + }], + 'addHost': [{ + }], + 'addFlow': [{ + }], + 'removeFlow': [{ + }], + 'removeAction': [{ + }], + 'load': [{ + }], + 'new': [{ + }], + 'search': [{ + }], + 'delete': [{ + }] + } + }, + 'network': { + 'lockedBy': { + }, + 'createdBy': { + }, + 'author': { + }, + 'name': { + }, + 'interfaceCount': { + }, + 'description': { + }, + 'label': { + }, + 'networkModel': { + 'ip_router': [{ 'gateway_ip_address': { }, - 'default_container': { - }, - 'aftr_count': { + 'netmask': { }, - 'hosts_ip_increment': { + 'default_container': { }, 'id': { }, - 'prefix_length': { - }, - 'host_ip_addr_alloc_mode': { + 'ip_address': { } }], - 'ip_dns_proxy': [{ - 'dns_proxy_ip_count': { - }, - 'dns_proxy_src_ip_base': { + 'ue_info': [{ + 'imsi_base': { }, - 'id': { + 'secret_key_step': { }, - 'dns_proxy_ip_base': { + 'count': { }, - 'dns_proxy_src_ip_count': { - } - }], - 'ip6_dns_proxy': [{ - 'dns_proxy_ip_count': { + 'operator_variant': { }, - 'dns_proxy_src_ip_base': { + 'secret_key': { }, - 'id': { + 'imei_base': { }, - 'dns_proxy_ip_base': { + 'msisdn_base': { }, - 'dns_proxy_src_ip_count': { - } - }], - 'global_config': [{ - 'gtp': { + 'maxmbps_per_ue': { }, + 'mobility_session_infos': [{ + 'id': { + }, + 'value': { + } + }], 'id': { } }], - 'vlan': [{ - 'tpid': { - }, - 'duplicate_mac_address': { + 'ip_ldap_server': [{ + 'auth_timeout': { }, - 'description': { + 'ldap_username_start_tag': { }, - 'mtu': { + 'ldap_user_min': { }, - 'outer_vlan': { + 'ldap_user_count': { }, - 'inner_vlan': { + 'authentication_rate': { }, - 'mac_address': { + 'ldap_password_start_tag': { }, - 'default_container': { + 'ldap_user_max': { }, 'id': { + }, + 'ldap_server_address': { + }, + 'dn_fixed_val': { } }], - 'mme_sgw_pgw': [{ + 'mme_sgw_pgw6': [{ 'ue_info': { }, 'max_sessions': { @@ -4802,133 +4948,159 @@ class DataModelMeta(type): }, 'gateway_ip_address': { }, - 'netmask': { - }, 'default_container': { }, 'id': { + }, + 'prefix_length': { } }], - 'path_advanced': [{ - 'destination_port_count': { - }, - 'destination_port_base': { + 'mobility_session_info': [{ + 'password': { }, - 'source_port_base': { + 'bearers': [{ + 'qci_label': { + } + }], + 'id': { }, - 'tags': { + 'access_point_name': { }, - 'enable_external_file': { + 'username': { }, - 'source_container': { + 'initiated_dedicated_bearers': { + } + }], + 'ggsn6': [{ + 'lease_address': { }, - 'source_port_algorithm': { + 'count': { }, - 'tuple_limit': { + 'dns': { }, - 'file': { + 'ggsn_advertised_control_ip_address': { }, - 'destination_port_algorithm': { + 'ip_address': { }, - 'destination_container': { + 'ggsn_advertised_data_ip_address': { }, - 'source_port_count': { + 'lease_address_v6': { }, - 'xor_bits': { + 'gateway_ip_address': { }, - 'stream_group': { + 'default_container': { }, 'id': { - } - }], - 'path_basic': [{ - 'source_container': { - }, - 'destination_container': { }, - 'id': { + 'prefix_length': { } }], - 'pgw': [{ - 'max_sessions': { + 'ip_static_hosts': [{ + 'mpls_list': [{ + 'id': { + }, + 'value': { + } + }], + 'ip_selection_type': { }, - 'lease_address': { + 'count': { }, 'dns': { }, - 'plmn': { + 'psn': { + }, + 'psn_netmask': { }, 'ip_address': { }, - 'lease_address_v6': { + 'tags': { + }, + 'proxy': { + }, + 'maxmbps_per_host': { }, 'gateway_ip_address': { }, 'netmask': { }, + 'ldap': { + }, 'default_container': { }, 'id': { + }, + 'dns_proxy': { + }, + 'behind_snapt': { + }, + 'enable_stats': { } }], - 'pgw6': [{ - 'max_sessions': { - }, + 'ggsn': [{ 'lease_address': { }, + 'count': { + }, 'dns': { }, - 'plmn': { + 'ggsn_advertised_control_ip_address': { }, 'ip_address': { }, + 'ggsn_advertised_data_ip_address': { + }, 'lease_address_v6': { }, 'gateway_ip_address': { }, + 'netmask': { + }, 'default_container': { }, 'id': { - }, - 'prefix_length': { } }], - 'sgsn6': [{ - 'gateway_ip_address': { + 'ue': [{ + 'allocation_rate': { + }, + 'mobility_interval_ms': { + }, + 'ue_info': { + }, + 'dns': { + }, + 'mobility_action': { + }, + 'tags': { + }, + 'proxy': { }, 'default_container': { }, - 'ggsn_ip_address': { + 'mobility_with_traffic': { }, 'id': { }, - 'ip_address': { + 'behind_snapt': { }, - 'prefix_length': { + 'request_ipv6': { + }, + 'enable_stats': { } }], - 'ip6_static_hosts': [{ - 'mpls_list': [{ - 'id': { - }, - 'value': { - } - }], - 'ip_alloc_container': { - }, - 'ip_selection_type': { - }, - 'count': { - }, + 'enodeb_mme_sgw6': [{ 'dns': { }, - 'ip_address': { + 'plmn': { }, - 'tags': { + 'ip_allocation_mode': { }, - 'proxy': { + 'mme_ip_address': { }, - 'maxmbps_per_host': { + 'pgw_ip_address': { + }, + 'ue_address': { }, 'gateway_ip_address': { }, @@ -4936,981 +5108,955 @@ class DataModelMeta(type): }, 'id': { }, - 'host_ipv6_addr_alloc_mode': { - }, 'prefix_length': { + } + }], + 'ds_lite_aftr': [{ + 'count': { }, - 'dns_proxy': { + 'ip_address': { }, - 'behind_snapt': { + 'ipv6_addr_alloc_mode': { }, - 'enable_stats': { + 'gateway_ip_address': { + }, + 'default_container': { + }, + 'b4_count': { + }, + 'b4_ip_address': { + }, + 'id': { + }, + 'prefix_length': { } }], - 'enodeb_mme_sgw': [{ - 'dns': { + 'ipsec_router': [{ + 'gateway_ip_address': { }, - 'plmn': { + 'netmask': { }, - 'ip_allocation_mode': { + 'ipsec': { }, - 'mme_ip_address': { + 'default_container': { + }, + 'id': { + }, + 'ip_address': { + }, + 'ike_peer_ip_address': { + } + }], + 'dhcpv6c_req_opts_cfg': [{ + 'dhcpv6v_req_preference': { + }, + 'dhcpv6v_req_dns_list': { }, - 'pgw_ip_address': { + 'dhcpv6v_req_dns_resolvers': { }, - 'ue_address': { + 'dhcpv6v_req_server_id': { }, + 'id': { + } + }], + 'sgsn': [{ 'gateway_ip_address': { }, 'netmask': { }, 'default_container': { }, + 'ggsn_ip_address': { + }, 'id': { + }, + 'ip_address': { } }], - 'enodeb6': [{ + 'enodeb_mme6': [{ 'dns': { }, 'plmn': { }, - 'sctp_over_udp': { + 'ip_allocation_mode': { }, 'enodebs': [{ - 'mme_ip_address': { + 'gateway_ip_address': { + }, + 'default_container': { }, 'enodebCount': { }, 'ip_address': { + }, + 'prefix_length': { } }], + 'mme_ip_address': { + }, + 'pgw_ip_address': { + }, + 'ue_address': { + }, 'gateway_ip_address': { }, 'default_container': { }, + 'sgw_ip_address': { + }, 'id': { }, 'prefix_length': { - }, - 'sctp_sport': { } }], - 'slaac_cfg': [{ - 'use_rand_addr': { + 'plmn': [{ + 'mnc': { }, - 'enable_dad': { + 'description': { }, 'id': { }, - 'stateless_dhcpv6c_cfg': { - }, - 'fallback_ip_address': { + 'mcc': { } }], - 'ip_dns_config': [{ - 'dns_domain': { - }, - 'id': { + 'sgw_pgw': [{ + 'max_sessions': { }, - 'dns_server_address': { - } - }], - 'ip_dhcp_server': [{ 'lease_address': { }, - 'count': { - }, 'dns': { }, + 'plmn': { + }, 'ip_address': { }, + 'sgw_advertised_sgw': { + }, + 'sgw_advertised_pgw': { + }, + 'lease_address_v6': { + }, 'gateway_ip_address': { }, 'netmask': { }, - 'lease_time': { - }, 'default_container': { }, 'id': { - }, - 'accept_local_requests_only': { } }], - 'ip6_dns_config': [{ - 'dns_domain': { + 'ip6_dhcp_server': [{ + 'ia_type': { }, - 'id': { + 'pool_size': { }, - 'dns_server_address': { - } - }], - 'ipsec_config': [{ - 'ike_dh': { + 'ip_address': { }, - 'ipsec_lifetime': { + 'pool_prefix_length': { }, - 'ike_pfs': { + 'offer_lifetime': { }, - 'ike_mode': { + 'max_lease_time': { }, - 'ike_1to1': { + 'gateway_ip_address': { }, - 'nat_traversal': { + 'default_container': { }, - 'xauth_username': { + 'pool_base_address': { }, - 'ike_encr_alg': { + 'default_lease_time': { }, - 'psk': { + 'pool_dns_address1': { }, - 'dpd_enabled': { + 'id': { }, - 'dpd_timeout': { + 'prefix_length': { }, - 'init_rate': { + 'pool_dns_address2': { + } + }], + 'ip6_external_hosts': [{ + 'proxy': { }, - 'setup_timeout': { + 'count': { }, - 'esp_encr_alg': { + 'id': { }, - 'ike_lifetime': { + 'ip_address': { }, - 'ike_version': { + 'behind_snapt': { }, - 'id': { + 'tags': { + } + }], + 'dhcpv6c_tout_and_retr_cfg': [{ + 'dhcp6c_inforeq_attempts': { }, - 'left_id': { + 'dhcp6c_initial_rebind_tout': { }, - 'ike_prf_alg': { + 'dhcp6c_sol_attempts': { }, - 'esp_auth_alg': { + 'dhcp6c_max_rebind_tout': { }, - 'dpd_delay': { + 'dhcp6c_release_attempts': { }, - 'xauth_password': { + 'dhcp6c_initial_release_tout': { }, - 'initial_contact': { + 'dhcp6c_req_attempts': { }, - 'debug_log': { + 'dhcp6c_max_req_tout': { }, - 'wildcard_tsr': { + 'dhcp6c_max_renew_tout': { }, - 'rekey_margin': { + 'dhcp6c_max_sol_tout': { }, - 'ike_auth_alg': { + 'dhcp6c_initial_req_tout': { }, - 'right_id': { + 'dhcp6c_max_inforeq_tout': { }, - 'max_outstanding': { + 'dhcp6c_initial_sol_tout': { }, - 'retrans_interval': { + 'dhcp6c_initial_renew_tout': { }, - 'enable_xauth': { + 'dhcp6c_initial_inforeq_tout': { + }, + 'id': { } }], - 'dhcpv6c_cfg': [{ - 'dhcp6c_max_outstanding': { + 'sgw_pgw6': [{ + 'max_sessions': { }, - 'dhcp6c_duid_type': { + 'lease_address': { }, - 'dhcp6c_ia_type': { + 'dns': { }, - 'dhcp6c_req_opts_config': { + 'plmn': { }, - 'dhcp6c_tout_and_retr_config': { + 'ip_address': { }, - 'dhcp6c_renew_timer': { + 'sgw_advertised_sgw': { }, - 'dhcp6c_ia_t2': { + 'sgw_advertised_pgw': { }, - 'id': { + 'lease_address_v6': { }, - 'dhcp6c_ia_t1': { + 'gateway_ip_address': { }, - 'dhcp6c_initial_srate': { + 'default_container': { + }, + 'id': { + }, + 'prefix_length': { } - }] - }, - 'createdOn': { - }, - 'contentType': { - }, - 'revision': { - }, - 'operations': { - 'importNetwork': [{ - }], - 'list': [{ - }], - 'search': [{ - }], - 'saveAs': [{ - }], - 'save': [{ }], - 'load': [{ - }], - 'new': [{ - }], - 'delete': [{ - }] - } - }, - 'topology': { - 'ixoslicensed': { - }, - 'ixos': { - }, - 'cnState': [{ - 'cnSlotNo': { - }, - 'licensed': { - }, - 'cnName': { - }, - 'firmwareUpgrade': { - }, - 'cnSerial': { - }, - 'cnId': { - }, - 'marketingName': { - } - }], - 'runningTest': [{ - 'phase': { - }, - 'reservedEngines': [{ - }], - 'timeRemaining': { - }, - 'runtime': { - }, - 'label': { - }, - 'completed': { - }, - 'initProgress': { - }, - 'result': { - }, - 'port': [{ + 'mpls_settings': [{ + 'mpls_tags': [{ + 'mpls_ttl': { + }, + 'mpls_label': { + }, + 'mpls_exp': { + } + }], + 'id': { + } }], - 'capturing': { - }, - 'progress': { - }, - 'testid': { - 'host': { + 'sixrd_ce': [{ + 'sixrd_prefix': { }, - 'name': { + 'count': { }, - 'iteration': { - } - }, - 'state': { - }, - 'user': { - }, - 'currentTest': { - } - }], - 'model': { - }, - 'slot': [{ - 'port': [{ - 'owner': { + 'dns': { }, - 'note': { + 'sixrd_prefix_length': { }, - 'auto': { + 'ip_address': { }, - 'link': { + 'tags': { }, - 'media': { + 'br_ip_address': { }, - 'speed': { + 'gateway_ip_address': { }, - 'mtu': { + 'netmask': { }, - 'currentMode': { + 'default_container': { }, - 'number': { + 'hosts_per_ce': { }, - 'exportProgress': { + 'ip4_mask_length': { }, - 'ifmacaddr': { + 'id': { }, - 'ifname': { + 'enable_stats': { + } + }], + 'ip_dhcp_hosts': [{ + 'allocation_rate': { }, - 'reservedBy': { + 'count': { }, - 'capturing': { + 'tags': { }, - 'model': { + 'proxy': { + }, + 'ldap': { + }, + 'default_container': { + }, + 'accept_local_offers_only': { }, 'id': { }, - 'state': { + 'behind_snapt': { }, - 'possibleModes': { + 'dns_proxy': { }, - 'group': { + 'enable_stats': { } }], - 'np': [{ - 'note': { + 'enodeb_mme': [{ + 'dns': { }, - 'cnId': { + 'plmn': { }, - 'reservedBy': { + 'ip_allocation_mode': { }, - 'name': { + 'enodebs': [{ + 'gateway_ip_address': { + }, + 'netmask': { + }, + 'default_container': { + }, + 'enodebCount': { + }, + 'ip_address': { + } + }], + 'mme_ip_address': { }, - 'id': { + 'pgw_ip_address': { }, - 'state': { + 'ue_address': { }, - 'group': { + 'gateway_ip_address': { }, - 'resourceType': { + 'netmask': { + }, + 'default_container': { + }, + 'sgw_ip_address': { + }, + 'id': { } }], - 'mode': { - }, - 'fpga': [{ - 'note': { + 'enodeb': [{ + 'dns': { }, - 'reservedBy': { + 'plmn': { }, - 'name': { + 'psn': { }, - 'id': { + 'psn_netmask': { }, - 'state': { + 'sctp_over_udp': { }, - 'group': { + 'enodebs': [{ + 'mme_ip_address': { + }, + 'enodebCount': { + }, + 'ip_address': { + } + }], + 'gateway_ip_address': { }, - 'resourceType': { + 'netmask': { + }, + 'default_container': { + }, + 'id': { + }, + 'sctp_sport': { } }], - 'firmwareUpgrade': { - }, - 'model': { - }, - 'state': { - }, - 'id': { - }, - 'serialNumber': { - } - }], - 'serialNumber': { - }, - 'resourceOverview': { - 'resourceOverviewList': [{ - 'l23Count': { + 'ip6_router': [{ + 'hosts_ip_alloc_container': { }, - 'l47Count': { + 'gateway_ip_address': { }, - 'portCount': { + 'default_container': { }, - 'userAndGroup': { + 'id': { + }, + 'ip_address': { + }, + 'prefix_length': { } - }] - }, - 'operations': { - 'stopRun': [{ }], - 'getPortAvailableModes': [{ - 'modes': [{ - 'name': { - }, - 'fanoutId': { - } - }], - 'slot': { + 'ip_external_hosts': [{ + 'proxy': { }, - 'port': { + 'count': { + }, + 'id': { + }, + 'ip_address': { + }, + 'behind_snapt': { + }, + 'tags': { } }], - 'reserveResources': [{ - }], - 'exportCapture': [{ - }], - 'addPortNote': [{ - }], - 'addResourceNote': [{ - }], - 'reserveAllCnResources': [{ - }], - 'setCardMode': [{ - }], - 'setCardSpeed': [{ - }], - 'setCardFanout': [{ - }], - 'setPerfAcc': [{ - }], - 'releaseResources': [{ - }], - 'reboot': [{ - }], - 'releaseResource': [{ - }], - 'setPortSettings': [{ - }], - 'run': [{ - }], - 'getFanoutModes': [{ - 'cardModel': { + 'interface': [{ + 'ignore_pause_frames': { }, - 'fanout': [{ - 'name': { + 'duplicate_mac_address': { + }, + 'description': { + }, + 'packet_filter': { + 'not_dest_port': { + }, + 'not_src_ip': { + }, + 'filter': { + }, + 'src_ip': { + }, + 'src_port': { + }, + 'vlan': { + }, + 'not_vlan': { + }, + 'dest_ip': { + }, + 'not_dest_ip': { + }, + 'dest_port': { + }, + 'not_src_port': { + } + }, + 'impairments': { + 'drop': { + }, + 'corrupt_lt64': { + }, + 'rate': { + }, + 'corrupt_lt256': { + }, + 'corrupt_rand': { }, - 'fanoutId': { + 'corrupt_chksum': { + }, + 'corrupt_gt256': { + }, + 'frack': { } - }] - }], - 'unreserve': [{ - }], - 'rebootComputeNode': [{ - }], - 'reserve': [{ - }], - 'softReboot': [{ - }], - 'reserveResource': [{ - }], - 'releaseAllCnResources': [{ - }], - 'setPortFanoutMode': [{ - }] - } - }, - 'evasionProfile': { - 'lockedBy': { - }, - 'createdBy': { - }, - 'author': { - }, - 'name': { - }, - 'description': { - }, - 'label': { - }, - 'StrikeOptions': { - 'TCP': { - 'DuplicateBadSyn': { }, - 'DuplicateBadChecksum': { + 'mtu': { }, - 'SneakAckHandshake': { + 'vlan_key': { }, - 'AcknowledgeAllSegments': { + 'number': { }, - 'DuplicateBadSeq': { + 'use_vnic_mac_address': { }, - 'SkipHandshake': { + 'mac_address': { }, - 'SourcePort': { + 'id': { + } + }], + 'ds_lite_b4': [{ + 'aftr_addr': { }, - 'MaxSegmentSize': { + 'count': { }, - 'DestinationPort': { + 'ip_address': { }, - 'DuplicateBadReset': { + 'host_ip_base_addr': { }, - 'DestinationPortType': { + 'ipv6_addr_alloc_mode': { }, - 'DuplicateLastSegment': { + 'gateway_ip_address': { }, - 'DuplicateNullFlags': { + 'default_container': { }, - 'SegmentOrder': { + 'aftr_count': { }, - 'SourcePortType': { - } - }, - 'JAVASCRIPT': { - 'Obfuscate': { + 'hosts_ip_increment': { }, - 'Encoding': { + 'id': { + }, + 'prefix_length': { + }, + 'host_ip_addr_alloc_mode': { } - }, - 'FTP': { - 'PadCommandWhitespace': { + }], + 'ip_dns_proxy': [{ + 'dns_proxy_ip_count': { }, - 'Username': { + 'dns_proxy_src_ip_base': { }, - 'FTPEvasionLevel': { + 'id': { }, - 'AuthenticationType': { + 'dns_proxy_ip_base': { }, - 'Password': { - } - }, - 'IPv6': { - 'TC': { + 'dns_proxy_src_ip_count': { } - }, - 'DCERPC': { - 'MultiContextBindHead': { + }], + 'ip6_dns_proxy': [{ + 'dns_proxy_ip_count': { }, - 'MultiContextBind': { + 'dns_proxy_src_ip_base': { }, - 'MultiContextBindTail': { + 'id': { }, - 'MaxFragmentSize': { + 'dns_proxy_ip_base': { }, - 'UseObjectID': { + 'dns_proxy_src_ip_count': { } - }, - 'RTF': { - 'FictitiousCW': { + }], + 'vlan': [{ + 'tpid': { }, - 'ASCII_Escaping': { + 'duplicate_mac_address': { }, - 'MixedCase': { + 'description': { }, - 'WhiteSpace': { - } - }, - 'POP3': { - 'PadCommandWhitespace': { + 'mtu': { }, - 'Username': { + 'outer_vlan': { }, - 'POP3UseProxyMode': { + 'inner_vlan': { }, - 'AuthenticationType': { + 'mac_address': { }, - 'Password': { + 'default_container': { + }, + 'id': { } - }, - 'Variations': { - 'Subset': { + }], + 'mme_sgw_pgw': [{ + 'ue_info': { }, - 'Shuffle': { + 'max_sessions': { }, - 'VariantTesting': { + 'lease_address': { }, - 'Limit': { + 'dns': { }, - 'TestType': { - } - }, - 'OLE': { - 'RefragmentData': { - } - }, - 'HTML': { - 'HTMLUnicodeUTF8EncodingMode': { + 'plmn': { }, - 'HTMLUnicodeUTF8EncodingSize': { + 'ip_address': { }, - 'HTMLUnicodeEncoding': { + 'sgw_advertised_sgw': { }, - 'HTMLUnicodeUTF7EncodingMode': { - } - }, - 'EMAIL': { - 'EnvelopeType': { + 'sgw_advertised_pgw': { }, - 'ShuffleHeaders': { + 'lease_address_v6': { }, - 'To': { + 'gateway_ip_address': { }, - 'From': { + 'netmask': { + }, + 'default_container': { + }, + 'id': { } - }, - 'Global': { - 'FalsePositives': { + }], + 'ip_mac_static_hosts': [{ + 'mpls_list': [{ + 'id': { + }, + 'value': { + } + }], + 'ip_selection_type': { }, - 'IOTimeout': { + 'count': { }, - 'AllowDeprecated': { + 'dns': { }, - 'BehaviorOnTimeout': { + 'psn': { }, - 'MaxTimeoutPerStrike': { + 'psn_netmask': { }, - 'CachePoisoning': { - } - }, - 'MS_Exchange_Ports': { - 'SystemAttendant': { - } - }, - 'PDF': { - 'HexEncodeNames': { + 'ip_address': { }, - 'ShortFilterNames': { + 'tags': { }, - 'RandomizeDictKeyOrder': { + 'proxy': { }, - 'Version': { + 'maxmbps_per_host': { }, - 'PreHeaderData': { - } - }, - 'SNMP': { - 'CommunityString': { - } - }, - 'COMMAND': { - 'PadCommandWhitespace': { + 'gateway_ip_address': { }, - 'PadPathSlashes': { + 'netmask': { }, - 'Malicious': { - } - }, - 'ICMP': { - 'DoEcho': { - } - }, - 'UDP': { - 'DestinationPortType': { + 'ldap': { }, - 'SourcePort': { + 'mac_address': { }, - 'SourcePortType': { + 'default_container': { + }, + 'id': { + }, + 'dns_proxy': { + }, + 'behind_snapt': { + }, + 'enable_stats': { + } + }], + 'path_advanced': [{ + 'destination_port_count': { + }, + 'destination_port_base': { }, - 'DestinationPort': { - } - }, - 'IP': { - 'ReadWriteWindowSize': { + 'source_port_base': { }, - 'RFC3128FakePort': { + 'tags': { }, - 'FragEvasion': { + 'enable_external_file': { }, - 'RFC3128': { + 'source_container': { }, - 'TTL': { + 'source_port_algorithm': { }, - 'MaxReadSize': { + 'tuple_limit': { }, - 'RFC3514': { + 'file': { }, - 'FragPolicy': { + 'destination_port_algorithm': { }, - 'MaxFragSize': { + 'destination_container': { }, - 'FragOrder': { + 'source_port_count': { }, - 'TOS': { + 'xor_bits': { }, - 'IPEvasionsOnBothSides': { + 'stream_group': { }, - 'MaxWriteSize': { + 'id': { } - }, - 'SMB': { - 'Username': { + }], + 'path_basic': [{ + 'source_container': { }, - 'RandomPipeOffset': { + 'destination_container': { }, - 'MaxReadSize': { + 'id': { + } + }], + 'geneve_tep': [{ + 'count': { }, - 'MaxWriteSize': { + 'ip_address': { }, - 'AuthenticationType': { + 'vni_base': { }, - 'Password': { - } - }, - 'IMAP4': { - 'Username': { + 'gateway_ip_address': { }, - 'IMAPUseProxyMode': { + 'netmask': { }, - 'AuthenticationType': { + 'default_container': { }, - 'Password': { + 'id': { + }, + 'vni_count': { } - }, - 'HTTP': { - 'ClientChunkedTransferSize': { + }], + 'pgw': [{ + 'max_sessions': { }, - 'EncodeUnicodeBareByte': { + 'lease_address': { }, - 'VirtualHostname': { + 'dns': { }, - 'EncodeUnicodePercentU': { + 'plmn': { }, - 'GetParameterRandomPrepend': { + 'ip_address': { }, - 'EncodeSecondNibbleHex': { + 'lease_address_v6': { }, - 'EncodeUnicodeInvalid': { + 'gateway_ip_address': { }, - 'ServerChunkedTransferSize': { + 'netmask': { }, - 'VersionRandomizeCase': { + 'default_container': { }, - 'URIRandomizeCase': { + 'id': { + } + }], + 'pgw6': [{ + 'max_sessions': { }, - 'AuthenticationType': { + 'lease_address': { }, - 'ServerCompression': { + 'dns': { }, - 'VirtualHostnameType': { + 'plmn': { }, - 'URIPrependAltSpaces': { + 'ip_address': { }, - 'URIPrependAltSpacesSize': { + 'lease_address_v6': { }, - 'EncodeFirstNibbleHex': { + 'gateway_ip_address': { }, - 'MethodRandomInvalid': { + 'default_container': { }, - 'VersionRandomInvalid': { + 'id': { }, - 'ServerChunkedTransfer': { + 'prefix_length': { + } + }], + 'sgsn6': [{ + 'gateway_ip_address': { }, - 'EncodeDoublePercentHex': { + 'default_container': { }, - 'URIAppendAltSpacesSize': { + 'ggsn_ip_address': { }, - 'EncodeHexRandom': { + 'id': { }, - 'DirectorySelfReference': { + 'ip_address': { }, - 'EndRequestFakeHTTPHeader': { + 'prefix_length': { + } + }], + 'ip6_static_hosts': [{ + 'mpls_list': [{ + 'id': { + }, + 'value': { + } + }], + 'ip_alloc_container': { }, - 'EncodeUnicodeAll': { + 'ip_selection_type': { }, - 'EncodeUnicodeRandom': { + 'count': { }, - 'Base64EncodePOSTData': { + 'dns': { }, - 'IgnoreHeaders': { + 'ip_address': { }, - 'RequestFullURL': { + 'tags': { }, - 'HTTPTransportMethods': { + 'proxy': { }, - 'Password': { + 'maxmbps_per_host': { }, - 'MethodRandomizeCase': { + 'gateway_ip_address': { }, - 'MethodURISpaces': { + 'default_container': { }, - 'ShuffleHeaders': { + 'id': { }, - 'DirectoryFakeRelative': { + 'host_ipv6_addr_alloc_mode': { }, - 'URIAppendAltSpaces': { + 'prefix_length': { }, - 'MethodURITabs': { + 'dns_proxy': { }, - 'RequireLeadingSlash': { + 'behind_snapt': { }, - 'EncodeDoubleNibbleHex': { + 'enable_stats': { + } + }], + 'enodeb_mme_sgw': [{ + 'dns': { }, - 'ForwardToBackSlashes': { + 'plmn': { }, - 'PadHTTPPost': { + 'ip_allocation_mode': { }, - 'MethodURINull': { + 'mme_ip_address': { }, - 'Username': { + 'pgw_ip_address': { }, - 'VersionUse0_9': { + 'ue_address': { }, - 'EncodeHexAll': { + 'gateway_ip_address': { }, - 'PostParameterRandomPrepend': { + 'netmask': { }, - 'ClientChunkedTransfer': { + 'default_container': { }, - 'HTTPServerProfile': { + 'id': { } - }, - 'SELF': { - 'ApplicationPings': { + }], + 'enodeb6': [{ + 'dns': { }, - 'TraversalVirtualDirectory': { + 'plmn': { }, - 'AppSimUseNewTuple': { + 'sctp_over_udp': { }, - 'StartingFuzzerOffset': { + 'enodebs': [{ + 'mme_ip_address': { + }, + 'enodebCount': { + }, + 'ip_address': { + } + }], + 'gateway_ip_address': { }, - 'URI': { + 'default_container': { }, - 'FileTransferRandCase': { + 'id': { }, - 'UnicodeTraversalWindowsDirectory': { + 'prefix_length': { }, - 'AREA-ID': { + 'sctp_sport': { + } + }], + 'slaac_cfg': [{ + 'use_rand_addr': { }, - 'AppSimAppProfile': { + 'enable_dad': { }, - 'Repetitions': { + 'id': { }, - 'FileTransferExtension': { + 'stateless_dhcpv6c_cfg': { }, - 'Password': { + 'fallback_ip_address': { + } + }], + 'ip_dns_config': [{ + 'dns_domain': { }, - 'AppSimSmartflow': { + 'id': { }, - 'HTMLPadding': { + 'dns_server_address': { + } + }], + 'ip_dhcp_server': [{ + 'lease_address': { }, - 'MaximumIterations': { + 'count': { }, - 'FileTransferFile': { + 'dns': { }, - 'AS-ID': { + 'ip_address': { }, - 'AppSimSuperflow': { + 'gateway_ip_address': { }, - 'EndingFuzzerOffset': { + 'netmask': { }, - 'ReportCLSIDs': { + 'lease_time': { + }, + 'default_container': { + }, + 'id': { + }, + 'accept_local_requests_only': { + } + }], + 'ip6_dns_config': [{ + 'dns_domain': { }, - 'DelaySeconds': { + 'id': { }, - 'Username': { + 'dns_server_address': { + } + }], + 'ipsec_config': [{ + 'ike_dh': { }, - 'UnicodeTraversalVirtualDirectory': { + 'ipsec_lifetime': { }, - 'TraversalWindowsDirectory': { + 'ike_pfs': { }, - 'FileTransferName': { + 'ike_mode': { }, - 'MaximumRuntime': { + 'ike_1to1': { }, - 'ROUTER-ID': { + 'nat_traversal': { }, - 'TraversalRequestFilename': { - } - }, - 'SHELLCODE': { - 'RandomNops': { - } - }, - 'SSL': { - 'ClientCertificateFile': { + 'xauth_username': { }, - 'EnableOnAllTCP': { + 'ike_encr_alg': { }, - 'SecurityProtocol': { + 'psk': { }, - 'DestPortOverride': { + 'dpd_enabled': { }, - 'ServerCertificateFile': { + 'dpd_timeout': { }, - 'ServerKeyFile': { + 'init_rate': { }, - 'EnableOnAllHTTP': { + 'setup_timeout': { }, - 'ClientKeyFile': { + 'esp_encr_alg': { }, - 'Cipher': { + 'ike_lifetime': { }, - 'DisableDefaultStrikeSSL': { - } - }, - 'SUNRPC': { - 'OneFragmentMultipleTCPSegmentsCount': { + 'ike_version': { }, - 'RPCFragmentTCPSegmentDistribution': { + 'id': { }, - 'TCPFragmentSize': { + 'left_id': { }, - 'NullCredentialPadding': { - } - }, - 'FILETRANSFER': { - 'SmtpEncoding': { + 'ike_prf_alg': { }, - 'CompressionMethod': { + 'esp_auth_alg': { }, - 'FtpTransferMethod': { + 'dpd_delay': { }, - 'TransportProtocol': { + 'xauth_password': { }, - 'Imap4Encoding': { + 'initial_contact': { }, - 'Pop3Encoding': { - } - }, - 'UNIX': { - 'PadCommandWhitespace': { + 'debug_log': { }, - 'PadPathSlashes': { - } - }, - 'SMTP': { - 'SMTPUseProxyMode': { + 'wildcard_tsr': { }, - 'PadCommandWhitespace': { + 'rekey_margin': { }, - 'ShuffleHeaders': { - } - }, - 'Ethernet': { - 'MTU': { - } - }, - 'MALWARE': { - 'FilenameInsertEnvVar': { + 'ike_auth_alg': { }, - 'SmtpEncoding': { + 'right_id': { }, - 'CompressionMethod': { + 'max_outstanding': { }, - 'FtpTransferMethod': { + 'retrans_interval': { }, - 'TransportProtocol': { + 'enable_xauth': { + } + }], + 'dhcpv6c_cfg': [{ + 'dhcp6c_max_outstanding': { }, - 'Imap4Encoding': { + 'dhcp6c_duid_type': { }, - 'Pop3Encoding': { - } - }, - 'SIP': { - 'EnvelopeType': { + 'dhcp6c_ia_type': { }, - 'CompactHeaders': { + 'dhcp6c_req_opts_config': { }, - 'PadHeadersWhitespace': { + 'dhcp6c_tout_and_retr_config': { }, - 'RandomizeCase': { + 'dhcp6c_renew_timer': { }, - 'ShuffleHeaders': { + 'dhcp6c_ia_t2': { }, - 'To': { + 'id': { }, - 'From': { + 'dhcp6c_ia_t1': { }, - 'PadHeadersLineBreak': { + 'dhcp6c_initial_srate': { } - }, - 'operations': { - 'getStrikeOptions': [{ - 'name': { - }, - 'description': { - }, - 'realtimeGroup': { - }, - 'label': { - }, - 'units': { - } - }] - } + }] }, 'createdOn': { }, - 'contentType': { + 'clazz': { }, 'revision': { }, @@ -5919,10 +6065,14 @@ class DataModelMeta(type): }], 'delete': [{ }], + 'importNetwork': [{ + }], 'saveAs': [{ }], 'save': [{ }], + 'list': [{ + }], 'load': [{ }], 'new': [{ @@ -6003,21 +6153,31 @@ class DataModelMeta(type): 'user': { }, 'operations': { - 'exportReport': [{ - }], 'delete': [{ }], - 'search': [{ + 'exportReport': [{ }], 'getReportContents': [{ }], 'getReportTable': [{ + }], + 'search': [{ }] } }, - 'statistics': { - 'component': [{ - 'statNames': [{ + 'appProfile': { + 'weightType': { + }, + 'lockedBy': { + }, + 'createdBy': { + }, + 'author': { + }, + 'name': { + }, + 'superflow': [{ + 'settings': [{ 'name': { }, 'description': { @@ -6029,42 +6189,86 @@ class DataModelMeta(type): 'units': { } }], + 'percentFlows': { + }, + 'seed': { + }, + 'author': { + }, + 'estimate_bytes': { + }, + 'estimate_flows': { + }, + 'weight': { + }, + 'description': { + }, 'label': { + }, + 'params': { + }, + 'constraints': { + }, + 'createdOn': { + }, + 'revision': { + }, + 'lockedBy': { + }, + 'generated': { + }, + 'createdBy': { + }, + 'percentBandwidth': { + }, + 'name': { + }, + 'clazz': { } - }] - }, - 'results': [{ - 'name': { + }], + 'description': { }, - 'content': { + 'label': { }, - 'datasetvals': { + 'createdOn': { + }, + 'clazz': { + }, + 'revision': { }, 'operations': { - 'getHistoricalResultSize': [{ + 'add': [{ }], - 'getHistoricalSeries': [{ + 'exportAppProfile': [{ }], - 'getGroups': [{ - 'lockedBy': { - }, - 'createdBy': { - }, - 'author': { - }, - 'description': { - }, - 'label': { - }, - 'createdOn': { - }, - 'contentType': { - }, - 'revision': { - } + 'importAppProfile': [{ + }], + 'delete': [{ + }], + 'remove': [{ + }], + 'search': [{ + }], + 'load': [{ + }], + 'new': [{ + }], + 'recompute': [{ + }], + 'saveAs': [{ + }], + 'save': [{ + }] + } + }, + 'remote': { + 'operations': { + 'connectChassis': [{ + }], + 'disconnectChassis': [{ }] } - }] + } } @staticmethod diff --git a/RestApi/Python/RestApi_v2/Modules/bps_restpy/restPyWrapper3.py b/RestApi/Python/RestApi_v2/Modules/bps_restpy/restPyWrapper3.py index 0159fa8..fbe1af9 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: 9.37.0.184 +### this BPS REST API wrapper is generated for version: 9.38.1.27 class BPS(object): def __init__(self, host, user, password, checkVersion=True): @@ -25,23 +25,24 @@ def __init__(self, host, user, password, checkVersion=True): self.sessionId = None self.session = requests.Session() self.session.mount('https://', TlsAdapter()) - self.clientVersion = '9.37' + self.clientVersion = '9.38' self.serverVersions = None self.checkVersion = checkVersion + self.strikeList = DataModelProxy(wrapper=self, name='strikeList') self.administration = DataModelProxy(wrapper=self, name='administration') + self.statistics = DataModelProxy(wrapper=self, name='statistics') + self.capture = DataModelProxy(wrapper=self, name='capture') + self.evasionProfile = DataModelProxy(wrapper=self, name='evasionProfile') + self.loadProfile = DataModelProxy(wrapper=self, name='loadProfile') + self.topology = DataModelProxy(wrapper=self, name='topology') + self.testmodel = DataModelProxy(wrapper=self, name='testmodel') self.results = DataModelProxy(wrapper=self, name='results') - self.strikeList = DataModelProxy(wrapper=self, name='strikeList') self.superflow = DataModelProxy(wrapper=self, name='superflow') + self.network = DataModelProxy(wrapper=self, name='network') + self.strikes = DataModelProxy(wrapper=self, name='strikes') self.reports = DataModelProxy(wrapper=self, name='reports') - self.evasionProfile = DataModelProxy(wrapper=self, name='evasionProfile') self.appProfile = DataModelProxy(wrapper=self, name='appProfile') - self.topology = DataModelProxy(wrapper=self, name='topology') - self.strikes = DataModelProxy(wrapper=self, name='strikes') - self.capture = DataModelProxy(wrapper=self, name='capture') - self.network = DataModelProxy(wrapper=self, name='network') - self.testmodel = DataModelProxy(wrapper=self, name='testmodel') - self.loadProfile = DataModelProxy(wrapper=self, name='loadProfile') - self.statistics = DataModelProxy(wrapper=self, name='statistics') + self.remote = DataModelProxy(wrapper=self, name='remote') ### connect to the system def __connect(self): @@ -203,101 +204,41 @@ def _export(self, path, **kwargs): else: raise Exception({'status_code': r.status_code, 'content': self.__json_load(r)}) - ### Reboots the metwork processors on the given card card. Only available for APS cards. - @staticmethod - def _topology_operations_softReboot(self, board): - """ - Reboots the metwork processors on the given card card. Only available for APS cards. - :param board (number): - """ - return self._wrapper._post('/topology/operations/softReboot', **{'board': board}) - - ### 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}) - - ### 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}) - - ### 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}) - - ### 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}) - - ### 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. + ### 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 _capture_operations_importCapture(self, name, filename, force): + def _superflow_operations_importResource(self, name, filename, force, type='resource'): """ - 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 + 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('/capture/operations/importCapture', **{'name': name, 'filename': filename, 'force': force}) - - ### 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}) + return self._wrapper._import('/superflow/operations/importResource', **{'name': name, 'filename': filename, 'force': force, 'type': type}) - ### Saves the current working Application Profiles and gives it a new name. + ### Deletes a Test Report from the database. @staticmethod - def _superflow_operations_saveAs(self, name, force): + def _reports_operations_delete(self, runid): """ - 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. + 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('/superflow/operations/saveAs', **{'name': name, 'force': force}) + return self._wrapper._post('/reports/operations/delete', **{'runid': runid}) - ### Saves the working Super Flow using the current name + ### Get information about an action in the current working Superflow, retrieving also the choices for each action setting. @staticmethod - def _superflow_operations_save(self, name=None, force=True): + def _superflow_actions_operations_getActionInfo(self, id): """ - 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. + 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/operations/save', **{'name': name, 'force': force}) + return self._wrapper._post('/superflow/actions/operations/getActionInfo', **{'id': id}) ### null @staticmethod @@ -323,86 +264,58 @@ def _capture_operations_search(self, searchString, limit, sort, sortorder): """ return self._wrapper._post('/capture/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) - ### 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}) - - ### 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. + ### 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 _topology_operations_exportCapture(self, filepath, args): + def _strikeList_operations_exportStrikeList(self, name, filepath): """ - 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. + 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('/topology/operations/exportCapture', **{'filepath': filepath, 'args': args}) + return self._wrapper._export('/strikeList/operations/exportStrikeList', **{'name': name, 'filepath': filepath}) - ### Load an existing Super Flow and sets it as the current one. + ### Imports an ATI License file (.lic) on a hardware platform. This operation is NOT recommended to be used on BPS Virtual platforms. @staticmethod - def _superflow_operations_load(self, template): + def _administration_atiLicensing_operations_importAtiLicense(self, filename, name): """ - Load an existing Super Flow and sets it as the current one. - :param template (string): The name of the existing Super Flow template + 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._post('/superflow/operations/load', **{'template': template}) + return self._wrapper._import('/administration/atiLicensing/operations/importAtiLicense', **{'filename': filename, 'name': name}) - ### Creates a new Super Flow. + ### Create a new custom Load Profile. @staticmethod - def _superflow_operations_new(self, template=None): + def _loadProfile_operations_createNewCustom(self, loadProfile): """ - Creates a new Super Flow. - :param template (string): The name of the template. In this case will be empty. + Create a new custom Load Profile. + :param loadProfile (string): The Name of The load profile object to create. """ - return self._wrapper._post('/superflow/operations/new', **{'template': template}) + return self._wrapper._post('/loadProfile/operations/createNewCustom', **{'loadProfile': loadProfile}) - ### Adds a note to given port. + ### Clones a component in the current working Test Model @staticmethod - def _topology_operations_addPortNote(self, interface, note): + def _testmodel_operations_clone(self, template, type, active): """ - 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. + 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('/topology/operations/addPortNote', **{'interface': interface, 'note': note}) + return self._wrapper._post('/testmodel/operations/clone', **{'template': template, 'type': type, 'active': active}) - ### null + ### 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 _testmodel_operations_search(self, searchString, limit, sort, sortorder): + def _reports_operations_exportReport(self, filepath, runid, reportType, sectionIds='', dataType='ALL'): """ - :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): + 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._post('/testmodel/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + return self._wrapper._export('/reports/operations/exportReport', **{'filepath': filepath, 'runid': runid, 'reportType': reportType, 'sectionIds': sectionIds, 'dataType': dataType}) ### Gets the card Fanout modes of a board. @staticmethod @@ -414,131 +327,111 @@ def _topology_operations_getFanoutModes(self, cardId): """ return self._wrapper._post('/topology/operations/getFanoutModes', **{'cardId': cardId}) - ### 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 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. + ### Saves the current working Application Profiles and gives it a new name. @staticmethod - def _administration_operations_importAllTests(self, name, filename, force): + def _superflow_operations_saveAs(self, name, 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. + 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._import('/administration/operations/importAllTests', **{'name': name, 'filename': filename, 'force': force}) + return self._wrapper._post('/superflow/operations/saveAs', **{'name': name, 'force': force}) - ### Loads an existing network config by name. + ### Saves the working Super Flow using the current name @staticmethod - def _network_operations_load(self, template): + def _superflow_operations_save(self, name=None, force=True): """ - Loads an existing network config by name. - :param template (string): The name of the network neighborhood template + 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('/network/operations/load', **{'template': template}) + return self._wrapper._post('/superflow/operations/save', **{'name': name, 'force': force}) - ### Creates a new Network Neighborhood configuration with no name. The template value must remain empty. + ### Search Networks. @staticmethod - def _network_operations_new(self, template=None): + def _network_operations_search(self, searchString, userid, clazz, sortorder, sort, limit, offset): """ - 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. + 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/new', **{'template': template}) + return self._wrapper._post('/network/operations/search', **{'searchString': searchString, 'userid': userid, 'clazz': clazz, 'sortorder': sortorder, 'sort': sort, 'limit': limit, 'offset': offset}) - ### Imports a list of strikes residing in a file. + ### Adds an action to the current working SuperFlow @staticmethod - def _strikeList_operations_importStrikeList(self, name, filename, force): + def _superflow_operations_addAction(self, flowid, type, actionid, source): """ - 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. + 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._import('/strikeList/operations/importStrikeList', **{'name': name, 'filename': filename, 'force': force}) + return self._wrapper._post('/superflow/operations/addAction', **{'flowid': flowid, 'type': type, 'actionid': actionid, 'source': source}) - ### Reserves the specified number of resources of given type. + ### Load an existing Strike List and sets it as the current one. @staticmethod - def _topology_operations_reserveResources(self, group, count, resourceType): + def _strikeList_operations_load(self, template): """ - Reserves the specified number of resources of given type. - :param group (number): - :param count (number): - :param resourceType (string): + 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('/topology/operations/reserveResources', **{'group': group, 'count': count, 'resourceType': resourceType}) + return self._wrapper._post('/strikeList/operations/load', **{'template': template}) - ### Stops the test run. + ### Creates a new Strike List. @staticmethod - def _testmodel_operations_stopRun(self, runid): + def _strikeList_operations_new(self, template=None): """ - Stops the test run. - :param runid (number): Test RUN ID + Creates a new Strike List. + :param template (string): The name of the template. In this case will be empty. """ - return self._wrapper._post('/testmodel/operations/stopRun', **{'runid': runid}) + return self._wrapper._post('/strikeList/operations/new', **{'template': template}) - ### Stops the test run. + ### 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 _topology_operations_stopRun(self, runid): + def _remote_operations_connectChassis(self, address, remote): """ - Stops the test run. - :param runid (number): Test RUN ID + 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('/topology/operations/stopRun', **{'runid': runid}) + return self._wrapper._post('/remote/operations/connectChassis', **{'address': address, 'remote': remote}) - ### Get information about an action in the current working Superflow, retrieving also the choices for each action setting. + ### list active sessions @staticmethod - def _superflow_actions_operations_getActionInfo(self, id): + def _administration_sessions_operations_list(self): """ - Get information about an action in the current working Superflow, retrieving also the choices for each action setting. - :param id (number): The action id + list active sessions :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}) - - ### 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}) - - ### 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}) + return self._wrapper._post('/administration/sessions/operations/list', **{}) - ### Switch port fan-out mode. + ### Add a host to the current working Superflow @staticmethod - def _topology_operations_setPortFanoutMode(self, board, port, mode): + def _superflow_operations_addHost(self, hostParams, force): """ - Switch port fan-out mode. - :param board (number): - :param port (string): - :param mode (string): + 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('/topology/operations/setPortFanoutMode', **{'board': board, 'port': port, 'mode': mode}) + return self._wrapper._post('/superflow/operations/addHost', **{'hostParams': hostParams, 'force': force}) ### Deletes a specified load profile from the database. @staticmethod @@ -549,113 +442,103 @@ def _loadProfile_operations_delete(self, name): """ return self._wrapper._post('/loadProfile/operations/delete', **{'name': name}) - ### 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}) - - ### Returns stats series for a given component group stat output for a given timestamp + ### null @staticmethod - def _results_operations_getHistoricalSeries(self, runid, componentid, dataindex, group): + def _testmodel_operations_search(self, searchString, limit, sort, sortorder): """ - 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): + :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): - content (string): - datasetvals (string): - """ - return self._wrapper._post('/results/operations/getHistoricalSeries', **{'runid': runid, 'componentid': componentid, 'dataindex': dataindex, 'group': group}) - - ### 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. + label (string): + createdBy (string): + network (string): + duration (number): + description (string): """ - return self._wrapper._import('/testmodel/operations/importModel', **{'name': name, 'filename': filename, 'force': force}) + return self._wrapper._post('/testmodel/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) - ### 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. + ### 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 _appProfile_operations_importAppProfile(self, name, filename, force): + def _results_operations_getGroups(self, name, dynamicEnums=True, includeOutputs=True): """ - 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. + 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._import('/appProfile/operations/importAppProfile', **{'name': name, 'filename': filename, 'force': force}) + return self._wrapper._post('/results/operations/getGroups', **{'name': name, 'dynamicEnums': dynamicEnums, 'includeOutputs': includeOutputs}) - ### 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. + ### null @staticmethod - def _network_operations_importNetwork(self, name, filename, force): + def _evasionProfile_operations_search(self, searchString, limit, sort, sortorder): """ - 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. + :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._import('/network/operations/importNetwork', **{'name': name, 'filename': filename, 'force': force}) + return self._wrapper._post('/evasionProfile/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) - ### Gives abbreviated information about all Canned Flow Names. + ### Load an existing Evasion Profile and sets it as the current one. @staticmethod - def _superflow_flows_operations_getCannedFlows(self): + def _evasionProfile_operations_load(self, template): """ - Gives abbreviated information about all Canned Flow Names. - :return flow (list): - list of object with fields - name (string): - label (string): + 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('/superflow/flows/operations/getCannedFlows', **{}) + return self._wrapper._post('/evasionProfile/operations/load', **{'template': template}) - ### Create a new custom Load Profile. + ### Creates a new Evasion Profile. @staticmethod - def _loadProfile_operations_createNewCustom(self, loadProfile): + def _evasionProfile_operations_new(self, template=None): """ - Create a new custom Load Profile. - :param loadProfile (string): The Name of The load profile object to create. + Creates a new Evasion Profile. + :param template (string): The name should be empty to create a new object. """ - return self._wrapper._post('/loadProfile/operations/createNewCustom', **{'loadProfile': loadProfile}) + return self._wrapper._post('/evasionProfile/operations/new', **{'template': template}) - ### Reboots the slot with slotId. + ### Reboots the metwork processors on the given card card. Only available for APS cards. @staticmethod - def _topology_operations_reboot(self, board): + def _topology_operations_softReboot(self, board, cnId): """ - Reboots the slot with slotId. + 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/reboot', **{'board': board}) + return self._wrapper._post('/topology/operations/softReboot', **{'board': board, 'cnId': cnId}) - ### null + ### Returns stats series for a given component group stat output for a given timestamp @staticmethod - def _network_operations_list(self, userid, clazz, sortorder, sort, limit, offset): + def _results_operations_getHistoricalSeries(self, runid, componentid, dataindex, group): """ - :param userid (string): - :param clazz (string): - :param sortorder (string): - :param sort (string): - :param limit (number): - :param offset (number): - :return returnArg (list): + 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): - type (string): - author (string): - createdOn (string): + content (string): + datasetvals (string): """ - return self._wrapper._post('/network/operations/list', **{'userid': userid, 'clazz': clazz, 'sortorder': sortorder, 'sort': sort, 'limit': limit, 'offset': offset}) + return self._wrapper._post('/results/operations/getHistoricalSeries', **{'runid': runid, 'componentid': componentid, 'dataindex': dataindex, 'group': group}) ### Searches a strike inside all BPS strike database.To list all the available strikes, leave the arguments empty. @staticmethod @@ -685,274 +568,280 @@ def _strikes_operations_search(self, searchString='', limit=10, sort='name', sor """ return self._wrapper._post('/strikes/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder, 'offset': offset}) - ### Reboots the compute node with cnId. + ### null @staticmethod - def _topology_operations_rebootComputeNode(self, cnId): + def _administration_userSettings_operations_setAutoReserve(self, resourceType, units): """ - Reboots the compute node with cnId. - :param cnId (number): Compute node id + :param resourceType (string): Valid values: >l47< or >l23< + :param units (number): """ - return self._wrapper._post('/topology/operations/rebootComputeNode', **{'cnId': cnId}) + return self._wrapper._post('/administration/userSettings/operations/setAutoReserve', **{'resourceType': resourceType, 'units': units}) - ### Lists all the component presets names. + ### Deletes a given Evasion Profile from the database. @staticmethod - def _testmodel_component_operations_getComponentPresetNames(self, type='None'): + def _evasionProfile_operations_delete(self, name): """ - 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 result (list): + 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}) + + ### 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 - id (string): + name (string): label (string): - type (string): - description (string): """ - return self._wrapper._post('/testmodel/component/operations/getComponentPresetNames', **{'type': type}) + return self._wrapper._post('/superflow/flows/operations/getCannedFlows', **{}) - ### Removes a SuperFlow from the current working Application Profile. + ### Deletes a given Strike List from the database. @staticmethod - def _appProfile_operations_remove(self, superflow): + def _strikeList_operations_delete(self, name): """ - Removes a SuperFlow from the current working Application Profile. - :param superflow (string): The name of the super flow. + Deletes a given Strike List from the database. + :param name (string): The name of the Strike List to be deleted. """ - return self._wrapper._post('/appProfile/operations/remove', **{'superflow': superflow}) + return self._wrapper._post('/strikeList/operations/delete', **{'name': name}) - ### 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. + ### Load an existing test model template. @staticmethod - def _results_operations_getGroups(self, name, dynamicEnums=True, includeOutputs=True): + def _testmodel_operations_load(self, template): """ - 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): + Load an existing test model template. + :param template (string): The name of the template testmodel """ - return self._wrapper._post('/results/operations/getGroups', **{'name': name, 'dynamicEnums': dynamicEnums, 'includeOutputs': includeOutputs}) + return self._wrapper._post('/testmodel/operations/load', **{'template': template}) - ### null + ### Creates a new Test Model @staticmethod - def _topology_operations_releaseResources(self, count, resourceType): + def _testmodel_operations_new(self, template=None): """ - :param count (number): - :param resourceType (string): + Creates a new Test Model + :param template (string): The name of the template. In this case will be empty. """ - return self._wrapper._post('/topology/operations/releaseResources', **{'count': count, 'resourceType': resourceType}) + return self._wrapper._post('/testmodel/operations/new', **{'template': template}) - ### Deletes a Test Report from the database. + ### Reserves the specified resource of the given type. @staticmethod - def _reports_operations_delete(self, runid): + def _topology_operations_reserveResource(self, group, resourceId, resourceType): """ - Deletes a Test Report from the database. - :param runid (number): The test run id that generated the report you want to delete. + Reserves the specified resource of the given type. + :param group (number): + :param resourceId (number): + :param resourceType (string): """ - return self._wrapper._post('/reports/operations/delete', **{'runid': runid}) + return self._wrapper._post('/topology/operations/reserveResource', **{'group': group, 'resourceId': resourceId, 'resourceType': resourceType}) ### null @staticmethod - def _appProfile_operations_search(self, searchString, limit, sort, sortorder): + def _topology_operations_unreserve(self, unreservation): """ - :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): + :param unreservation (list): list of object with fields - name (string): - label (string): - createdBy (string): - createdOn (string): - revision (number): - description (string): + slot (number): + port (number): """ - return self._wrapper._post('/appProfile/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + return self._wrapper._post('/topology/operations/unreserve', **{'unreservation': unreservation}) - ### Adds an action to the current working SuperFlow + ### Adds a list of SuperFlow to the current working Application Profile. ([{'superflow':'adadad', 'weight':'20'},{..}]) @staticmethod - def _superflow_operations_addAction(self, flowid, type, actionid, source): + def _appProfile_operations_add(self, add): """ - 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. + 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('/superflow/operations/addAction', **{'flowid': flowid, 'type': type, 'actionid': actionid, 'source': source}) + return self._wrapper._post('/appProfile/operations/add', **{'add': add}) - ### Saves the current working Test Model under specified name. + ### Returns the report Table of Contents using the test run id. @staticmethod - def _testmodel_operations_saveAs(self, name, force): + def _reports_operations_getReportContents(self, runid, getTableOfContents=True): """ - 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. + 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('/testmodel/operations/saveAs', **{'name': name, 'force': force}) + return self._wrapper._post('/reports/operations/getReportContents', **{'runid': runid, 'getTableOfContents': getTableOfContents}) - ### Saves the working Test Model using the current name. No need to configure. The current name is used. + ### Returns the section of a report @staticmethod - def _testmodel_operations_save(self, name=None, force=True): + def _reports_operations_getReportTable(self, runid, sectionId): """ - 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. + 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('/testmodel/operations/save', **{'name': name, 'force': force}) + return self._wrapper._post('/reports/operations/getReportTable', **{'runid': runid, 'sectionId': sectionId}) - ### Saves the current working Strike List and gives it a new name. + ### null @staticmethod - def _strikeList_operations_saveAs(self, name, force): + def _topology_operations_releaseAllCnResources(self, cnId): """ - 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. + :param cnId (string): """ - return self._wrapper._post('/strikeList/operations/saveAs', **{'name': name, 'force': force}) + return self._wrapper._post('/topology/operations/releaseAllCnResources', **{'cnId': cnId}) - ### Saves the current working Strike List using the current 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 _strikeList_operations_save(self, name=None, force=True): + def _testmodel_operations_exportModel(self, name, attachments, filepath, runid=None): """ - 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. + 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._post('/strikeList/operations/save', **{'name': name, 'force': force}) + return self._wrapper._export('/testmodel/operations/exportModel', **{'name': name, 'attachments': attachments, 'filepath': filepath, 'runid': runid}) - ### Deletes a given Network Neighborhood Config from the database. + ### 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 _network_operations_delete(self, name): + def _appProfile_operations_exportAppProfile(self, name, attachments, filepath): """ - Deletes a given Network Neighborhood Config from the database. - :param name (string): The name of the Network Neighborhood Config. + 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._post('/network/operations/delete', **{'name': name}) + return self._wrapper._export('/appProfile/operations/exportAppProfile', **{'name': name, 'attachments': attachments, 'filepath': filepath}) - ### null + ### Lists all the component presets names. @staticmethod - def _topology_operations_setPortSettings(self, linkState, autoNegotiation, slotId, portId): + def _testmodel_component_operations_getComponentPresetNames(self, type='None'): """ - :param linkState (string): - :param autoNegotiation (bool): - :param slotId (number): - :param portId (string): + 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 result (list): + list of object with fields + id (string): + label (string): + type (string): + description (string): """ - return self._wrapper._post('/topology/operations/setPortSettings', **{'linkState': linkState, 'autoNegotiation': autoNegotiation, 'slotId': slotId, 'portId': portId}) + return self._wrapper._post('/testmodel/component/operations/getComponentPresetNames', **{'type': type}) ### 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}) + def _loadProfile_operations_save(self): + return self._wrapper._post('/loadProfile/operations/save', **{}) - ### Sets the card mode of a board. + ### Save the active editing LoadProfile under specified name @staticmethod - def _topology_operations_setCardMode(self, board, mode): + def _loadProfile_operations_saveAs(self, name): """ - 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) + Save the active editing LoadProfile under specified name + :param name (string): """ - return self._wrapper._post('/topology/operations/setCardMode', **{'board': board, 'mode': mode}) + return self._wrapper._post('/loadProfile/operations/saveAs', **{'name': name}) - ### Sets the card speed of a board + ### Adds a note to given port. @staticmethod - def _topology_operations_setCardSpeed(self, board, speed): + def _topology_operations_addPortNote(self, interface, note): """ - 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)) + 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/setCardSpeed', **{'board': board, 'speed': speed}) + return self._wrapper._post('/topology/operations/addPortNote', **{'interface': interface, 'note': note}) - ### Sets the card fanout of a board + ### 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 _topology_operations_setCardFanout(self, board, fanid): + def _capture_operations_importCapture(self, name, filename, force): """ - 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) + 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._post('/topology/operations/setCardFanout', **{'board': board, 'fanid': fanid}) + return self._wrapper._import('/capture/operations/importCapture', **{'name': name, 'filename': filename, 'force': force}) - ### Enables/Disables the performance acceleration for a BPS VE blade. + ### Runs a Test. @staticmethod - def _topology_operations_setPerfAcc(self, board, perfacc): + def _testmodel_operations_run(self, modelname, group, allowMalware=False): """ - 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. + 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/setPerfAcc', **{'board': board, 'perfacc': perfacc}) + return self._wrapper._post('/testmodel/operations/run', **{'modelname': modelname, 'group': group, 'allowMalware': allowMalware}) - ### Imports an ATI License file (.lic) on a hardware platform. This operation is NOT recommended to be used on BPS Virtual platforms. + ### Runs a Test. @staticmethod - def _administration_atiLicensing_operations_importAtiLicense(self, filename, name): + def _topology_operations_run(self, modelname, group, allowMalware=False): """ - 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 + 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._import('/administration/atiLicensing/operations/importAtiLicense', **{'filename': filename, 'name': name}) + return self._wrapper._post('/topology/operations/run', **{'modelname': modelname, 'group': group, 'allowMalware': allowMalware}) - ### Returns the report Table of Contents using the test run id. + ### Retrieves the real time statistics for the running test, by giving the run id. @staticmethod - def _reports_operations_getReportContents(self, runid, getTableOfContents=True): + def _testmodel_operations_realTimeStats(self, runid, rtsgroup, numSeconds, numDataPoints=1): """ - 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): + 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('/reports/operations/getReportContents', **{'runid': runid, 'getTableOfContents': getTableOfContents}) + return self._wrapper._post('/testmodel/operations/realTimeStats', **{'runid': runid, 'rtsgroup': rtsgroup, 'numSeconds': numSeconds, 'numDataPoints': numDataPoints}) - ### Returns the section of a report + ### Deletes a given Network Neighborhood Config from the database. @staticmethod - def _reports_operations_getReportTable(self, runid, sectionId): + def _network_operations_delete(self, name): """ - 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): + Deletes a given Network Neighborhood Config from the database. + :param name (string): The name of the Network Neighborhood Config. """ - return self._wrapper._post('/reports/operations/getReportTable', **{'runid': runid, 'sectionId': sectionId}) + return self._wrapper._post('/network/operations/delete', **{'name': name}) - ### Load an existing Strike List and sets it as the current one. + ### Switch port fan-out mode. @staticmethod - def _strikeList_operations_load(self, template): + def _topology_operations_setPortFanoutMode(self, board, port, mode): """ - Load an existing Strike List and sets it as the current one. - :param template (string): The name of the Strike List template + Switch port fan-out mode. + :param board (number): + :param port (string): + :param mode (string): """ - return self._wrapper._post('/strikeList/operations/load', **{'template': template}) + return self._wrapper._post('/topology/operations/setPortFanoutMode', **{'board': board, 'port': port, 'mode': mode}) - ### Creates a new Strike List. + ### Adds a flow to the current working SuperFlow @staticmethod - def _strikeList_operations_new(self, template=None): + def _superflow_operations_addFlow(self, flowParams): """ - Creates a new Strike List. - :param template (string): The name of the template. In this case will be empty. + 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('/strikeList/operations/new', **{'template': template}) + return self._wrapper._post('/superflow/operations/addFlow', **{'flowParams': flowParams}) ### Retrieves all the security options @staticmethod @@ -963,247 +852,221 @@ def _evasionProfile_StrikeOptions_operations_getStrikeOptions(self): """ return self._wrapper._post('/evasionProfile/StrikeOptions/operations/getStrikeOptions', **{}) - ### null + ### Saves the current working Strike List and gives it a new name. @staticmethod - def _administration_operations_logs(self, error=False, messages=False, web=False, all=False, audit=False, info=False, system=False, lines=20, drop=0): + def _strikeList_operations_saveAs(self, name, force): """ - :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 + 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('/administration/operations/logs', **{'error': error, 'messages': messages, 'web': web, 'all': all, 'audit': audit, 'info': info, 'system': system, 'lines': lines, 'drop': drop}) + return self._wrapper._post('/strikeList/operations/saveAs', **{'name': name, 'force': force}) - ### Deletes a given Strike List from the database. + ### Saves the current working Strike List using the current name @staticmethod - def _strikeList_operations_delete(self, name): + def _strikeList_operations_save(self, name=None, force=True): """ - Deletes a given Strike List from the database. - :param name (string): The name of the Strike List to be deleted. + 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/delete', **{'name': name}) + return self._wrapper._post('/strikeList/operations/save', **{'name': name, 'force': force}) - ### null + ### 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 _superflow_actions_operations_getActionChoices(self, id): + def _testmodel_operations_importModel(self, name, filename, force): """ - :param id (number): the flow id + 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._post('/superflow/actions/operations/getActionChoices', **{'id': id}) + return self._wrapper._import('/testmodel/operations/importModel', **{'name': name, 'filename': filename, 'force': force}) - ### Clones a component in the current working Test Model + ### 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 _testmodel_operations_clone(self, template, type, active): + def _appProfile_operations_importAppProfile(self, name, filename, force): """ - 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 + 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._post('/testmodel/operations/clone', **{'template': template, 'type': type, 'active': active}) + return self._wrapper._import('/appProfile/operations/importAppProfile', **{'name': name, 'filename': filename, 'force': force}) - ### Load an existing Evasion Profile and sets it as the current one. + ### 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 _evasionProfile_operations_load(self, template): + def _network_operations_importNetwork(self, name, filename, force): """ - Load an existing Evasion Profile and sets it as the current one. - :param template (string): The name of an Evasion profile template. + 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._post('/evasionProfile/operations/load', **{'template': template}) + return self._wrapper._import('/network/operations/importNetwork', **{'name': name, 'filename': filename, 'force': force}) - ### Creates a new Evasion Profile. + ### Reserves the specified number of resources of given type. @staticmethod - def _evasionProfile_operations_new(self, template=None): + def _topology_operations_reserveResources(self, group, count, resourceType, slotId): """ - Creates a new Evasion Profile. - :param template (string): The name should be empty to create a new object. + 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('/evasionProfile/operations/new', **{'template': template}) + return self._wrapper._post('/topology/operations/reserveResources', **{'group': group, 'count': count, 'resourceType': resourceType, 'slotId': slotId}) - ### Reserves the specified resource of the given type. + ### null @staticmethod - def _topology_operations_reserveResource(self, group, resourceId, resourceType): + def _topology_operations_setPortSettings(self, linkState, autoNegotiation, precoder, slotId, portId): """ - Reserves the specified resource of the given type. - :param group (number): - :param resourceId (number): - :param resourceType (string): + :param linkState (string): + :param autoNegotiation (bool): + :param precoder (bool): + :param slotId (number): + :param portId (string): """ - return self._wrapper._post('/topology/operations/reserveResource', **{'group': group, 'resourceId': resourceId, 'resourceType': resourceType}) + return self._wrapper._post('/topology/operations/setPortSettings', **{'linkState': linkState, 'autoNegotiation': autoNegotiation, 'precoder': precoder, 'slotId': slotId, 'portId': portId}) - ### 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. + ### Adds a new test component to the current working test model @staticmethod - def _testmodel_operations_exportModel(self, name, attachments, filepath, runid=None): + def _testmodel_operations_add(self, name, component, type, active): """ - 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 + 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._export('/testmodel/operations/exportModel', **{'name': name, 'attachments': attachments, 'filepath': filepath, 'runid': runid}) + return self._wrapper._post('/testmodel/operations/add', **{'name': name, 'component': component, 'type': type, 'active': active}) - ### Retrieves the real time statistics for the running test, by giving the run id. + ### Sets the card mode of a board. @staticmethod - def _testmodel_operations_realTimeStats(self, runid, rtsgroup, numSeconds, numDataPoints=1): + def _topology_operations_setCardMode(self, board, mode): """ - 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): + 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('/testmodel/operations/realTimeStats', **{'runid': runid, 'rtsgroup': rtsgroup, 'numSeconds': numSeconds, 'numDataPoints': numDataPoints}) + return self._wrapper._post('/topology/operations/setCardMode', **{'board': board, 'mode': mode}) - ### null + ### Sets the card speed of a board @staticmethod - def _topology_operations_releaseAllCnResources(self, cnId): + def _topology_operations_setCardSpeed(self, board, speed): """ - :param cnId (string): + 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/releaseAllCnResources', **{'cnId': cnId}) + return self._wrapper._post('/topology/operations/setCardSpeed', **{'board': board, 'speed': speed}) - ### Saves the current working Test Model under specified name. + ### Sets the card fanout of a board @staticmethod - def _evasionProfile_operations_saveAs(self, name, force): + def _topology_operations_setCardFanout(self, board, fanid): """ - 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. + 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('/evasionProfile/operations/saveAs', **{'name': name, 'force': force}) + return self._wrapper._post('/topology/operations/setCardFanout', **{'board': board, 'fanid': fanid}) - ### Saves the working Test Model using the current name. No need to configure. The current name is used. + ### Enables/Disables the performance acceleration for a BPS VE blade. @staticmethod - def _evasionProfile_operations_save(self, name=None, force=True): + def _topology_operations_setPerfAcc(self, board, perfacc): """ - 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. + 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('/evasionProfile/operations/save', **{'name': name, 'force': force}) + return self._wrapper._post('/topology/operations/setPerfAcc', **{'board': board, 'perfacc': perfacc}) - ### Sets a User Preference. + ### Reboots the slot with slotId. @staticmethod - def _administration_userSettings_operations_changeUserSetting(self, name, value): + def _topology_operations_reboot(self, board): """ - Sets a User Preference. - :param name (string): The setting name. - :param value (string): The new value for setting. + Reboots the slot with slotId. + :param board (number): """ - return self._wrapper._post('/administration/userSettings/operations/changeUserSetting', **{'name': name, 'value': value}) + return self._wrapper._post('/topology/operations/reboot', **{'board': board}) - ### 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. + ### null @staticmethod - def _reports_operations_exportReport(self, filepath, runid, reportType, sectionIds='', dataType='ALL'): + def _topology_operations_releaseResources(self, count, resourceType, slotId): """ - 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}) - - ### 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}) - - ### 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. + :param count (number): + :param resourceType (string): + :param slotId (number): """ - return self._wrapper._post('/appProfile/operations/new', **{'template': template}) + return self._wrapper._post('/topology/operations/releaseResources', **{'count': count, 'resourceType': resourceType, 'slotId': slotId}) - ### null + ### Saves the working network config and gives it a new name. @staticmethod - def _loadProfile_operations_load(self, template): + def _network_operations_saveAs(self, name, regenerateOldStyle=True, force=False): """ - :param template (string): + 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('/loadProfile/operations/load', **{'template': template}) + return self._wrapper._post('/network/operations/saveAs', **{'name': name, 'regenerateOldStyle': regenerateOldStyle, 'force': force}) - ### 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. + ### Save the current working network config. @staticmethod - def _strikeList_operations_exportStrikeList(self, name, filepath): + def _network_operations_save(self, name=None, regenerateOldStyle=True, force=True): """ - 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 + 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._export('/strikeList/operations/exportStrikeList', **{'name': name, 'filepath': filepath}) + return self._wrapper._post('/network/operations/save', **{'name': name, 'regenerateOldStyle': regenerateOldStyle, 'force': force}) ### null @staticmethod - def _superflow_operations_search(self, searchString, limit, sort, sortorder): + def _topology_operations_reserve(self, reservation, force=False): """ - :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) + :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('/superflow/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + return self._wrapper._post('/topology/operations/reserve', **{'reservation': reservation, 'force': force}) - ### null + ### Removes a flow from the current working SuperFlow. @staticmethod - def _results_operations_getHistoricalResultSize(self, runid, componentid, group): + def _superflow_operations_removeFlow(self, id): """ - :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): + Removes a flow from the current working SuperFlow. + :param id (number): The flow ID. """ - return self._wrapper._post('/results/operations/getHistoricalResultSize', **{'runid': runid, 'componentid': componentid, 'group': group}) + return self._wrapper._post('/superflow/operations/removeFlow', **{'id': id}) - ### null + ### 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 _strikeList_operations_search(self, searchString='', limit=10, sort='name', sortorder='ascending'): + def _administration_operations_exportAllTests(self, filepath): """ - :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. + 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._post('/strikeList/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + return self._wrapper._export('/administration/operations/exportAllTests', **{'filepath': filepath}) - ### null + ### Reboots the compute node with cnId. @staticmethod - def _topology_operations_releaseResource(self, group, resourceId, resourceType): + def _topology_operations_rebootComputeNode(self, cnId): """ - :param group (number): - :param resourceId (number): - :param resourceType (string): + Reboots the compute node with cnId. + :param cnId (string): Compute node id """ - return self._wrapper._post('/topology/operations/releaseResource', **{'group': group, 'resourceId': resourceId, 'resourceType': resourceType}) + return self._wrapper._post('/topology/operations/rebootComputeNode', **{'cnId': cnId}) ### Deletes a given Application Profile from the database. @staticmethod @@ -1216,179 +1079,281 @@ def _appProfile_operations_delete(self, name): ### null @staticmethod - def _topology_operations_unreserve(self, unreservation): + def _network_operations_list(self, userid, clazz, sortorder, sort, limit, offset): """ - :param unreservation (list): + :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 - slot (number): - port (number): + name (string): + type (string): + author (string): + createdOn (string): """ - return self._wrapper._post('/topology/operations/unreserve', **{'unreservation': unreservation}) + return self._wrapper._post('/network/operations/list', **{'userid': userid, 'clazz': clazz, 'sortorder': sortorder, 'sort': sort, 'limit': limit, 'offset': offset}) - ### Reserves all l47 resources of given compute node id. + ### Removes an action from the current working SuperFlow. @staticmethod - def _topology_operations_reserveAllCnResources(self, group, cnId): + def _superflow_operations_removeAction(self, id): """ - Reserves all l47 resources of given compute node id. - :param group (number): - :param cnId (string): + Removes an action from the current working SuperFlow. + :param id (number): The action ID. """ - return self._wrapper._post('/topology/operations/reserveAllCnResources', **{'group': group, 'cnId': cnId}) + return self._wrapper._post('/superflow/operations/removeAction', **{'id': id}) - ### 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. + ### Saves the current working Test Model under specified name. @staticmethod - def _administration_operations_exportAllTests(self, filepath): + def _testmodel_operations_saveAs(self, name, force): """ - 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' + 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._export('/administration/operations/exportAllTests', **{'filepath': filepath}) + return self._wrapper._post('/testmodel/operations/saveAs', **{'name': name, 'force': force}) - ### 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. + ### Saves the working Test Model using the current name. No need to configure. The current name is used. @staticmethod - def _superflow_operations_importResource(self, name, filename, force, type='resource'): + def _testmodel_operations_save(self, name=None, force=True): """ - 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'. + 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._import('/superflow/operations/importResource', **{'name': name, 'filename': filename, 'force': force, 'type': type}) + return self._wrapper._post('/testmodel/operations/save', **{'name': name, 'force': force}) - ### null + ### Removes a SuperFlow from the current working Application Profile. @staticmethod - def _topology_operations_reserve(self, reservation, force=False): + def _appProfile_operations_remove(self, superflow): """ - :param reservation (list): Reserves one or more ports - list of object with fields - group (number): - slot (number): - port (string): - capture (bool): - :param force (bool): + Removes a SuperFlow from the current working Application Profile. + :param superflow (string): The name of the super flow. """ - return self._wrapper._post('/topology/operations/reserve', **{'reservation': reservation, 'force': force}) + return self._wrapper._post('/appProfile/operations/remove', **{'superflow': superflow}) - ### Removes an action from the current working SuperFlow. + ### Deletes a given Test Model from the database. @staticmethod - def _superflow_operations_removeAction(self, id): + def _testmodel_operations_delete(self, name): """ - Removes an action from the current working SuperFlow. - :param id (number): The action ID. + Deletes a given Test Model from the database. + :param name (string): The name of the Test Model. """ - return self._wrapper._post('/superflow/operations/removeAction', **{'id': id}) + return self._wrapper._post('/testmodel/operations/delete', **{'name': name}) - ### Runs a Test. + ### null @staticmethod - def _testmodel_operations_run(self, modelname, group, allowMalware=False): + def _topology_operations_releaseResource(self, group, resourceId, resourceType): """ - 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. + :param group (number): + :param resourceId (number): + :param resourceType (string): """ - return self._wrapper._post('/testmodel/operations/run', **{'modelname': modelname, 'group': group, 'allowMalware': allowMalware}) + return self._wrapper._post('/topology/operations/releaseResource', **{'group': group, 'resourceId': resourceId, 'resourceType': resourceType}) - ### Runs a Test. + ### 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 _topology_operations_run(self, modelname, group, allowMalware=False): + def _administration_operations_importAllTests(self, name, filename, force): """ - 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. + 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._post('/topology/operations/run', **{'modelname': modelname, 'group': group, 'allowMalware': allowMalware}) + return self._wrapper._import('/administration/operations/importAllTests', **{'name': name, 'filename': filename, 'force': force}) - ### Adds a list of SuperFlow to the current working Application Profile. ([{'superflow':'adadad', 'weight':'20'},{..}]) + ### Loads an existing network config by name. @staticmethod - def _appProfile_operations_add(self, add): + def _network_operations_load(self, template): """ - 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 + Loads an existing network config by name. + :param template (string): The name of the network neighborhood template """ - return self._wrapper._post('/appProfile/operations/add', **{'add': add}) + return self._wrapper._post('/network/operations/load', **{'template': template}) - ### Load an existing test model template. + ### Creates a new Network Neighborhood configuration with no name. The template value must remain empty. @staticmethod - def _testmodel_operations_load(self, template): + def _network_operations_new(self, template=None): """ - Load an existing test model template. - :param template (string): The name of the template testmodel + 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('/testmodel/operations/load', **{'template': template}) + return self._wrapper._post('/network/operations/new', **{'template': template}) - ### Creates a new Test Model + ### null @staticmethod - def _testmodel_operations_new(self, template=None): + def _superflow_flows_operations_getFlowChoices(self, id, name): """ - Creates a new Test Model - :param template (string): The name of the template. In this case will be empty. + :param id (number): The flow id. + :param name (string): The flow type/name. + :return result (list): """ - return self._wrapper._post('/testmodel/operations/new', **{'template': template}) + return self._wrapper._post('/superflow/flows/operations/getFlowChoices', **{'id': id, 'name': name}) - ### Adds a new test component to the current working test model + ### Reserves all l47 resources of given compute node id. @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 + def _topology_operations_reserveAllCnResources(self, group, cnId): """ - return self._wrapper._post('/testmodel/operations/add', **{'name': name, 'component': component, 'type': type, 'active': active}) + 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}) + + ### 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}) ### null @staticmethod - def _administration_userSettings_operations_setAutoReserve(self, resourceType, units): + def _administration_operations_logs(self, error=False, messages=False, web=False, all=False, audit=False, info=False, system=False, lines=20, drop=0): """ - :param resourceType (string): Valid values: >l47< or >l23< - :param units (number): + :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/userSettings/operations/setAutoReserve', **{'resourceType': resourceType, 'units': units}) + 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}) - ### Removes a strike from the current working Strike List.([{id: 'bb/c/d'}, {id: 'aa/f/g'}]) + ### null @staticmethod - def _strikeList_operations_remove(self, strike): + def _superflow_operations_search(self, searchString, limit, sort, sortorder): """ - 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): + :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('/strikeList/operations/remove', **{'strike': strike}) + return self._wrapper._post('/superflow/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) ### null @staticmethod - def _evasionProfile_operations_search(self, searchString, limit, sort, sortorder): + def _appProfile_operations_search(self, searchString, limit, sort, sortorder): """ - :param searchString (string): Search evasion profile name matching the string given. + :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. (name/createdBy ...) + :param sort (string): Parameter to sort by. :param sortorder (string): The sort order (ascending/descending) - :return attackprofile (list): + :return appprofile (list): list of object with fields name (string): label (string): createdBy (string): + createdOn (string): revision (number): description (string): """ - return self._wrapper._post('/evasionProfile/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) + return self._wrapper._post('/appProfile/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) - ### Deletes a given Evasion Profile from the database. + ### Load an existing Application Profile and sets it as the current one. @staticmethod - def _evasionProfile_operations_delete(self, name): + def _appProfile_operations_load(self, template): """ - Deletes a given Evasion Profile from the database. - :param name (string): The name of the profile to delete. + 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('/evasionProfile/operations/delete', **{'name': name}) + 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) ### Removes a component from the current working Test Model. @staticmethod @@ -1399,19 +1364,102 @@ def _testmodel_operations_remove(self, id): """ return self._wrapper._post('/testmodel/operations/remove', **{'id': id}) + ### 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}) + + ### 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', **{}) + ### null @staticmethod - def _loadProfile_operations_save(self): - return self._wrapper._post('/loadProfile/operations/save', **{}) + def _loadProfile_operations_load(self, template): + """ + :param template (string): + """ + return self._wrapper._post('/loadProfile/operations/load', **{'template': template}) - ### Save the active editing LoadProfile under specified name + ### Adds a list of strikes to the current working Strike List.([{id: 'b/b/v/f'}, {id: 'aa/f/h'}]) @staticmethod - def _loadProfile_operations_saveAs(self, name): + def _strikeList_operations_add(self, strike, validate=True, toList=None): """ - Save the active editing LoadProfile under specified name - :param name (string): + 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('/loadProfile/operations/saveAs', **{'name': name}) + return self._wrapper._post('/strikeList/operations/add', **{'strike': strike, 'validate': validate, 'toList': toList}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) + + ### 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}) ### Saves the current working Application Profiles and gives it a new name. @staticmethod @@ -1433,65 +1481,138 @@ def _appProfile_operations_save(self, name=None, force=True): """ return self._wrapper._post('/appProfile/operations/save', **{'name': name, 'force': force}) - ### Recompute percentages in the current working Application Profile + ### null @staticmethod - def _appProfile_operations_recompute(self): + def _strikeList_operations_search(self, searchString='', limit=10, sort='name', sortorder='ascending'): """ - Recompute percentages in the current working Application Profile + :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('/appProfile/operations/recompute', **{}) + return self._wrapper._post('/strikeList/operations/search', **{'searchString': searchString, 'limit': limit, 'sort': sort, 'sortorder': sortorder}) - ### Search Networks. + ### 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 _network_operations_search(self, searchString, userid, clazz, sortorder, sort, limit, offset): + def _topology_operations_exportCapture(self, filepath, args): """ - 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): + 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._post('/network/operations/search', **{'searchString': searchString, 'userid': userid, 'clazz': clazz, 'sortorder': sortorder, 'sort': sort, 'limit': limit, 'offset': offset}) + return self._wrapper._export('/topology/operations/exportCapture', **{'filepath': filepath, 'args': args}) - ### Adds a flow to the current working SuperFlow + ### Sets a User Preference. @staticmethod - def _superflow_operations_addFlow(self, flowParams): + def _administration_userSettings_operations_changeUserSetting(self, name, value): """ - 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. + Sets a User Preference. + :param name (string): The setting name. + :param value (string): The new value for setting. """ - return self._wrapper._post('/superflow/operations/addFlow', **{'flowParams': flowParams}) + return self._wrapper._post('/administration/userSettings/operations/changeUserSetting', **{'name': name, 'value': value}) class DataModelMeta(type): _dataModel = { - 'administration': { - 'userSettings': [{ + 'strikeList': { + 'strikes': [{ + 'severity': { + }, + 'year': { + }, + 'variants': { + }, + 'reference': [{ + 'label': { + }, + 'type': { + }, + 'value': { + } + }], + 'path': { + }, + 'protocol': { + }, + 'fileSize': { + }, + 'fileExtension': { + }, 'name': { }, - 'content': { + 'id': { }, - 'operations': { - 'changeUserSetting': [{ - }], - 'setAutoReserve': [{ - }] + 'category': { + }, + 'keyword': [{ + 'name': { + } + }], + 'direction': { + }, + 'strike': { + }, + 'strikeset': { } }], + 'author': { + }, + 'description': { + }, + 'label': { + }, + 'queryString': { + }, + 'SecurityBehavior': { + }, + 'StrikeOptions': { + }, + 'createdOn': { + }, + 'revision': { + }, + 'lockedBy': { + }, + 'createdBy': { + }, + 'name': { + }, + 'clazz': { + }, + 'numStrikes': { + }, + 'operations': { + 'exportStrikeList': [{ + }], + 'load': [{ + }], + 'new': [{ + }], + 'delete': [{ + }], + 'saveAs': [{ + }], + 'save': [{ + }], + 'remove': [{ + }], + 'importStrikeList': [{ + }], + 'add': [{ + }], + 'search': [{ + }] + } + }, + 'administration': { 'systemSettings': { 'strikepackUpdate': { 'password': { @@ -1578,326 +1699,118 @@ class DataModelMeta(type): }] } }, + 'userSettings': [{ + 'name': { + }, + 'content': { + }, + 'operations': { + 'setAutoReserve': [{ + }], + 'changeUserSetting': [{ + }] + } + }], + 'sessions': [{ + 'inactivityTimeout': { + }, + 'session': { + }, + 'inactivity': { + }, + 'type': { + }, + 'user': { + }, + 'age': { + }, + 'operations': { + 'list': [{ + 'inactivityTimeout': { + }, + 'session': { + }, + 'inactivity': { + }, + 'type': { + }, + 'user': { + }, + 'age': { + } + }], + 'close': [{ + }] + } + }], 'operations': { + 'exportAllTests': [{ + }], 'importAllTests': [{ }], 'logs': [{ - }], - 'exportAllTests': [{ }] } }, - 'results': [{ - 'name': { - }, - 'content': { - }, - 'datasetvals': { - }, - 'operations': { - 'getHistoricalSeries': [{ - }], - 'getGroups': [{ - 'lockedBy': { - }, - 'createdBy': { - }, - 'author': { + 'statistics': { + 'component': [{ + 'statNames': [{ + 'name': { }, 'description': { }, - 'label': { - }, - 'createdOn': { + 'realtimeGroup': { }, - 'clazz': { + 'label': { }, - 'revision': { + 'units': { } }], - 'getHistoricalResultSize': [{ - }] - } - }], - 'strikeList': { + 'label': { + } + }] + }, + 'capture': { + 'pcapFilesize': { + }, + 'avgPacketSize': { + }, 'author': { }, + 'udpPackets': { + }, 'description': { }, 'label': { }, - 'queryString': { + 'createdOn': { }, - 'SecurityBehavior': { + 'name': { }, - 'strikes': [{ - 'path': { - }, - 'strike': { - }, - 'strikeset': { - } - }], - 'StrikeOptions': { + 'revision': { }, - 'createdOn': { + 'duration': { }, - 'revision': { + 'ipv4Packets': { + }, + 'ipv6Packets': { }, 'lockedBy': { }, + 'tcpPackets': { + }, 'createdBy': { }, - 'name': { + 'avgFlowLength': { }, - 'clazz': { + 'totalPackets': { }, - 'numStrikes': { + 'clazz': { }, 'operations': { - 'add': [{ - }], - 'importStrikeList': [{ - }], - 'saveAs': [{ - }], - 'save': [{ - }], - 'load': [{ - }], - 'new': [{ - }], - 'delete': [{ - }], - 'exportStrikeList': [{ - }], 'search': [{ }], - 'remove': [{ - }] - } - }, - 'superflow': { - 'settings': [{ - 'name': { - }, - 'description': { - }, - 'realtimeGroup': { - }, - 'label': { - }, - 'units': { - } - }], - 'percentFlows': { - }, - 'seed': { - }, - 'hosts': [{ - 'iface': { - }, - 'hostname': { - }, - 'ip': { - 'type': { - } - }, - 'id': { - } - }], - 'author': { - }, - 'estimate_bytes': { - }, - 'estimate_flows': { - }, - 'weight': { - }, - 'description': { - }, - 'label': { - }, - 'params': { - }, - 'constraints': { - }, - 'createdOn': { - }, - 'revision': { - }, - 'lockedBy': { - }, - 'flows': [{ - 'singleNP': { - }, - 'name': { - }, - 'from': { - }, - 'label': { - }, - 'id': { - }, - 'to': { - }, - 'params': { - }, - 'flowcount': { - }, - 'operations': { - 'getFlowChoices': [{ - 'lockedBy': { - }, - 'createdBy': { - }, - 'author': { - }, - 'description': { - }, - 'label': { - }, - 'createdOn': { - }, - 'clazz': { - }, - 'revision': { - } - }], - 'getCannedFlows': [{ - }] - } - }], - 'generated': { - }, - 'createdBy': { - }, - 'percentBandwidth': { - }, - 'name': { - }, - 'actions': [{ - 'flowlabel': { - }, - 'gotoBlock': { - }, - 'exflows': { - }, - 'matchBlock': { - }, - 'id': { - }, - 'source': { - }, - 'label': { - }, - 'type': { - }, - 'params': { - }, - 'flowid': { - }, - 'actionInfo': [{ - 'name': { - }, - 'description': { - }, - 'realtimeGroup': { - }, - 'label': { - }, - 'units': { - } - }], - 'operations': { - 'getActionInfo': [{ - 'name': { - }, - 'description': { - }, - 'realtimeGroup': { - }, - 'label': { - }, - 'units': { - } - }], - 'getActionChoices': [{ - }] - } - }], - 'clazz': { - }, - 'operations': { - 'addHost': [{ - }], - 'saveAs': [{ - }], - 'save': [{ - }], - 'load': [{ - }], - 'new': [{ - }], - 'delete': [{ - }], - 'removeFlow': [{ - }], - 'addAction': [{ - }], - 'search': [{ - }], - 'importResource': [{ - }], - 'removeAction': [{ - }], - 'addFlow': [{ - }] - } - }, - 'reports': { - 'endtime': { - }, - 'starttime': { - }, - 'label': { - }, - 'testname': { - }, - 'network': { - }, - 'duration': { - }, - 'result': { - }, - 'size': { - }, - 'isPartOfResiliency': { - }, - 'name': { - }, - 'iteration': { - }, - 'testid': { - 'host': { - }, - 'name': { - }, - 'iteration': { - } - }, - 'user': { - }, - 'operations': { - 'delete': [{ - }], - 'search': [{ - }], - 'getReportContents': [{ - }], - 'getReportTable': [{ - }], - 'exportReport': [{ + 'importCapture': [{ }] } }, @@ -2427,113 +2340,197 @@ class DataModelMeta(type): 'revision': { }, 'operations': { + 'search': [{ + }], 'load': [{ }], 'new': [{ }], + 'delete': [{ + }], 'saveAs': [{ }], 'save': [{ - }], - 'search': [{ - }], - 'delete': [{ }] } }, - 'appProfile': { - 'weightType': { - }, - 'lockedBy': { - }, - 'createdBy': { - }, - 'author': { - }, - 'name': { - }, - 'superflow': [{ - 'settings': [{ - 'name': { + 'loadProfile': { + 'presets': [{ + 'phase': [{ + 'duration': { }, - 'description': { + 'phaseId': { }, - 'realtimeGroup': { + 'type': { }, - 'label': { + 'sessions.max': { }, - 'units': { - } - }], - 'percentFlows': { - }, - 'seed': { - }, + 'sessions.maxPerSecond': { + }, + 'rateDist.unit': { + }, + 'rateDist.min': { + }, + 'rampDist.steadyBehavior': { + }, + 'rateDist.type': { + }, + 'rateDist.scope': { + } + }], 'author': { }, - 'estimate_bytes': { - }, - 'estimate_flows': { - }, - 'weight': { + 'regen': { }, 'description': { }, 'label': { }, - 'params': { - }, - 'constraints': { - }, 'createdOn': { }, + 'summaryData': { + 'deviceType': { + }, + 'unknownUdpAppNames': { + }, + 'unknownSslSuperflowName': { + }, + 'magicNumber': { + }, + 'downloadBytesSum': { + }, + 'version': { + }, + 'phaseDuration': { + }, + 'unknownTcpAppNames': { + }, + 'uploadBytesSum': { + }, + 'summaryName': { + }, + 'basisOfRegeneration': { + }, + 'activeFlowsSum': { + }, + 'miniSlotDuration': { + }, + 'unknownSslAppNames': { + }, + 'dynamicSuperflowName': { + }, + 'appStat': [{ + }], + 'startTime': { + }, + 'endTime': { + }, + 'dynamicAppNames': { + } + }, 'revision': { }, 'lockedBy': { }, - 'generated': { - }, 'createdBy': { }, - 'percentBandwidth': { - }, 'name': { }, 'clazz': { } }], + 'phase': [{ + 'duration': { + }, + 'phaseId': { + }, + 'type': { + }, + 'sessions.max': { + }, + 'sessions.maxPerSecond': { + }, + 'rateDist.unit': { + }, + 'rateDist.min': { + }, + 'rampDist.steadyBehavior': { + }, + 'rateDist.type': { + }, + 'rateDist.scope': { + } + }], + 'author': { + }, + 'regen': { + }, 'description': { }, 'label': { }, 'createdOn': { }, - 'clazz': { + 'summaryData': { + 'deviceType': { + }, + 'unknownUdpAppNames': { + }, + 'unknownSslSuperflowName': { + }, + 'magicNumber': { + }, + 'downloadBytesSum': { + }, + 'version': { + }, + 'phaseDuration': { + }, + 'unknownTcpAppNames': { + }, + 'uploadBytesSum': { + }, + 'summaryName': { + }, + 'basisOfRegeneration': { + }, + 'activeFlowsSum': { + }, + 'miniSlotDuration': { + }, + 'unknownSslAppNames': { + }, + 'dynamicSuperflowName': { + }, + 'appStat': [{ + }], + 'startTime': { + }, + 'endTime': { + }, + 'dynamicAppNames': { + } }, 'revision': { }, + 'lockedBy': { + }, + 'createdBy': { + }, + 'name': { + }, + 'clazz': { + }, 'operations': { - 'exportAppProfile': [{ - }], - 'importAppProfile': [{ - }], - 'remove': [{ - }], - 'search': [{ - }], - 'load': [{ - }], - 'new': [{ + 'createNewCustom': [{ }], 'delete': [{ }], - 'add': [{ + 'save': [{ }], 'saveAs': [{ }], - 'save': [{ - }], - 'recompute': [{ + 'load': [{ }] } }, @@ -2542,6 +2539,12 @@ class DataModelMeta(type): }, 'ixos': { }, + 'chain': { + 'name': { + }, + 'remotes': { + } + }, 'cnState': [{ 'cnSlotNo': { }, @@ -2555,6 +2558,8 @@ class DataModelMeta(type): }, 'cnId': { }, + 'state': { + }, 'marketingName': { } }], @@ -2600,8 +2605,6 @@ class DataModelMeta(type): }, 'slot': [{ 'port': [{ - 'owner': { - }, 'note': { }, 'auto': { @@ -2612,20 +2615,10 @@ class DataModelMeta(type): }, 'speed': { }, - 'mtu': { - }, - 'currentMode': { - }, 'number': { }, - 'exportProgress': { - }, - 'ifmacaddr': { - }, 'ifname': { }, - 'reservedBy': { - }, 'capturing': { }, 'model': { @@ -2634,9 +2627,33 @@ class DataModelMeta(type): }, 'state': { }, + 'group': { + }, + 'owner': { + }, + 'portGroup': { + }, + 'precoder': { + }, + 'capture': { + }, + 'active': { + }, + 'mtu': { + }, + 'currentMode': { + }, + 'exportProgress': { + }, + 'ifmacaddr': { + }, + 'reservedBy': { + }, + 'fullduplex': { + }, 'possibleModes': { }, - 'group': { + 'ignorepause': { } }], 'np': [{ @@ -2677,6 +2694,16 @@ class DataModelMeta(type): }], 'firmwareUpgrade': { }, + 'remoteInfo': { + 'host': { + }, + 'slotId': { + }, + 'state': { + } + }, + 'interfaceCount': { + }, 'model': { }, 'state': { @@ -2701,14 +2728,6 @@ class DataModelMeta(type): }] }, 'operations': { - 'softReboot': [{ - }], - 'addResourceNote': [{ - }], - 'exportCapture': [{ - }], - 'addPortNote': [{ - }], 'getFanoutModes': [{ 'cardModel': { }, @@ -2719,29 +2738,21 @@ class DataModelMeta(type): } }] }], - 'reserveResources': [{ + 'softReboot': [{ }], - 'stopRun': [{ + 'reserveResource': [{ }], - 'getPortAvailableModes': [{ - 'modes': [{ - 'name': { - }, - 'fanoutId': { - } - }], - 'slot': { - }, - 'port': { - } + 'unreserve': [{ }], - 'setPortFanoutMode': [{ + 'releaseAllCnResources': [{ }], - 'reboot': [{ + 'addPortNote': [{ }], - 'rebootComputeNode': [{ + 'run': [{ }], - 'releaseResources': [{ + 'setPortFanoutMode': [{ + }], + 'reserveResources': [{ }], 'setPortSettings': [{ }], @@ -2753,971 +2764,2173 @@ class DataModelMeta(type): }], 'setPerfAcc': [{ }], - 'reserveResource': [{ + 'reboot': [{ }], - 'releaseAllCnResources': [{ + 'releaseResources': [{ }], - 'releaseResource': [{ + 'reserve': [{ }], - 'unreserve': [{ + 'rebootComputeNode': [{ }], - 'reserveAllCnResources': [{ + 'releaseResource': [{ }], - 'reserve': [{ + 'reserveAllCnResources': [{ }], - 'run': [{ - }] - } - }, - 'strikes': { - 'severity': { - }, - 'year': { - }, - 'variants': { - }, - 'reference': [{ + 'getPortAvailableModes': [{ + 'modes': [{ + 'name': { + }, + 'fanoutId': { + } + }], + 'slot': { + }, + 'port': { + } + }], + 'addResourceNote': [{ + }], + 'stopRun': [{ + }], + 'exportCapture': [{ + }] + } + }, + 'testmodel': { + 'testComponentTypesDescription': [{ + 'template': { + }, + 'name': { + }, + 'description': { + }, 'label': { }, 'type': { - }, - 'value': { } }], - 'path': { - }, - 'protocol': { - }, - 'fileSize': { - }, - 'fileExtension': { - }, - 'name': { - }, - 'id': { - }, - 'category': { + 'lastrunby': { }, - 'keyword': [{ - 'name': { + 'summaryInfo': { + 'totalSubnets': { + }, + 'totalMacAddresses': { + }, + 'totalUniqueStrikes': { + }, + 'totalUniqueSuperflows': { + }, + 'requiredMTU': { } - }], - 'direction': { - }, - 'operations': { - 'search': [{ - }] - } - }, - 'capture': { - 'pcapFilesize': { - }, - 'avgPacketSize': { - }, - 'author': { - }, - 'udpPackets': { - }, - 'description': { - }, - 'label': { - }, - 'createdOn': { - }, - 'name': { - }, - 'revision': { - }, - 'duration': { - }, - 'ipv4Packets': { - }, - 'ipv6Packets': { - }, - 'lockedBy': { - }, - 'tcpPackets': { - }, - 'createdBy': { - }, - 'avgFlowLength': { - }, - 'totalPackets': { - }, - 'clazz': { - }, - 'operations': { - 'importCapture': [{ - }], - 'search': [{ - }] - } - }, - 'network': { - 'lockedBy': { - }, - 'createdBy': { }, 'author': { }, - 'name': { - }, - 'interfaceCount': { + 'lastrun': { }, 'description': { }, 'label': { }, - 'networkModel': { - 'ip_router': [{ - 'gateway_ip_address': { - }, - 'netmask': { - }, - 'default_container': { + 'sharedComponentSettings': { + 'maximumConcurrentFlows': { + 'current': { }, - 'id': { + 'original': { }, - 'ip_address': { + 'content': { } - }], - 'ue_info': [{ - 'imsi_base': { - }, - 'secret_key_step': { - }, - 'count': { - }, - 'operator_variant': { - }, - 'secret_key': { - }, - 'imei_base': { - }, - 'msisdn_base': { + }, + 'totalAttacks': { + 'current': { }, - 'maxmbps_per_ue': { + 'original': { }, - 'mobility_session_infos': [{ - 'id': { - }, - 'value': { - } - }], - 'id': { + 'content': { } - }], - 'ip_ldap_server': [{ - 'auth_timeout': { - }, - 'ldap_username_start_tag': { - }, - 'ldap_user_min': { - }, - 'ldap_user_count': { - }, - 'authentication_rate': { - }, - 'ldap_password_start_tag': { - }, - 'ldap_user_max': { - }, - 'id': { + }, + 'totalBandwidth': { + 'current': { }, - 'ldap_server_address': { + 'original': { }, - 'dn_fixed_val': { + 'content': { } - }], - 'mme_sgw_pgw6': [{ - 'ue_info': { - }, - 'max_sessions': { - }, - 'lease_address': { - }, - 'dns': { - }, - 'plmn': { - }, - 'ip_address': { - }, - 'sgw_advertised_sgw': { - }, - 'sgw_advertised_pgw': { - }, - 'lease_address_v6': { - }, - 'gateway_ip_address': { - }, - 'default_container': { + }, + 'maxFlowCreationRate': { + 'current': { }, - 'id': { + 'original': { }, - 'prefix_length': { + 'content': { } - }], - 'mobility_session_info': [{ - 'password': { - }, - 'bearers': [{ - 'qci_label': { - } - }], - 'id': { - }, - 'access_point_name': { + }, + 'totalAddresses': { + 'current': { }, - 'username': { + 'original': { }, - 'initiated_dedicated_bearers': { + 'content': { } - }], - 'ggsn6': [{ - 'lease_address': { - }, - 'count': { - }, - 'dns': { - }, - 'ggsn_advertised_control_ip_address': { - }, - 'ip_address': { - }, - 'ggsn_advertised_data_ip_address': { + }, + 'samplePeriod': { + 'current': { }, - 'lease_address_v6': { + 'original': { }, - 'gateway_ip_address': { - }, - 'default_container': { - }, - 'id': { - }, - 'prefix_length': { + 'content': { } - }], - 'ip_static_hosts': [{ - 'mpls_list': [{ - 'id': { + } + }, + 'createdOn': { + }, + 'network': { + }, + 'revision': { + }, + 'duration': { + }, + 'result': { + }, + 'component': [{ + 'author': { + }, + 'originalPreset': { + }, + 'active': { + }, + 'originalPresetLabel': { + }, + 'description': { + }, + 'label': { + }, + 'type': { + }, + '@type:liveappsim': { + 'app': { + 'removeUnknownTcpUdp': { }, - 'value': { + 'replace_streams': { + }, + 'removeUnknownSSL': { + }, + 'streamsPerSuperflow': { + }, + 'removedns': { + }, + 'fidelity': { } - }], - 'ip_selection_type': { - }, - 'count': { }, - 'dns': { + 'tcp': { + 'disable_ack_piggyback': { + }, + 'delay_acks': { + }, + 'mss': { + }, + 'raw_flags': { + }, + 'psh_every_segment': { + }, + 'ecn': { + }, + 'tcp_window_scale': { + }, + 'initial_receive_window': { + }, + 'reset_at_end': { + }, + 'dynamic_receive_window_size': { + }, + 'tcp_connect_delay_ms': { + }, + 'aging_time_data_type': { + }, + 'tcp_4_way_close': { + }, + 'shutdown_data': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'aging_time': { + }, + 'add_timestamps': { + }, + 'retries': { + }, + 'handshake_data': { + }, + 'ack_every_n': { + }, + 'syn_data_padding': { + }, + 'retry_quantum_ms': { + }, + 'delay_acks_ms': { + } }, - 'psn': { + 'inflateDeflate': { }, - 'psn_netmask': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { + } }, - 'ip_address': { + 'sessions': { + 'openFast': { + }, + 'closeFast': { + }, + 'max': { + }, + 'allocationOverride': { + }, + 'targetPerSecond': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'maxPerSecond': { + }, + 'engine': { + }, + 'statDetail': { + }, + 'emphasis': { + }, + 'maxActive': { + } }, - 'tags': { + 'loadprofile': { + 'name': { + }, + 'label': { + } }, - 'proxy': { + 'ip': { + 'tos': { + }, + 'ttl': { + } }, - 'maxmbps_per_host': { + 'ip6': { + 'flowlabel': { + }, + 'traffic_class': { + }, + 'hop_limit': { + } }, - 'gateway_ip_address': { + 'srcPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'netmask': { + 'tputscalefactor': { }, - 'ldap': { + 'rampUpProfile': { + 'min': { + }, + 'max': { + }, + 'increment': { + }, + 'interval': { + }, + 'type': { + } }, - 'default_container': { + 'concurrencyscalefactor': { }, - 'id': { + 'delayStart': { }, - 'dns_proxy': { + 'rampDist': { + 'upBehavior': { + }, + 'down': { + }, + 'steadyBehavior': { + }, + 'downBehavior': { + }, + 'up': { + }, + 'synRetryMode': { + }, + 'steady': { + } }, - 'behind_snapt': { + 'sfratescalefactor': { }, - 'enable_stats': { + 'liveProfile': { } - }], - 'ggsn': [{ - 'lease_address': { + }, + '@type:layer3advanced': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'rate': { + }, + 'increment': { + }, + 'type': { + }, + 'ramptype': { + } }, - 'count': { + 'bidirectional': { }, - 'dns': { + 'enableTCP': { }, - 'ggsn_advertised_control_ip_address': { + 'slowStart': { }, - 'ip_address': { + 'Templates': { + 'TemplateType': { + } }, - 'ggsn_advertised_data_ip_address': { + 'slowStartFps': { }, - 'lease_address_v6': { + 'duration': { + 'disable_nd_probes': { + }, + 'durationTime': { + }, + 'durationFrames': { + } }, - 'gateway_ip_address': { + 'enablePerStreamStats': { }, - 'netmask': { + 'tuple_gen_seed': { }, - 'default_container': { + 'payload': { + 'data': { + }, + 'type': { + }, + 'dataWidth': { + } }, - 'id': { - } - }], - 'ue': [{ - 'allocation_rate': { + 'advancedUDP': { + 'lengthVal': { + }, + 'lengthField': { + }, + 'checksumVal': { + }, + 'checksumField': { + } }, - 'mobility_interval_ms': { + 'delayStart': { }, - 'ue_info': { + 'payloadAdvanced': { + 'udfMode': { + }, + 'udfLength': { + }, + 'udfDataWidth': { + }, + 'udfOffset': { + } }, - 'dns': { + 'sizeDist': { + 'increment': { + }, + 'type': { + }, + 'min': { + }, + 'rate': { + }, + 'mixlen2': { + }, + 'mixweight6': { + }, + 'mixlen1': { + }, + 'mixweight7': { + }, + 'mixlen4': { + }, + 'mixweight4': { + }, + 'mixlen3': { + }, + 'mixweight5': { + }, + 'mixlen6': { + }, + 'mixlen5': { + }, + 'mixlen8': { + }, + 'mixweight8': { + }, + 'mixlen7': { + }, + 'mixweight9': { + }, + 'mixlen9': { + }, + 'mixweight2': { + }, + 'max': { + }, + 'mixweight3': { + }, + 'mixweight1': { + }, + 'mixlen10': { + }, + 'mixweight10': { + }, + 'unit': { + } }, - 'mobility_action': { + 'advancedIPv4': { + 'lengthVal': { + }, + 'optionHeaderField': { + }, + 'optionHeaderData': { + }, + 'lengthField': { + }, + 'checksumVal': { + }, + 'tos': { + }, + 'checksumField': { + }, + 'ttl': { + } }, - 'tags': { + 'advancedIPv6': { + 'flowLabel': { + }, + 'lengthVal': { + }, + 'extensionHeaderField': { + }, + 'lengthField': { + }, + 'nextHeader': { + }, + 'trafficClass': { + }, + 'extensionHeaderData': { + }, + 'hopLimit': { + } + } + }, + '@type:appsim': { + 'app': { + 'replace_streams': { + }, + 'streamsPerSuperflow': { + }, + 'removedns': { + }, + 'fidelity': { + } }, - 'proxy': { + 'tcp': { + 'disable_ack_piggyback': { + }, + 'delay_acks': { + }, + 'mss': { + }, + 'raw_flags': { + }, + 'psh_every_segment': { + }, + 'ecn': { + }, + 'tcp_window_scale': { + }, + 'initial_receive_window': { + }, + 'reset_at_end': { + }, + 'dynamic_receive_window_size': { + }, + 'tcp_connect_delay_ms': { + }, + 'aging_time_data_type': { + }, + 'tcp_4_way_close': { + }, + 'shutdown_data': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'aging_time': { + }, + 'add_timestamps': { + }, + 'retries': { + }, + 'handshake_data': { + }, + 'ack_every_n': { + }, + 'syn_data_padding': { + }, + 'retry_quantum_ms': { + }, + 'delay_acks_ms': { + } }, - 'default_container': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { + } }, - 'mobility_with_traffic': { + 'sessions': { + 'openFast': { + }, + 'closeFast': { + }, + 'max': { + }, + 'allocationOverride': { + }, + 'targetPerSecond': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'maxPerSecond': { + }, + 'engine': { + }, + 'statDetail': { + }, + 'emphasis': { + }, + 'maxActive': { + } }, - 'id': { + 'loadprofile': { + 'name': { + }, + 'label': { + } }, - 'behind_snapt': { + 'profile': { }, - 'request_ipv6': { + 'ip': { + 'tos': { + }, + 'ttl': { + } }, - 'enable_stats': { - } - }], - 'enodeb_mme_sgw6': [{ - 'dns': { + 'resources': { + 'expand': { + } }, - 'plmn': { + 'experimental': { + 'tcpSegmentsBurst': { + }, + 'unify_l4_bufs': { + } }, - 'ip_allocation_mode': { - }, - 'mme_ip_address': { - }, - 'pgw_ip_address': { + 'ssl': { + 'ssl_client_keylog': { + }, + 'upgrade': { + }, + 'sslReuseType': { + }, + 'server_record_len': { + }, + 'client_record_len': { + }, + 'ssl_keylog_max_entries': { + } }, - 'ue_address': { + 'ip6': { + 'flowlabel': { + }, + 'traffic_class': { + }, + 'hop_limit': { + } }, - 'gateway_ip_address': { + 'srcPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'default_container': { + 'rampUpProfile': { + 'min': { + }, + 'max': { + }, + 'increment': { + }, + 'interval': { + }, + 'type': { + } }, - 'id': { + 'delayStart': { }, - 'prefix_length': { + 'rampDist': { + 'upBehavior': { + }, + 'down': { + }, + 'steadyBehavior': { + }, + 'downBehavior': { + }, + 'up': { + }, + 'synRetryMode': { + }, + 'steady': { + } } - }], - 'ds_lite_aftr': [{ - 'count': { - }, - 'ip_address': { - }, - 'ipv6_addr_alloc_mode': { - }, - 'gateway_ip_address': { - }, - 'default_container': { - }, - 'b4_count': { + }, + '@type:security_all': { + 'maxConcurrAttacks': { }, - 'b4_ip_address': { + 'attackRetries': { }, - 'id': { + 'maxPacketsPerSecond': { }, - 'prefix_length': { - } - }], - 'ipsec_router': [{ - 'gateway_ip_address': { + 'attackPlan': { }, - 'netmask': { + 'randomSeed': { }, - 'ipsec': { + 'delayStart': { }, - 'default_container': { + 'attackProfile': { }, - 'id': { + 'attackPlanIterations': { }, - 'ip_address': { + 'attackPlanIterationDelay': { }, - 'ike_peer_ip_address': { + 'maxAttacksPerSecond': { } - }], - 'dhcpv6c_req_opts_cfg': [{ - 'dhcpv6v_req_preference': { - }, - 'dhcpv6v_req_dns_list': { + }, + '@type:security_np': { + 'attackRetries': { }, - 'dhcpv6v_req_dns_resolvers': { + 'sessions': { + 'max': { + }, + 'maxPerSecond': { + } }, - 'dhcpv6v_req_server_id': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { + } }, - 'id': { - } - }], - 'sgsn': [{ - 'gateway_ip_address': { + 'attackPlan': { }, - 'netmask': { + 'randomSeed': { }, - 'default_container': { + 'delayStart': { }, - 'ggsn_ip_address': { + 'attackProfile': { }, - 'id': { + 'attackPlanIterations': { }, - 'ip_address': { + 'attackPlanIterationDelay': { } - }], - 'enodeb_mme6': [{ - 'dns': { - }, - 'plmn': { - }, - 'ip_allocation_mode': { - }, - 'enodebs': [{ - 'gateway_ip_address': { + }, + '@type:layer3': { + 'rateDist': { + 'unit': { }, - 'default_container': { + 'min': { }, - 'enodebCount': { + 'max': { }, - 'ip_address': { + 'rate': { }, - 'prefix_length': { + 'increment': { + }, + 'type': { + }, + 'ramptype': { } - }], - 'mme_ip_address': { - }, - 'pgw_ip_address': { }, - 'ue_address': { + 'bidirectional': { }, - 'gateway_ip_address': { + 'randomizeIP': { }, - 'default_container': { + 'enableTCP': { }, - 'sgw_ip_address': { + 'slowStart': { }, - 'id': { + 'Templates': { + 'TemplateType': { + } }, - 'prefix_length': { - } - }], - 'plmn': [{ - 'mnc': { + 'srcPort': { }, - 'description': { + 'slowStartFps': { }, - 'id': { + 'duration': { + 'disable_nd_probes': { + }, + 'durationTime': { + }, + 'durationFrames': { + } }, - 'mcc': { - } - }], - 'sgw_pgw': [{ - 'max_sessions': { + 'udpSrcPortMode': { }, - 'lease_address': { + 'dstPort': { }, - 'dns': { + 'payload': { + 'data': { + }, + 'type': { + }, + 'dataWidth': { + } }, - 'plmn': { + 'syncIP': { }, - 'ip_address': { + 'addrGenMode': { }, - 'sgw_advertised_sgw': { + 'maxStreams': { }, - 'sgw_advertised_pgw': { + 'dstPortMask': { }, - 'lease_address_v6': { + 'udpDstPortMode': { }, - 'gateway_ip_address': { + 'advancedUDP': { + 'lengthVal': { + }, + 'lengthField': { + }, + 'checksumVal': { + }, + 'checksumField': { + } }, - 'netmask': { + 'delayStart': { }, - 'default_container': { + 'payloadAdvanced': { + 'udfMode': { + }, + 'udfLength': { + }, + 'udfDataWidth': { + }, + 'udfOffset': { + } }, - 'id': { - } - }], - 'ip6_dhcp_server': [{ - 'ia_type': { - }, - 'pool_size': { - }, - 'ip_address': { + 'sizeDist': { + 'increment': { + }, + 'type': { + }, + 'min': { + }, + 'rate': { + }, + 'mixlen2': { + }, + 'mixweight6': { + }, + 'mixlen1': { + }, + 'mixweight7': { + }, + 'mixlen4': { + }, + 'mixweight4': { + }, + 'mixlen3': { + }, + 'mixweight5': { + }, + 'mixlen6': { + }, + 'mixlen5': { + }, + 'mixlen8': { + }, + 'mixweight8': { + }, + 'mixlen7': { + }, + 'mixweight9': { + }, + 'mixlen9': { + }, + 'mixweight2': { + }, + 'max': { + }, + 'mixweight3': { + }, + 'mixweight1': { + }, + 'mixlen10': { + }, + 'mixweight10': { + }, + 'unit': { + } }, - 'pool_prefix_length': { + 'advancedIPv4': { + 'lengthVal': { + }, + 'optionHeaderField': { + }, + 'optionHeaderData': { + }, + 'lengthField': { + }, + 'checksumVal': { + }, + 'tos': { + }, + 'checksumField': { + }, + 'ttl': { + } }, - 'offer_lifetime': { + 'srcPortMask': { }, - 'max_lease_time': { + 'advancedIPv6': { + 'flowLabel': { + }, + 'lengthVal': { + }, + 'extensionHeaderField': { + }, + 'lengthField': { + }, + 'nextHeader': { + }, + 'trafficClass': { + }, + 'extensionHeaderData': { + }, + 'hopLimit': { + } + } + }, + '@type:layer4': { + 'tcp': { + 'disable_ack_piggyback': { + }, + 'delay_acks': { + }, + 'mss': { + }, + 'raw_flags': { + }, + 'psh_every_segment': { + }, + 'ecn': { + }, + 'tcp_window_scale': { + }, + 'initial_receive_window': { + }, + 'reset_at_end': { + }, + 'dynamic_receive_window_size': { + }, + 'tcp_connect_delay_ms': { + }, + 'aging_time_data_type': { + }, + 'tcp_4_way_close': { + }, + 'shutdown_data': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'aging_time': { + }, + 'add_timestamps': { + }, + 'retries': { + }, + 'handshake_data': { + }, + 'ack_every_n': { + }, + 'syn_data_padding': { + }, + 'retry_quantum_ms': { + }, + 'delay_acks_ms': { + } }, - 'gateway_ip_address': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { + } }, - 'default_container': { + 'sessions': { + 'openFast': { + }, + 'closeFast': { + }, + 'max': { + }, + 'allocationOverride': { + }, + 'targetPerSecond': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'maxPerSecond': { + }, + 'engine': { + }, + 'statDetail': { + }, + 'emphasis': { + }, + 'maxActive': { + } }, - 'pool_base_address': { + 'loadprofile': { + 'name': { + }, + 'label': { + } }, - 'default_lease_time': { + 'ip': { + 'tos': { + }, + 'ttl': { + } }, - 'pool_dns_address1': { + 'ip6': { + 'flowlabel': { + }, + 'traffic_class': { + }, + 'hop_limit': { + } }, - 'id': { + 'srcPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'prefix_length': { + 'rampUpProfile': { + 'min': { + }, + 'max': { + }, + 'increment': { + }, + 'interval': { + }, + 'type': { + } }, - 'pool_dns_address2': { - } - }], - 'ip6_external_hosts': [{ - 'proxy': { + 'delayStart': { }, - 'count': { + 'payload': { + 'add_timestamp': { + }, + 'data': { + }, + 'http_type': { + }, + 'transport': { + }, + 'type': { + } }, - 'id': { + 'rampDist': { + 'upBehavior': { + }, + 'down': { + }, + 'steadyBehavior': { + }, + 'downBehavior': { + }, + 'up': { + }, + 'synRetryMode': { + }, + 'steady': { + } }, - 'ip_address': { + 'packetsPerSession': { }, - 'behind_snapt': { + 'payloadSizeDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'tags': { + 'dstPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } } - }], - 'dhcpv6c_tout_and_retr_cfg': [{ - 'dhcp6c_inforeq_attempts': { - }, - 'dhcp6c_initial_rebind_tout': { - }, - 'dhcp6c_sol_attempts': { - }, - 'dhcp6c_max_rebind_tout': { + }, + '@type:playback': { + 'tcp': { + 'disable_ack_piggyback': { + }, + 'delay_acks': { + }, + 'mss': { + }, + 'raw_flags': { + }, + 'psh_every_segment': { + }, + 'ecn': { + }, + 'tcp_window_scale': { + }, + 'initial_receive_window': { + }, + 'reset_at_end': { + }, + 'dynamic_receive_window_size': { + }, + 'tcp_connect_delay_ms': { + }, + 'aging_time_data_type': { + }, + 'tcp_4_way_close': { + }, + 'shutdown_data': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'aging_time': { + }, + 'add_timestamps': { + }, + 'retries': { + }, + 'handshake_data': { + }, + 'ack_every_n': { + }, + 'syn_data_padding': { + }, + 'retry_quantum_ms': { + }, + 'delay_acks_ms': { + } }, - 'dhcp6c_release_attempts': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { + } }, - 'dhcp6c_initial_release_tout': { + 'sessions': { + 'openFast': { + }, + 'closeFast': { + }, + 'max': { + }, + 'allocationOverride': { + }, + 'targetPerSecond': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'maxPerSecond': { + }, + 'engine': { + }, + 'statDetail': { + }, + 'emphasis': { + }, + 'maxActive': { + } }, - 'dhcp6c_req_attempts': { + 'loadprofile': { + 'name': { + }, + 'label': { + } }, - 'dhcp6c_max_req_tout': { + 'ip': { + 'tos': { + }, + 'ttl': { + } }, - 'dhcp6c_max_renew_tout': { + 'modification': { + 'startpacket': { + }, + 'originalport': { + }, + 'newport': { + }, + 'replay': { + }, + 'bpfstring': { + }, + 'single': { + }, + 'loopcount': { + }, + 'endpacket': { + }, + 'independentflows': { + }, + 'serveripinjection': { + } }, - 'dhcp6c_max_sol_tout': { + 'ip6': { + 'flowlabel': { + }, + 'traffic_class': { + }, + 'hop_limit': { + } }, - 'dhcp6c_initial_req_tout': { + 'srcPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'dhcp6c_max_inforeq_tout': { + 'rampUpProfile': { + 'min': { + }, + 'max': { + }, + 'increment': { + }, + 'interval': { + }, + 'type': { + } }, - 'dhcp6c_initial_sol_tout': { + 'delayStart': { }, - 'dhcp6c_initial_renew_tout': { + 'file': { }, - 'dhcp6c_initial_inforeq_tout': { + 'rampDist': { + 'upBehavior': { + }, + 'down': { + }, + 'steadyBehavior': { + }, + 'downBehavior': { + }, + 'up': { + }, + 'synRetryMode': { + }, + 'steady': { + } }, - 'id': { + 'behavior': { } - }], - 'sgw_pgw6': [{ - 'max_sessions': { - }, - 'lease_address': { + }, + '@type:layer2': { + 'bidirectional': { }, - 'dns': { + 'maxStreams': { }, - 'plmn': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'rate': { + }, + 'increment': { + }, + 'type': { + }, + 'ramptype': { + } }, - 'ip_address': { + 'advanced': { + 'ethTypeField': { + }, + 'ethTypeVal': { + } }, - 'sgw_advertised_sgw': { + 'slowStart': { }, - 'sgw_advertised_pgw': { + 'slowStartFps': { }, - 'lease_address_v6': { + 'duration': { + 'disable_nd_probes': { + }, + 'durationTime': { + }, + 'durationFrames': { + } }, - 'gateway_ip_address': { + 'delayStart': { }, - 'default_container': { + 'payloadAdvanced': { + 'udfMode': { + }, + 'udfLength': { + }, + 'udfDataWidth': { + }, + 'udfOffset': { + } }, - 'id': { + 'sizeDist': { + 'increment': { + }, + 'type': { + }, + 'min': { + }, + 'rate': { + }, + 'mixlen2': { + }, + 'mixweight6': { + }, + 'mixlen1': { + }, + 'mixweight7': { + }, + 'mixlen4': { + }, + 'mixweight4': { + }, + 'mixlen3': { + }, + 'mixweight5': { + }, + 'mixlen6': { + }, + 'mixlen5': { + }, + 'mixlen8': { + }, + 'mixweight8': { + }, + 'mixlen7': { + }, + 'mixweight9': { + }, + 'mixlen9': { + }, + 'mixweight2': { + }, + 'max': { + }, + 'mixweight3': { + }, + 'mixweight1': { + }, + 'mixlen10': { + }, + 'mixweight10': { + }, + 'unit': { + } }, - 'prefix_length': { - } - }], - 'mpls_settings': [{ - 'mpls_tags': [{ - 'mpls_ttl': { + 'payload': { + 'data': { }, - 'mpls_label': { + 'type': { }, - 'mpls_exp': { + 'dataWidth': { } - }], - 'id': { } - }], - 'sixrd_ce': [{ - 'sixrd_prefix': { + }, + '@type:stackscrambler': { + 'tcp': { + 'disable_ack_piggyback': { + }, + 'delay_acks': { + }, + 'mss': { + }, + 'raw_flags': { + }, + 'psh_every_segment': { + }, + 'ecn': { + }, + 'tcp_window_scale': { + }, + 'initial_receive_window': { + }, + 'reset_at_end': { + }, + 'dynamic_receive_window_size': { + }, + 'tcp_connect_delay_ms': { + }, + 'aging_time_data_type': { + }, + 'tcp_4_way_close': { + }, + 'shutdown_data': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'aging_time': { + }, + 'add_timestamps': { + }, + 'retries': { + }, + 'handshake_data': { + }, + 'ack_every_n': { + }, + 'syn_data_padding': { + }, + 'retry_quantum_ms': { + }, + 'delay_acks_ms': { + } }, - 'count': { + 'scrambleOptions': { + 'maxCorruptions': { + }, + 'badIPFlags': { + }, + 'badIPFragOffset': { + }, + 'badIPLength': { + }, + 'badUrgentPointer': { + }, + 'badIPFlowLabel': { + }, + 'badEthType': { + }, + 'badTCPOptions': { + }, + 'badGTPNext': { + }, + 'handshakeTCP': { + }, + 'badIPChecksum': { + }, + 'badSCTPLength': { + }, + 'badTCPFlags': { + }, + 'badICMPType': { + }, + 'badIPTTL': { + }, + 'badIPProtocol': { + }, + 'badSCTPFlags': { + }, + 'badGTPFlags': { + }, + 'badIPVersion': { + }, + 'badL4HeaderLength': { + }, + 'badL4Checksum': { + }, + 'badIPOptions': { + }, + 'badSCTPType': { + }, + 'badSCTPChecksum': { + }, + 'badGTPNpdu': { + }, + 'badICMPCode': { + }, + 'badSCTPVerificationTag': { + }, + 'badIPTOS': { + }, + 'badIPTotalLength': { + }, + 'badGTPLen': { + }, + 'badGTPType': { + }, + 'badGTPSeqno': { + } }, - 'dns': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { + } }, - 'sixrd_prefix_length': { + 'sessions': { + 'openFast': { + }, + 'closeFast': { + }, + 'max': { + }, + 'allocationOverride': { + }, + 'targetPerSecond': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'maxPerSecond': { + }, + 'engine': { + }, + 'statDetail': { + }, + 'emphasis': { + }, + 'maxActive': { + } + }, + 'loadprofile': { + 'name': { + }, + 'label': { + } }, - 'ip_address': { + 'ip': { + 'tos': { + }, + 'ttl': { + } }, - 'tags': { + 'ip6': { + 'flowlabel': { + }, + 'traffic_class': { + }, + 'hop_limit': { + } }, - 'br_ip_address': { + 'prng': { + 'seed': { + }, + 'offset': { + } }, - 'gateway_ip_address': { + 'srcPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'netmask': { + 'rampUpProfile': { + 'min': { + }, + 'max': { + }, + 'increment': { + }, + 'interval': { + }, + 'type': { + } }, - 'default_container': { + 'delayStart': { }, - 'hosts_per_ce': { + 'payload': { + 'data': { + }, + 'transport': { + }, + 'type': { + } }, - 'ip4_mask_length': { + 'rampDist': { + 'upBehavior': { + }, + 'down': { + }, + 'steadyBehavior': { + }, + 'downBehavior': { + }, + 'up': { + }, + 'synRetryMode': { + }, + 'steady': { + } }, - 'id': { + 'payloadSizeDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'enable_stats': { + 'dstPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } } - }], - 'ip_dhcp_hosts': [{ - 'allocation_rate': { - }, - 'count': { - }, - 'tags': { + }, + '@type:clientsim': { + 'app': { + 'replace_streams': { + }, + 'streamsPerSuperflow': { + }, + 'removedns': { + }, + 'fidelity': { + } }, - 'proxy': { + 'tcp': { + 'disable_ack_piggyback': { + }, + 'delay_acks': { + }, + 'mss': { + }, + 'raw_flags': { + }, + 'psh_every_segment': { + }, + 'ecn': { + }, + 'tcp_window_scale': { + }, + 'initial_receive_window': { + }, + 'reset_at_end': { + }, + 'dynamic_receive_window_size': { + }, + 'tcp_connect_delay_ms': { + }, + 'aging_time_data_type': { + }, + 'tcp_4_way_close': { + }, + 'shutdown_data': { + }, + 'tcp_icw': { + }, + 'tcp_keepalive_timer': { + }, + 'aging_time': { + }, + 'add_timestamps': { + }, + 'retries': { + }, + 'handshake_data': { + }, + 'ack_every_n': { + }, + 'syn_data_padding': { + }, + 'retry_quantum_ms': { + }, + 'delay_acks_ms': { + } }, - 'ldap': { + 'rateDist': { + 'unit': { + }, + 'min': { + }, + 'max': { + }, + 'unlimited': { + }, + 'scope': { + }, + 'type': { + } }, - 'default_container': { + 'sessions': { + 'openFast': { + }, + 'closeFast': { + }, + 'max': { + }, + 'allocationOverride': { + }, + 'targetPerSecond': { + }, + 'target': { + }, + 'targetMatches': { + }, + 'maxPerSecond': { + }, + 'engine': { + }, + 'statDetail': { + }, + 'emphasis': { + }, + 'maxActive': { + } }, - 'accept_local_offers_only': { + 'loadprofile': { + 'name': { + }, + 'label': { + } }, - 'id': { + 'ip': { + 'tos': { + }, + 'ttl': { + } }, - 'behind_snapt': { + 'resources': { + 'expand': { + } }, - 'dns_proxy': { + 'ssl': { + 'ssl_client_keylog': { + }, + 'upgrade': { + }, + 'sslReuseType': { + }, + 'server_record_len': { + }, + 'client_record_len': { + }, + 'ssl_keylog_max_entries': { + } }, - 'enable_stats': { - } - }], - 'enodeb_mme': [{ - 'dns': { + 'ip6': { + 'flowlabel': { + }, + 'traffic_class': { + }, + 'hop_limit': { + } }, - 'plmn': { + 'srcPortDist': { + 'min': { + }, + 'max': { + }, + 'type': { + } }, - 'ip_allocation_mode': { + 'rampUpProfile': { + 'min': { + }, + 'max': { + }, + 'increment': { + }, + 'interval': { + }, + 'type': { + } }, - 'enodebs': [{ - 'gateway_ip_address': { + 'delayStart': { + }, + 'rampDist': { + 'upBehavior': { }, - 'netmask': { + 'down': { }, - 'default_container': { + 'steadyBehavior': { }, - 'enodebCount': { + 'downBehavior': { }, - 'ip_address': { + 'up': { + }, + 'synRetryMode': { + }, + 'steady': { } - }], - 'mme_ip_address': { - }, - 'pgw_ip_address': { - }, - 'ue_address': { - }, - 'gateway_ip_address': { - }, - 'netmask': { }, - 'default_container': { + 'superflow': { + } + }, + 'createdOn': { + }, + 'tags': [{ + 'id': { }, - 'sgw_ip_address': { + 'type': { }, - 'id': { + 'domainId': { + 'name': { + }, + 'iface': { + }, + 'external': { + } } }], - 'enodeb': [{ - 'dns': { - }, - 'plmn': { - }, - 'psn': { - }, - 'psn_netmask': { - }, - 'sctp_over_udp': { - }, - 'enodebs': [{ - 'mme_ip_address': { + 'revision': { + }, + 'lockedBy': { + }, + 'createdBy': { + }, + 'reportResults': { + }, + 'timeline': { + 'timesegment': [{ + 'label': { }, - 'enodebCount': { + 'size': { }, - 'ip_address': { + 'type': { } - }], - 'gateway_ip_address': { - }, - 'netmask': { - }, - 'default_container': { + }] + }, + 'id': { + }, + 'clazz': { + }, + 'operations': { + 'getComponentPresetNames': [{ + }] + } + }], + 'lockedBy': { + }, + 'createdBy': { + }, + 'name': { + }, + 'clazz': { + }, + 'operations': { + 'clone': [{ + }], + 'search': [{ + }], + 'load': [{ + }], + 'new': [{ + }], + 'exportModel': [{ + }], + 'run': [{ + }], + 'realTimeStats': [{ + }], + 'importModel': [{ + }], + 'add': [{ + }], + 'saveAs': [{ + }], + 'save': [{ + }], + 'delete': [{ + }], + 'remove': [{ + }], + 'stopRun': [{ + }] + } + }, + 'results': [{ + 'name': { + }, + 'content': { + }, + 'datasetvals': { + }, + 'operations': { + 'getGroups': [{ + 'lockedBy': { }, - 'id': { + 'createdBy': { }, - 'sctp_sport': { - } - }], - 'ip6_router': [{ - 'hosts_ip_alloc_container': { + 'author': { }, - 'gateway_ip_address': { + 'description': { }, - 'default_container': { + 'label': { }, - 'id': { + 'createdOn': { }, - 'ip_address': { + 'clazz': { }, - 'prefix_length': { + 'revision': { } }], - 'ip_external_hosts': [{ - 'proxy': { - }, - 'count': { + 'getHistoricalSeries': [{ + }], + 'getHistoricalResultSize': [{ + }] + } + }], + 'superflow': { + 'actions': [{ + 'actionInfo': [{ + 'name': { }, - 'id': { + 'description': { }, - 'ip_address': { + 'realtimeGroup': { }, - 'behind_snapt': { + 'label': { }, - 'tags': { + 'units': { } }], - 'interface': [{ - 'ignore_pause_frames': { - }, - 'duplicate_mac_address': { - }, - 'description': { - }, - 'packet_filter': { - 'not_dest_port': { - }, - 'not_src_ip': { - }, - 'filter': { - }, - 'src_ip': { - }, - 'src_port': { - }, - 'vlan': { - }, - 'not_vlan': { + 'flowlabel': { + }, + 'gotoBlock': { + }, + 'exflows': { + }, + 'matchBlock': { + }, + 'id': { + }, + 'source': { + }, + 'label': { + }, + 'type': { + }, + 'params': { + }, + 'flowid': { + }, + 'operations': { + 'getActionInfo': [{ + 'name': { }, - 'dest_ip': { + 'description': { }, - 'not_dest_ip': { + 'realtimeGroup': { }, - 'dest_port': { + 'label': { }, - 'not_src_port': { + 'units': { } - }, - 'impairments': { - 'drop': { + }], + 'getActionChoices': [{ + }] + } + }], + 'settings': [{ + 'name': { + }, + 'description': { + }, + 'realtimeGroup': { + }, + 'label': { + }, + 'units': { + } + }], + 'percentFlows': { + }, + 'seed': { + }, + 'hosts': [{ + 'iface': { + }, + 'hostname': { + }, + 'ip': { + 'type': { + } + }, + 'id': { + } + }], + 'author': { + }, + 'estimate_bytes': { + }, + 'estimate_flows': { + }, + 'weight': { + }, + 'description': { + }, + 'label': { + }, + 'params': { + }, + 'constraints': { + }, + 'createdOn': { + }, + 'revision': { + }, + 'lockedBy': { + }, + 'flows': [{ + 'singleNP': { + }, + 'name': { + }, + 'from': { + }, + 'label': { + }, + 'id': { + }, + 'to': { + }, + 'params': { + }, + 'flowcount': { + }, + 'operations': { + 'getCannedFlows': [{ + }], + 'getFlowChoices': [{ + 'lockedBy': { }, - 'corrupt_lt64': { + 'createdBy': { }, - 'rate': { + 'author': { }, - 'corrupt_lt256': { + 'description': { }, - 'corrupt_rand': { + 'label': { }, - 'corrupt_chksum': { + 'createdOn': { }, - 'corrupt_gt256': { + 'clazz': { }, - 'frack': { + 'revision': { } - }, - 'mtu': { - }, - 'vlan_key': { - }, - 'number': { - }, - 'use_vnic_mac_address': { - }, - 'mac_address': { - }, - 'id': { - } + }] + } + }], + 'generated': { + }, + 'createdBy': { + }, + 'percentBandwidth': { + }, + 'name': { + }, + 'clazz': { + }, + 'operations': { + 'importResource': [{ }], - 'ds_lite_b4': [{ - 'aftr_addr': { - }, - 'count': { - }, - 'ip_address': { - }, - 'host_ip_base_addr': { - }, - 'ipv6_addr_alloc_mode': { - }, - 'gateway_ip_address': { - }, - 'default_container': { - }, - 'aftr_count': { - }, - 'hosts_ip_increment': { - }, - 'id': { - }, - 'prefix_length': { - }, - 'host_ip_addr_alloc_mode': { - } + 'saveAs': [{ }], - 'ip_dns_proxy': [{ - 'dns_proxy_ip_count': { - }, - 'dns_proxy_src_ip_base': { - }, - 'id': { - }, - 'dns_proxy_ip_base': { - }, - 'dns_proxy_src_ip_count': { - } + 'save': [{ }], - 'ip6_dns_proxy': [{ - 'dns_proxy_ip_count': { - }, - 'dns_proxy_src_ip_base': { - }, - 'id': { - }, - 'dns_proxy_ip_base': { - }, - 'dns_proxy_src_ip_count': { - } + 'addAction': [{ }], - 'global_config': [{ - 'gtp': { - }, - 'id': { - } + 'addHost': [{ }], - 'vlan': [{ - 'tpid': { - }, - 'duplicate_mac_address': { - }, - 'description': { - }, - 'mtu': { - }, - 'outer_vlan': { - }, - 'inner_vlan': { + 'addFlow': [{ + }], + 'removeFlow': [{ + }], + 'removeAction': [{ + }], + 'load': [{ + }], + 'new': [{ + }], + 'search': [{ + }], + 'delete': [{ + }] + } + }, + 'network': { + 'lockedBy': { + }, + 'createdBy': { + }, + 'author': { + }, + 'name': { + }, + 'interfaceCount': { + }, + 'description': { + }, + 'label': { + }, + 'networkModel': { + 'ip_router': [{ + 'gateway_ip_address': { }, - 'mac_address': { + 'netmask': { }, 'default_container': { }, 'id': { + }, + 'ip_address': { } }], - 'mme_sgw_pgw': [{ - 'ue_info': { - }, - 'max_sessions': { - }, - 'lease_address': { - }, - 'dns': { - }, - 'plmn': { + 'ue_info': [{ + 'imsi_base': { }, - 'ip_address': { + 'secret_key_step': { }, - 'sgw_advertised_sgw': { + 'count': { }, - 'sgw_advertised_pgw': { + 'operator_variant': { }, - 'lease_address_v6': { + 'secret_key': { }, - 'gateway_ip_address': { + 'imei_base': { }, - 'netmask': { + 'msisdn_base': { }, - 'default_container': { + 'maxmbps_per_ue': { }, + 'mobility_session_infos': [{ + 'id': { + }, + 'value': { + } + }], 'id': { } }], - 'path_advanced': [{ - 'destination_port_count': { - }, - 'destination_port_base': { - }, - 'source_port_base': { - }, - 'tags': { - }, - 'enable_external_file': { - }, - 'source_container': { - }, - 'source_port_algorithm': { - }, - 'tuple_limit': { + 'ip_ldap_server': [{ + 'auth_timeout': { }, - 'file': { + 'ldap_username_start_tag': { }, - 'destination_port_algorithm': { + 'ldap_user_min': { }, - 'destination_container': { + 'ldap_user_count': { }, - 'source_port_count': { + 'authentication_rate': { }, - 'xor_bits': { + 'ldap_password_start_tag': { }, - 'stream_group': { + 'ldap_user_max': { }, 'id': { - } - }], - 'path_basic': [{ - 'source_container': { }, - 'destination_container': { + 'ldap_server_address': { }, - 'id': { + 'dn_fixed_val': { } }], - 'pgw': [{ + 'mme_sgw_pgw6': [{ + 'ue_info': { + }, 'max_sessions': { }, 'lease_address': { @@ -3728,68 +4941,78 @@ class DataModelMeta(type): }, 'ip_address': { }, + 'sgw_advertised_sgw': { + }, + 'sgw_advertised_pgw': { + }, 'lease_address_v6': { }, 'gateway_ip_address': { }, - 'netmask': { - }, 'default_container': { }, 'id': { + }, + 'prefix_length': { } }], - 'pgw6': [{ - 'max_sessions': { + 'mobility_session_info': [{ + 'password': { + }, + 'bearers': [{ + 'qci_label': { + } + }], + 'id': { + }, + 'access_point_name': { + }, + 'username': { }, + 'initiated_dedicated_bearers': { + } + }], + 'ggsn6': [{ 'lease_address': { }, + 'count': { + }, 'dns': { }, - 'plmn': { + 'ggsn_advertised_control_ip_address': { }, 'ip_address': { }, - 'lease_address_v6': { - }, - 'gateway_ip_address': { - }, - 'default_container': { + 'ggsn_advertised_data_ip_address': { }, - 'id': { + 'lease_address_v6': { }, - 'prefix_length': { - } - }], - 'sgsn6': [{ 'gateway_ip_address': { }, 'default_container': { }, - 'ggsn_ip_address': { - }, 'id': { }, - 'ip_address': { - }, 'prefix_length': { } }], - 'ip6_static_hosts': [{ + 'ip_static_hosts': [{ 'mpls_list': [{ 'id': { }, 'value': { } }], - 'ip_alloc_container': { - }, 'ip_selection_type': { }, 'count': { }, 'dns': { }, + 'psn': { + }, + 'psn_netmask': { + }, 'ip_address': { }, 'tags': { @@ -3800,13 +5023,13 @@ class DataModelMeta(type): }, 'gateway_ip_address': { }, - 'default_container': { + 'netmask': { }, - 'id': { + 'ldap': { }, - 'host_ipv6_addr_alloc_mode': { + 'default_container': { }, - 'prefix_length': { + 'id': { }, 'dns_proxy': { }, @@ -3815,18 +5038,20 @@ class DataModelMeta(type): 'enable_stats': { } }], - 'enodeb_mme_sgw': [{ - 'dns': { + 'ggsn': [{ + 'lease_address': { }, - 'plmn': { + 'count': { }, - 'ip_allocation_mode': { + 'dns': { }, - 'mme_ip_address': { + 'ggsn_advertised_control_ip_address': { }, - 'pgw_ip_address': { + 'ip_address': { }, - 'ue_address': { + 'ggsn_advertised_data_ip_address': { + }, + 'lease_address_v6': { }, 'gateway_ip_address': { }, @@ -3837,2237 +5062,1213 @@ class DataModelMeta(type): 'id': { } }], - 'enodeb6': [{ + 'ue': [{ + 'allocation_rate': { + }, + 'mobility_interval_ms': { + }, + 'ue_info': { + }, 'dns': { }, - 'plmn': { + 'mobility_action': { }, - 'sctp_over_udp': { + 'tags': { }, - 'enodebs': [{ - 'mme_ip_address': { - }, - 'enodebCount': { - }, - 'ip_address': { - } - }], - 'gateway_ip_address': { + 'proxy': { }, 'default_container': { }, + 'mobility_with_traffic': { + }, 'id': { }, - 'prefix_length': { + 'behind_snapt': { }, - 'sctp_sport': { + 'request_ipv6': { + }, + 'enable_stats': { } }], - 'slaac_cfg': [{ - 'use_rand_addr': { + 'enodeb_mme_sgw6': [{ + 'dns': { }, - 'enable_dad': { + 'plmn': { }, - 'id': { + 'ip_allocation_mode': { }, - 'stateless_dhcpv6c_cfg': { + 'mme_ip_address': { }, - 'fallback_ip_address': { - } - }], - 'ip_dns_config': [{ - 'dns_domain': { + 'pgw_ip_address': { + }, + 'ue_address': { + }, + 'gateway_ip_address': { + }, + 'default_container': { }, 'id': { }, - 'dns_server_address': { + 'prefix_length': { } }], - 'ip_dhcp_server': [{ - 'lease_address': { - }, + 'ds_lite_aftr': [{ 'count': { }, - 'dns': { - }, 'ip_address': { }, + 'ipv6_addr_alloc_mode': { + }, + 'gateway_ip_address': { + }, + 'default_container': { + }, + 'b4_count': { + }, + 'b4_ip_address': { + }, + 'id': { + }, + 'prefix_length': { + } + }], + 'ipsec_router': [{ 'gateway_ip_address': { }, 'netmask': { }, - 'lease_time': { + 'ipsec': { }, 'default_container': { }, 'id': { }, - 'accept_local_requests_only': { + 'ip_address': { + }, + 'ike_peer_ip_address': { } }], - 'ip6_dns_config': [{ - 'dns_domain': { + 'dhcpv6c_req_opts_cfg': [{ + 'dhcpv6v_req_preference': { + }, + 'dhcpv6v_req_dns_list': { + }, + 'dhcpv6v_req_dns_resolvers': { + }, + 'dhcpv6v_req_server_id': { }, 'id': { + } + }], + 'sgsn': [{ + 'gateway_ip_address': { }, - 'dns_server_address': { + 'netmask': { + }, + 'default_container': { + }, + 'ggsn_ip_address': { + }, + 'id': { + }, + 'ip_address': { } }], - 'ipsec_config': [{ - 'ike_dh': { + 'enodeb_mme6': [{ + 'dns': { }, - 'ipsec_lifetime': { + 'plmn': { }, - 'ike_pfs': { + 'ip_allocation_mode': { }, - 'ike_mode': { + 'enodebs': [{ + 'gateway_ip_address': { + }, + 'default_container': { + }, + 'enodebCount': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'mme_ip_address': { }, - 'ike_1to1': { + 'pgw_ip_address': { }, - 'nat_traversal': { + 'ue_address': { }, - 'xauth_username': { + 'gateway_ip_address': { }, - 'ike_encr_alg': { + 'default_container': { }, - 'psk': { + 'sgw_ip_address': { }, - 'dpd_enabled': { + 'id': { }, - 'dpd_timeout': { + 'prefix_length': { + } + }], + 'plmn': [{ + 'mnc': { }, - 'init_rate': { + 'description': { }, - 'setup_timeout': { + 'id': { }, - 'esp_encr_alg': { + 'mcc': { + } + }], + 'sgw_pgw': [{ + 'max_sessions': { }, - 'ike_lifetime': { + 'lease_address': { + }, + 'dns': { + }, + 'plmn': { }, - 'ike_version': { + 'ip_address': { }, - 'id': { + 'sgw_advertised_sgw': { }, - 'left_id': { + 'sgw_advertised_pgw': { }, - 'ike_prf_alg': { + 'lease_address_v6': { }, - 'esp_auth_alg': { + 'gateway_ip_address': { }, - 'dpd_delay': { + 'netmask': { }, - 'xauth_password': { + 'default_container': { }, - 'initial_contact': { + 'id': { + } + }], + 'ip6_dhcp_server': [{ + 'ia_type': { }, - 'debug_log': { + 'pool_size': { }, - 'wildcard_tsr': { + 'ip_address': { }, - 'rekey_margin': { + 'pool_prefix_length': { }, - 'ike_auth_alg': { + 'offer_lifetime': { }, - 'right_id': { + 'max_lease_time': { }, - 'max_outstanding': { + 'gateway_ip_address': { }, - 'retrans_interval': { + 'default_container': { }, - 'enable_xauth': { - } - }], - 'dhcpv6c_cfg': [{ - 'dhcp6c_max_outstanding': { + 'pool_base_address': { }, - 'dhcp6c_duid_type': { + 'default_lease_time': { }, - 'dhcp6c_ia_type': { + 'pool_dns_address1': { }, - 'dhcp6c_req_opts_config': { + 'id': { }, - 'dhcp6c_tout_and_retr_config': { + 'prefix_length': { }, - 'dhcp6c_renew_timer': { + 'pool_dns_address2': { + } + }], + 'ip6_external_hosts': [{ + 'proxy': { }, - 'dhcp6c_ia_t2': { + 'count': { }, 'id': { }, - 'dhcp6c_ia_t1': { + 'ip_address': { }, - 'dhcp6c_initial_srate': { + 'behind_snapt': { + }, + 'tags': { } - }] - }, - 'createdOn': { - }, - 'clazz': { - }, - 'revision': { - }, - 'operations': { - 'saveAs': [{ - }], - 'save': [{ - }], - 'load': [{ - }], - 'new': [{ - }], - 'importNetwork': [{ - }], - 'list': [{ - }], - 'delete': [{ }], - 'search': [{ - }] - } - }, - 'testmodel': { - 'lastrunby': { - }, - 'summaryInfo': { - 'totalSubnets': { - }, - 'totalMacAddresses': { - }, - 'totalUniqueStrikes': { - }, - 'totalUniqueSuperflows': { - }, - 'requiredMTU': { - } - }, - 'author': { - }, - 'lastrun': { - }, - 'description': { - }, - 'label': { - }, - 'sharedComponentSettings': { - 'maximumConcurrentFlows': { - 'current': { + 'dhcpv6c_tout_and_retr_cfg': [{ + 'dhcp6c_inforeq_attempts': { }, - 'original': { + 'dhcp6c_initial_rebind_tout': { }, - 'content': { - } - }, - 'totalAttacks': { - 'current': { + 'dhcp6c_sol_attempts': { }, - 'original': { + 'dhcp6c_max_rebind_tout': { }, - 'content': { - } - }, - 'totalBandwidth': { - 'current': { + 'dhcp6c_release_attempts': { }, - 'original': { + 'dhcp6c_initial_release_tout': { }, - 'content': { - } - }, - 'maxFlowCreationRate': { - 'current': { + 'dhcp6c_req_attempts': { }, - 'original': { + 'dhcp6c_max_req_tout': { }, - 'content': { - } - }, - 'totalAddresses': { - 'current': { + 'dhcp6c_max_renew_tout': { }, - 'original': { + 'dhcp6c_max_sol_tout': { }, - 'content': { - } - }, - 'samplePeriod': { - 'current': { + 'dhcp6c_initial_req_tout': { }, - 'original': { + 'dhcp6c_max_inforeq_tout': { }, - 'content': { - } - } - }, - 'createdOn': { - }, - 'network': { - }, - 'revision': { - }, - 'duration': { - }, - 'result': { - }, - 'component': [{ - 'author': { - }, - 'originalPreset': { - }, - 'active': { - }, - 'originalPresetLabel': { - }, - 'description': { - }, - 'label': { - }, - 'type': { - }, - '@type:liveappsim': { - 'app': { - 'removeUnknownTcpUdp': { - }, - 'replace_streams': { - }, - 'removeUnknownSSL': { - }, - 'streamsPerSuperflow': { - }, - 'removedns': { - }, - 'fidelity': { - } + 'dhcp6c_initial_sol_tout': { }, - 'tcp': { - 'disable_ack_piggyback': { - }, - 'delay_acks': { - }, - 'mss': { - }, - 'raw_flags': { - }, - 'psh_every_segment': { - }, - 'ecn': { - }, - 'tcp_window_scale': { - }, - 'initial_receive_window': { - }, - 'reset_at_end': { - }, - 'dynamic_receive_window_size': { - }, - 'tcp_connect_delay_ms': { - }, - 'aging_time_data_type': { - }, - 'tcp_4_way_close': { - }, - 'shutdown_data': { - }, - 'tcp_icw': { - }, - 'tcp_keepalive_timer': { - }, - 'aging_time': { - }, - 'add_timestamps': { - }, - 'retries': { - }, - 'handshake_data': { - }, - 'ack_every_n': { - }, - 'syn_data_padding': { - }, - 'retry_quantum_ms': { - }, - 'delay_acks_ms': { - } + 'dhcp6c_initial_renew_tout': { + }, + 'dhcp6c_initial_inforeq_tout': { + }, + 'id': { + } + }], + 'sgw_pgw6': [{ + 'max_sessions': { }, - 'inflateDeflate': { + 'lease_address': { }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'unlimited': { - }, - 'scope': { - }, - 'type': { - } + 'dns': { }, - 'sessions': { - 'openFast': { - }, - 'closeFast': { - }, - 'max': { - }, - 'allocationOverride': { - }, - 'targetPerSecond': { - }, - 'target': { - }, - 'targetMatches': { - }, - 'maxPerSecond': { - }, - 'engine': { - }, - 'statDetail': { - }, - 'emphasis': { - }, - 'maxActive': { - } + 'plmn': { }, - 'loadprofile': { - 'name': { - }, - 'label': { - } + 'ip_address': { }, - 'ip': { - 'tos': { - }, - 'ttl': { - } + 'sgw_advertised_sgw': { }, - 'ip6': { - 'flowlabel': { - }, - 'traffic_class': { - }, - 'hop_limit': { - } + 'sgw_advertised_pgw': { }, - 'srcPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } + 'lease_address_v6': { }, - 'tputscalefactor': { + 'gateway_ip_address': { }, - 'rampUpProfile': { - 'min': { - }, - 'max': { - }, - 'increment': { + 'default_container': { + }, + 'id': { + }, + 'prefix_length': { + } + }], + 'mpls_settings': [{ + 'mpls_tags': [{ + 'mpls_ttl': { }, - 'interval': { + 'mpls_label': { }, - 'type': { + 'mpls_exp': { } + }], + 'id': { + } + }], + 'sixrd_ce': [{ + 'sixrd_prefix': { }, - 'concurrencyscalefactor': { + 'count': { }, - 'delayStart': { + 'dns': { }, - 'rampDist': { - 'upBehavior': { - }, - 'down': { - }, - 'steadyBehavior': { - }, - 'downBehavior': { - }, - 'up': { - }, - 'synRetryMode': { - }, - 'steady': { - } + 'sixrd_prefix_length': { }, - 'sfratescalefactor': { + 'ip_address': { }, - 'liveProfile': { - } - }, - '@type:layer3advanced': { - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'rate': { - }, - 'increment': { - }, - 'type': { - }, - 'ramptype': { - } + 'tags': { }, - 'bidirectional': { + 'br_ip_address': { }, - 'enableTCP': { + 'gateway_ip_address': { }, - 'slowStart': { + 'netmask': { }, - 'Templates': { - 'TemplateType': { - } + 'default_container': { }, - 'slowStartFps': { + 'hosts_per_ce': { }, - 'duration': { - 'disable_nd_probes': { - }, - 'durationTime': { - }, - 'durationFrames': { - } + 'ip4_mask_length': { }, - 'enablePerStreamStats': { + 'id': { }, - 'tuple_gen_seed': { + 'enable_stats': { + } + }], + 'ip_dhcp_hosts': [{ + 'allocation_rate': { }, - 'payload': { - 'data': { - }, - 'type': { - }, - 'dataWidth': { - } + 'count': { }, - 'advancedUDP': { - 'lengthVal': { - }, - 'lengthField': { - }, - 'checksumVal': { - }, - 'checksumField': { - } + 'tags': { }, - 'delayStart': { + 'proxy': { }, - 'payloadAdvanced': { - 'udfMode': { - }, - 'udfLength': { - }, - 'udfDataWidth': { - }, - 'udfOffset': { - } + 'ldap': { }, - 'sizeDist': { - 'increment': { - }, - 'type': { - }, - 'min': { - }, - 'rate': { - }, - 'mixlen2': { - }, - 'mixweight6': { - }, - 'mixlen1': { - }, - 'mixweight7': { - }, - 'mixlen4': { - }, - 'mixweight4': { - }, - 'mixlen3': { - }, - 'mixweight5': { - }, - 'mixlen6': { - }, - 'mixlen5': { - }, - 'mixlen8': { - }, - 'mixweight8': { - }, - 'mixlen7': { - }, - 'mixweight9': { - }, - 'mixlen9': { - }, - 'mixweight2': { - }, - 'max': { - }, - 'mixweight3': { - }, - 'mixweight1': { - }, - 'mixlen10': { - }, - 'mixweight10': { - }, - 'unit': { - } + 'default_container': { }, - 'advancedIPv4': { - 'lengthVal': { - }, - 'optionHeaderField': { - }, - 'optionHeaderData': { - }, - 'lengthField': { - }, - 'checksumVal': { - }, - 'tos': { - }, - 'checksumField': { - }, - 'ttl': { - } + 'accept_local_offers_only': { }, - 'advancedIPv6': { - 'flowLabel': { - }, - 'lengthVal': { - }, - 'extensionHeaderField': { - }, - 'lengthField': { - }, - 'nextHeader': { - }, - 'trafficClass': { - }, - 'extensionHeaderData': { - }, - 'hopLimit': { - } + 'id': { + }, + 'behind_snapt': { + }, + 'dns_proxy': { + }, + 'enable_stats': { } - }, - '@type:appsim': { - 'app': { - 'replace_streams': { - }, - 'streamsPerSuperflow': { - }, - 'removedns': { - }, - 'fidelity': { - } + }], + 'enodeb_mme': [{ + 'dns': { }, - 'tcp': { - 'disable_ack_piggyback': { - }, - 'delay_acks': { - }, - 'mss': { - }, - 'raw_flags': { - }, - 'psh_every_segment': { - }, - 'ecn': { - }, - 'tcp_window_scale': { - }, - 'initial_receive_window': { - }, - 'reset_at_end': { - }, - 'dynamic_receive_window_size': { - }, - 'tcp_connect_delay_ms': { - }, - 'aging_time_data_type': { - }, - 'tcp_4_way_close': { - }, - 'shutdown_data': { - }, - 'tcp_icw': { - }, - 'tcp_keepalive_timer': { - }, - 'aging_time': { - }, - 'add_timestamps': { - }, - 'retries': { - }, - 'handshake_data': { - }, - 'ack_every_n': { - }, - 'syn_data_padding': { - }, - 'retry_quantum_ms': { - }, - 'delay_acks_ms': { - } + 'plmn': { }, - 'rateDist': { - 'unit': { - }, - 'min': { + 'ip_allocation_mode': { + }, + 'enodebs': [{ + 'gateway_ip_address': { }, - 'max': { + 'netmask': { }, - 'unlimited': { + 'default_container': { }, - 'scope': { + 'enodebCount': { }, - 'type': { + 'ip_address': { } + }], + 'mme_ip_address': { }, - 'sessions': { - 'openFast': { - }, - 'closeFast': { - }, - 'max': { - }, - 'allocationOverride': { - }, - 'targetPerSecond': { - }, - 'target': { - }, - 'targetMatches': { - }, - 'maxPerSecond': { - }, - 'engine': { - }, - 'statDetail': { + 'pgw_ip_address': { + }, + 'ue_address': { + }, + 'gateway_ip_address': { + }, + 'netmask': { + }, + 'default_container': { + }, + 'sgw_ip_address': { + }, + 'id': { + } + }], + 'enodeb': [{ + 'dns': { + }, + 'plmn': { + }, + 'psn': { + }, + 'psn_netmask': { + }, + 'sctp_over_udp': { + }, + 'enodebs': [{ + 'mme_ip_address': { }, - 'emphasis': { + 'enodebCount': { }, - 'maxActive': { + 'ip_address': { } + }], + 'gateway_ip_address': { }, - 'loadprofile': { - 'name': { - }, - 'label': { - } + 'netmask': { }, - 'profile': { + 'default_container': { }, - 'ip': { - 'tos': { - }, - 'ttl': { - } + 'id': { }, - 'resources': { - 'expand': { - } + 'sctp_sport': { + } + }], + 'ip6_router': [{ + 'hosts_ip_alloc_container': { }, - 'experimental': { - 'tcpSegmentsBurst': { - }, - 'unify_l4_bufs': { - } + 'gateway_ip_address': { }, - 'ssl': { - 'ssl_client_keylog': { - }, - 'upgrade': { - }, - 'sslReuseType': { - }, - 'server_record_len': { + 'default_container': { + }, + 'id': { + }, + 'ip_address': { + }, + 'prefix_length': { + } + }], + 'ip_external_hosts': [{ + 'proxy': { + }, + 'count': { + }, + 'id': { + }, + 'ip_address': { + }, + 'behind_snapt': { + }, + 'tags': { + } + }], + 'interface': [{ + 'ignore_pause_frames': { + }, + 'duplicate_mac_address': { + }, + 'description': { + }, + 'packet_filter': { + 'not_dest_port': { }, - 'client_record_len': { + 'not_src_ip': { }, - 'ssl_keylog_max_entries': { - } - }, - 'ip6': { - 'flowlabel': { + 'filter': { }, - 'traffic_class': { + 'src_ip': { }, - 'hop_limit': { - } - }, - 'srcPortDist': { - 'min': { + 'src_port': { }, - 'max': { + 'vlan': { }, - 'type': { - } - }, - 'rampUpProfile': { - 'min': { + 'not_vlan': { }, - 'max': { + 'dest_ip': { }, - 'increment': { + 'not_dest_ip': { }, - 'interval': { + 'dest_port': { }, - 'type': { + 'not_src_port': { } }, - 'delayStart': { - }, - 'rampDist': { - 'upBehavior': { + 'impairments': { + 'drop': { }, - 'down': { + 'corrupt_lt64': { }, - 'steadyBehavior': { + 'rate': { }, - 'downBehavior': { + 'corrupt_lt256': { }, - 'up': { + 'corrupt_rand': { }, - 'synRetryMode': { + 'corrupt_chksum': { }, - 'steady': { + 'corrupt_gt256': { + }, + 'frack': { } + }, + 'mtu': { + }, + 'vlan_key': { + }, + 'number': { + }, + 'use_vnic_mac_address': { + }, + 'mac_address': { + }, + 'id': { } - }, - '@type:security_all': { - 'maxConcurrAttacks': { + }], + 'ds_lite_b4': [{ + 'aftr_addr': { }, - 'attackRetries': { + 'count': { }, - 'maxPacketsPerSecond': { + 'ip_address': { }, - 'attackPlan': { + 'host_ip_base_addr': { }, - 'randomSeed': { + 'ipv6_addr_alloc_mode': { }, - 'delayStart': { + 'gateway_ip_address': { }, - 'attackProfile': { + 'default_container': { }, - 'attackPlanIterations': { + 'aftr_count': { }, - 'attackPlanIterationDelay': { + 'hosts_ip_increment': { }, - 'maxAttacksPerSecond': { + 'id': { + }, + 'prefix_length': { + }, + 'host_ip_addr_alloc_mode': { } - }, - '@type:security_np': { - 'attackRetries': { + }], + 'ip_dns_proxy': [{ + 'dns_proxy_ip_count': { }, - 'sessions': { - 'max': { - }, - 'maxPerSecond': { - } + 'dns_proxy_src_ip_base': { }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'unlimited': { - }, - 'scope': { - }, - 'type': { - } + 'id': { }, - 'attackPlan': { + 'dns_proxy_ip_base': { }, - 'randomSeed': { + 'dns_proxy_src_ip_count': { + } + }], + 'ip6_dns_proxy': [{ + 'dns_proxy_ip_count': { }, - 'delayStart': { + 'dns_proxy_src_ip_base': { }, - 'attackProfile': { + 'id': { }, - 'attackPlanIterations': { + 'dns_proxy_ip_base': { }, - 'attackPlanIterationDelay': { + 'dns_proxy_src_ip_count': { } - }, - '@type:layer3': { - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'rate': { - }, - 'increment': { - }, - 'type': { + }], + 'vlan': [{ + 'tpid': { + }, + 'duplicate_mac_address': { + }, + 'description': { + }, + 'mtu': { + }, + 'outer_vlan': { + }, + 'inner_vlan': { + }, + 'mac_address': { + }, + 'default_container': { + }, + 'id': { + } + }], + 'mme_sgw_pgw': [{ + 'ue_info': { + }, + 'max_sessions': { + }, + 'lease_address': { + }, + 'dns': { + }, + 'plmn': { + }, + 'ip_address': { + }, + 'sgw_advertised_sgw': { + }, + 'sgw_advertised_pgw': { + }, + 'lease_address_v6': { + }, + 'gateway_ip_address': { + }, + 'netmask': { + }, + 'default_container': { + }, + 'id': { + } + }], + 'ip_mac_static_hosts': [{ + 'mpls_list': [{ + 'id': { }, - 'ramptype': { + 'value': { } + }], + 'ip_selection_type': { }, - 'bidirectional': { + 'count': { }, - 'randomizeIP': { + 'dns': { }, - 'enableTCP': { + 'psn': { + }, + 'psn_netmask': { + }, + 'ip_address': { + }, + 'tags': { + }, + 'proxy': { + }, + 'maxmbps_per_host': { + }, + 'gateway_ip_address': { + }, + 'netmask': { + }, + 'ldap': { + }, + 'mac_address': { + }, + 'default_container': { + }, + 'id': { + }, + 'dns_proxy': { + }, + 'behind_snapt': { + }, + 'enable_stats': { + } + }], + 'path_advanced': [{ + 'destination_port_count': { + }, + 'destination_port_base': { + }, + 'source_port_base': { + }, + 'tags': { + }, + 'enable_external_file': { + }, + 'source_container': { + }, + 'source_port_algorithm': { + }, + 'tuple_limit': { + }, + 'file': { + }, + 'destination_port_algorithm': { + }, + 'destination_container': { + }, + 'source_port_count': { + }, + 'xor_bits': { }, - 'slowStart': { + 'stream_group': { }, - 'Templates': { - 'TemplateType': { - } + 'id': { + } + }], + 'path_basic': [{ + 'source_container': { }, - 'srcPort': { + 'destination_container': { }, - 'slowStartFps': { + 'id': { + } + }], + 'geneve_tep': [{ + 'count': { }, - 'duration': { - 'disable_nd_probes': { - }, - 'durationTime': { - }, - 'durationFrames': { - } + 'ip_address': { }, - 'udpSrcPortMode': { + 'vni_base': { }, - 'dstPort': { + 'gateway_ip_address': { }, - 'payload': { - 'data': { - }, - 'type': { - }, - 'dataWidth': { - } + 'netmask': { }, - 'syncIP': { + 'default_container': { }, - 'addrGenMode': { + 'id': { }, - 'maxStreams': { + 'vni_count': { + } + }], + 'pgw': [{ + 'max_sessions': { }, - 'dstPortMask': { + 'lease_address': { }, - 'udpDstPortMode': { + 'dns': { }, - 'advancedUDP': { - 'lengthVal': { - }, - 'lengthField': { - }, - 'checksumVal': { - }, - 'checksumField': { - } + 'plmn': { }, - 'delayStart': { + 'ip_address': { }, - 'payloadAdvanced': { - 'udfMode': { - }, - 'udfLength': { - }, - 'udfDataWidth': { - }, - 'udfOffset': { - } + 'lease_address_v6': { }, - 'sizeDist': { - 'increment': { - }, - 'type': { - }, - 'min': { - }, - 'rate': { - }, - 'mixlen2': { - }, - 'mixweight6': { - }, - 'mixlen1': { - }, - 'mixweight7': { - }, - 'mixlen4': { - }, - 'mixweight4': { - }, - 'mixlen3': { - }, - 'mixweight5': { - }, - 'mixlen6': { - }, - 'mixlen5': { - }, - 'mixlen8': { - }, - 'mixweight8': { - }, - 'mixlen7': { - }, - 'mixweight9': { - }, - 'mixlen9': { - }, - 'mixweight2': { - }, - 'max': { - }, - 'mixweight3': { - }, - 'mixweight1': { - }, - 'mixlen10': { - }, - 'mixweight10': { - }, - 'unit': { - } + 'gateway_ip_address': { }, - 'advancedIPv4': { - 'lengthVal': { - }, - 'optionHeaderField': { - }, - 'optionHeaderData': { - }, - 'lengthField': { - }, - 'checksumVal': { - }, - 'tos': { - }, - 'checksumField': { - }, - 'ttl': { - } + 'netmask': { }, - 'srcPortMask': { + 'default_container': { }, - 'advancedIPv6': { - 'flowLabel': { - }, - 'lengthVal': { - }, - 'extensionHeaderField': { - }, - 'lengthField': { - }, - 'nextHeader': { - }, - 'trafficClass': { - }, - 'extensionHeaderData': { - }, - 'hopLimit': { - } + 'id': { } - }, - '@type:layer4': { - 'tcp': { - 'disable_ack_piggyback': { - }, - 'delay_acks': { - }, - 'mss': { - }, - 'raw_flags': { - }, - 'psh_every_segment': { - }, - 'ecn': { - }, - 'tcp_window_scale': { - }, - 'initial_receive_window': { - }, - 'reset_at_end': { - }, - 'dynamic_receive_window_size': { - }, - 'tcp_connect_delay_ms': { - }, - 'aging_time_data_type': { - }, - 'tcp_4_way_close': { - }, - 'shutdown_data': { - }, - 'tcp_icw': { - }, - 'tcp_keepalive_timer': { - }, - 'aging_time': { - }, - 'add_timestamps': { - }, - 'retries': { - }, - 'handshake_data': { - }, - 'ack_every_n': { - }, - 'syn_data_padding': { - }, - 'retry_quantum_ms': { - }, - 'delay_acks_ms': { - } + }], + 'pgw6': [{ + 'max_sessions': { }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'unlimited': { - }, - 'scope': { - }, - 'type': { - } + 'lease_address': { }, - 'sessions': { - 'openFast': { - }, - 'closeFast': { - }, - 'max': { - }, - 'allocationOverride': { - }, - 'targetPerSecond': { - }, - 'target': { - }, - 'targetMatches': { - }, - 'maxPerSecond': { - }, - 'engine': { - }, - 'statDetail': { - }, - 'emphasis': { - }, - 'maxActive': { - } + 'dns': { }, - 'loadprofile': { - 'name': { - }, - 'label': { - } + 'plmn': { }, - 'ip': { - 'tos': { - }, - 'ttl': { - } + 'ip_address': { }, - 'ip6': { - 'flowlabel': { - }, - 'traffic_class': { - }, - 'hop_limit': { - } + 'lease_address_v6': { }, - 'srcPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } + 'gateway_ip_address': { }, - 'rampUpProfile': { - 'min': { - }, - 'max': { - }, - 'increment': { - }, - 'interval': { - }, - 'type': { - } + 'default_container': { }, - 'delayStart': { + 'id': { }, - 'payload': { - 'add_timestamp': { - }, - 'data': { - }, - 'http_type': { - }, - 'transport': { - }, - 'type': { - } + 'prefix_length': { + } + }], + 'sgsn6': [{ + 'gateway_ip_address': { }, - 'rampDist': { - 'upBehavior': { - }, - 'down': { - }, - 'steadyBehavior': { - }, - 'downBehavior': { - }, - 'up': { - }, - 'synRetryMode': { - }, - 'steady': { - } + 'default_container': { }, - 'packetsPerSession': { + 'ggsn_ip_address': { }, - 'payloadSizeDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } + 'id': { }, - 'dstPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } + 'ip_address': { + }, + 'prefix_length': { } - }, - '@type:playback': { - 'tcp': { - 'disable_ack_piggyback': { - }, - 'delay_acks': { - }, - 'mss': { - }, - 'raw_flags': { - }, - 'psh_every_segment': { - }, - 'ecn': { - }, - 'tcp_window_scale': { - }, - 'initial_receive_window': { - }, - 'reset_at_end': { - }, - 'dynamic_receive_window_size': { - }, - 'tcp_connect_delay_ms': { - }, - 'aging_time_data_type': { - }, - 'tcp_4_way_close': { - }, - 'shutdown_data': { - }, - 'tcp_icw': { - }, - 'tcp_keepalive_timer': { - }, - 'aging_time': { - }, - 'add_timestamps': { - }, - 'retries': { - }, - 'handshake_data': { - }, - 'ack_every_n': { - }, - 'syn_data_padding': { - }, - 'retry_quantum_ms': { + }], + 'ip6_static_hosts': [{ + 'mpls_list': [{ + 'id': { }, - 'delay_acks_ms': { + 'value': { } + }], + 'ip_alloc_container': { }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'unlimited': { - }, - 'scope': { - }, - 'type': { - } + 'ip_selection_type': { }, - 'sessions': { - 'openFast': { - }, - 'closeFast': { - }, - 'max': { - }, - 'allocationOverride': { - }, - 'targetPerSecond': { - }, - 'target': { - }, - 'targetMatches': { - }, - 'maxPerSecond': { - }, - 'engine': { - }, - 'statDetail': { - }, - 'emphasis': { - }, - 'maxActive': { - } + 'count': { }, - 'loadprofile': { - 'name': { - }, - 'label': { - } + 'dns': { }, - 'ip': { - 'tos': { - }, - 'ttl': { - } + 'ip_address': { }, - 'modification': { - 'startpacket': { - }, - 'originalport': { - }, - 'newport': { - }, - 'replay': { - }, - 'bpfstring': { - }, - 'single': { - }, - 'loopcount': { - }, - 'endpacket': { - }, - 'independentflows': { - }, - 'serveripinjection': { - } + 'tags': { }, - 'ip6': { - 'flowlabel': { - }, - 'traffic_class': { - }, - 'hop_limit': { - } + 'proxy': { }, - 'srcPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } + 'maxmbps_per_host': { }, - 'rampUpProfile': { - 'min': { - }, - 'max': { - }, - 'increment': { - }, - 'interval': { - }, - 'type': { - } + 'gateway_ip_address': { }, - 'delayStart': { + 'default_container': { + }, + 'id': { }, - 'file': { + 'host_ipv6_addr_alloc_mode': { }, - 'rampDist': { - 'upBehavior': { - }, - 'down': { - }, - 'steadyBehavior': { - }, - 'downBehavior': { - }, - 'up': { - }, - 'synRetryMode': { - }, - 'steady': { - } + 'prefix_length': { }, - 'behavior': { - } - }, - '@type:layer2': { - 'bidirectional': { + 'dns_proxy': { }, - 'maxStreams': { + 'behind_snapt': { }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'rate': { - }, - 'increment': { - }, - 'type': { - }, - 'ramptype': { - } + 'enable_stats': { + } + }], + 'enodeb_mme_sgw': [{ + 'dns': { }, - 'advanced': { - 'ethTypeField': { - }, - 'ethTypeVal': { - } + 'plmn': { }, - 'slowStart': { + 'ip_allocation_mode': { }, - 'slowStartFps': { + 'mme_ip_address': { }, - 'duration': { - 'disable_nd_probes': { - }, - 'durationTime': { - }, - 'durationFrames': { - } + 'pgw_ip_address': { }, - 'delayStart': { + 'ue_address': { }, - 'payloadAdvanced': { - 'udfMode': { - }, - 'udfLength': { - }, - 'udfDataWidth': { - }, - 'udfOffset': { - } + 'gateway_ip_address': { }, - 'sizeDist': { - 'increment': { - }, - 'type': { - }, - 'min': { - }, - 'rate': { - }, - 'mixlen2': { - }, - 'mixweight6': { - }, - 'mixlen1': { - }, - 'mixweight7': { - }, - 'mixlen4': { - }, - 'mixweight4': { - }, - 'mixlen3': { - }, - 'mixweight5': { - }, - 'mixlen6': { - }, - 'mixlen5': { - }, - 'mixlen8': { - }, - 'mixweight8': { - }, - 'mixlen7': { - }, - 'mixweight9': { - }, - 'mixlen9': { - }, - 'mixweight2': { - }, - 'max': { - }, - 'mixweight3': { - }, - 'mixweight1': { - }, - 'mixlen10': { - }, - 'mixweight10': { - }, - 'unit': { - } + 'netmask': { }, - 'payload': { - 'data': { - }, - 'type': { - }, - 'dataWidth': { - } - } - }, - '@type:stackscrambler': { - 'tcp': { - 'disable_ack_piggyback': { - }, - 'delay_acks': { - }, - 'mss': { - }, - 'raw_flags': { - }, - 'psh_every_segment': { - }, - 'ecn': { - }, - 'tcp_window_scale': { - }, - 'initial_receive_window': { - }, - 'reset_at_end': { - }, - 'dynamic_receive_window_size': { - }, - 'tcp_connect_delay_ms': { - }, - 'aging_time_data_type': { - }, - 'tcp_4_way_close': { - }, - 'shutdown_data': { - }, - 'tcp_icw': { - }, - 'tcp_keepalive_timer': { - }, - 'aging_time': { - }, - 'add_timestamps': { - }, - 'retries': { - }, - 'handshake_data': { - }, - 'ack_every_n': { - }, - 'syn_data_padding': { - }, - 'retry_quantum_ms': { - }, - 'delay_acks_ms': { - } + 'default_container': { }, - 'scrambleOptions': { - 'maxCorruptions': { - }, - 'badIPFlags': { - }, - 'badIPFragOffset': { - }, - 'badIPLength': { - }, - 'badUrgentPointer': { - }, - 'badIPFlowLabel': { - }, - 'badEthType': { - }, - 'badTCPOptions': { - }, - 'badGTPNext': { - }, - 'handshakeTCP': { - }, - 'badIPChecksum': { - }, - 'badSCTPLength': { - }, - 'badTCPFlags': { - }, - 'badICMPType': { - }, - 'badIPTTL': { - }, - 'badIPProtocol': { - }, - 'badSCTPFlags': { - }, - 'badGTPFlags': { - }, - 'badIPVersion': { - }, - 'badL4HeaderLength': { - }, - 'badL4Checksum': { - }, - 'badIPOptions': { - }, - 'badSCTPType': { - }, - 'badSCTPChecksum': { - }, - 'badGTPNpdu': { - }, - 'badICMPCode': { - }, - 'badSCTPVerificationTag': { - }, - 'badIPTOS': { - }, - 'badIPTotalLength': { - }, - 'badGTPLen': { - }, - 'badGTPType': { - }, - 'badGTPSeqno': { - } + 'id': { + } + }], + 'enodeb6': [{ + 'dns': { }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'unlimited': { - }, - 'scope': { - }, - 'type': { - } + 'plmn': { }, - 'sessions': { - 'openFast': { - }, - 'closeFast': { - }, - 'max': { - }, - 'allocationOverride': { - }, - 'targetPerSecond': { - }, - 'target': { - }, - 'targetMatches': { - }, - 'maxPerSecond': { - }, - 'engine': { - }, - 'statDetail': { + 'sctp_over_udp': { + }, + 'enodebs': [{ + 'mme_ip_address': { }, - 'emphasis': { + 'enodebCount': { }, - 'maxActive': { + 'ip_address': { } + }], + 'gateway_ip_address': { }, - 'loadprofile': { - 'name': { - }, - 'label': { - } + 'default_container': { }, - 'ip': { - 'tos': { - }, - 'ttl': { - } + 'id': { }, - 'ip6': { - 'flowlabel': { - }, - 'traffic_class': { - }, - 'hop_limit': { - } + 'prefix_length': { }, - 'prng': { - 'seed': { - }, - 'offset': { - } + 'sctp_sport': { + } + }], + 'slaac_cfg': [{ + 'use_rand_addr': { }, - 'srcPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } + 'enable_dad': { }, - 'rampUpProfile': { - 'min': { - }, - 'max': { - }, - 'increment': { - }, - 'interval': { - }, - 'type': { - } + 'id': { }, - 'delayStart': { + 'stateless_dhcpv6c_cfg': { }, - 'payload': { - 'data': { - }, - 'transport': { - }, - 'type': { - } + 'fallback_ip_address': { + } + }], + 'ip_dns_config': [{ + 'dns_domain': { }, - 'rampDist': { - 'upBehavior': { - }, - 'down': { - }, - 'steadyBehavior': { - }, - 'downBehavior': { - }, - 'up': { - }, - 'synRetryMode': { - }, - 'steady': { - } + 'id': { }, - 'payloadSizeDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } + 'dns_server_address': { + } + }], + 'ip_dhcp_server': [{ + 'lease_address': { }, - 'dstPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } + 'count': { + }, + 'dns': { + }, + 'ip_address': { + }, + 'gateway_ip_address': { + }, + 'netmask': { + }, + 'lease_time': { + }, + 'default_container': { + }, + 'id': { + }, + 'accept_local_requests_only': { } - }, - '@type:clientsim': { - 'app': { - 'replace_streams': { - }, - 'streamsPerSuperflow': { - }, - 'removedns': { - }, - 'fidelity': { - } + }], + 'ip6_dns_config': [{ + 'dns_domain': { }, - 'tcp': { - 'disable_ack_piggyback': { - }, - 'delay_acks': { - }, - 'mss': { - }, - 'raw_flags': { - }, - 'psh_every_segment': { - }, - 'ecn': { - }, - 'tcp_window_scale': { - }, - 'initial_receive_window': { - }, - 'reset_at_end': { - }, - 'dynamic_receive_window_size': { - }, - 'tcp_connect_delay_ms': { - }, - 'aging_time_data_type': { - }, - 'tcp_4_way_close': { - }, - 'shutdown_data': { - }, - 'tcp_icw': { - }, - 'tcp_keepalive_timer': { - }, - 'aging_time': { - }, - 'add_timestamps': { - }, - 'retries': { - }, - 'handshake_data': { - }, - 'ack_every_n': { - }, - 'syn_data_padding': { - }, - 'retry_quantum_ms': { - }, - 'delay_acks_ms': { - } + 'id': { + }, + 'dns_server_address': { + } + }], + 'ipsec_config': [{ + 'ike_dh': { + }, + 'ipsec_lifetime': { + }, + 'ike_pfs': { + }, + 'ike_mode': { + }, + 'ike_1to1': { + }, + 'nat_traversal': { + }, + 'xauth_username': { + }, + 'ike_encr_alg': { + }, + 'psk': { + }, + 'dpd_enabled': { + }, + 'dpd_timeout': { + }, + 'init_rate': { }, - 'rateDist': { - 'unit': { - }, - 'min': { - }, - 'max': { - }, - 'unlimited': { - }, - 'scope': { - }, - 'type': { - } + 'setup_timeout': { }, - 'sessions': { - 'openFast': { - }, - 'closeFast': { - }, - 'max': { - }, - 'allocationOverride': { - }, - 'targetPerSecond': { - }, - 'target': { - }, - 'targetMatches': { - }, - 'maxPerSecond': { - }, - 'engine': { - }, - 'statDetail': { - }, - 'emphasis': { - }, - 'maxActive': { - } + 'esp_encr_alg': { }, - 'loadprofile': { - 'name': { - }, - 'label': { - } + 'ike_lifetime': { }, - 'ip': { - 'tos': { - }, - 'ttl': { - } + 'ike_version': { }, - 'resources': { - 'expand': { - } + 'id': { }, - 'ssl': { - 'ssl_client_keylog': { - }, - 'upgrade': { - }, - 'sslReuseType': { - }, - 'server_record_len': { - }, - 'client_record_len': { - }, - 'ssl_keylog_max_entries': { - } + 'left_id': { }, - 'ip6': { - 'flowlabel': { - }, - 'traffic_class': { - }, - 'hop_limit': { - } + 'ike_prf_alg': { }, - 'srcPortDist': { - 'min': { - }, - 'max': { - }, - 'type': { - } + 'esp_auth_alg': { }, - 'rampUpProfile': { - 'min': { - }, - 'max': { - }, - 'increment': { - }, - 'interval': { - }, - 'type': { - } + 'dpd_delay': { }, - 'delayStart': { + 'xauth_password': { }, - 'rampDist': { - 'upBehavior': { - }, - 'down': { - }, - 'steadyBehavior': { - }, - 'downBehavior': { - }, - 'up': { - }, - 'synRetryMode': { - }, - 'steady': { - } + 'initial_contact': { }, - 'superflow': { + 'debug_log': { + }, + 'wildcard_tsr': { + }, + 'rekey_margin': { + }, + 'ike_auth_alg': { + }, + 'right_id': { + }, + 'max_outstanding': { + }, + 'retrans_interval': { + }, + 'enable_xauth': { } - }, - 'createdOn': { - }, - 'tags': [{ + }], + 'dhcpv6c_cfg': [{ + 'dhcp6c_max_outstanding': { + }, + 'dhcp6c_duid_type': { + }, + 'dhcp6c_ia_type': { + }, + 'dhcp6c_req_opts_config': { + }, + 'dhcp6c_tout_and_retr_config': { + }, + 'dhcp6c_renew_timer': { + }, + 'dhcp6c_ia_t2': { + }, 'id': { }, - 'type': { + 'dhcp6c_ia_t1': { }, - 'domainId': { - 'name': { - }, - 'iface': { - }, - 'external': { - } + 'dhcp6c_initial_srate': { } + }] + }, + 'createdOn': { + }, + 'clazz': { + }, + 'revision': { + }, + 'operations': { + 'search': [{ }], - 'revision': { - }, - 'lockedBy': { - }, - 'createdBy': { - }, - 'reportResults': { - }, - 'timeline': { - 'timesegment': [{ - 'label': { - }, - 'size': { - }, - 'type': { - } - }] - }, - 'id': { + 'delete': [{ + }], + 'importNetwork': [{ + }], + 'saveAs': [{ + }], + 'save': [{ + }], + 'list': [{ + }], + 'load': [{ + }], + 'new': [{ + }] + } + }, + 'strikes': { + 'severity': { + }, + 'year': { + }, + 'variants': { + }, + 'reference': [{ + 'label': { }, - 'clazz': { + 'type': { }, - 'operations': { - 'getComponentPresetNames': [{ - }] + 'value': { } }], - 'lockedBy': { + 'path': { + }, + 'protocol': { + }, + 'fileSize': { + }, + 'fileExtension': { + }, + 'name': { + }, + 'id': { + }, + 'category': { + }, + 'keyword': [{ + 'name': { + } + }], + 'direction': { + }, + 'operations': { + 'search': [{ + }] + } + }, + 'reports': { + 'endtime': { + }, + 'starttime': { + }, + 'label': { + }, + 'testname': { }, - 'createdBy': { + 'network': { + }, + 'duration': { + }, + 'result': { + }, + 'size': { + }, + 'isPartOfResiliency': { }, 'name': { }, - 'clazz': { + 'iteration': { }, - 'testComponentTypesDescription': [{ - 'template': { + 'testid': { + 'host': { }, 'name': { }, - 'description': { - }, - 'label': { - }, - 'type': { + 'iteration': { } - }], + }, + 'user': { + }, 'operations': { - 'search': [{ - }], - 'stopRun': [{ - }], - 'importModel': [{ - }], - 'saveAs': [{ - }], - 'save': [{ - }], - 'clone': [{ - }], - 'exportModel': [{ - }], - 'realTimeStats': [{ - }], 'delete': [{ }], - 'run': [{ - }], - 'load': [{ + 'exportReport': [{ }], - 'new': [{ + 'getReportContents': [{ }], - 'add': [{ + 'getReportTable': [{ }], - 'remove': [{ + 'search': [{ }] } }, - 'loadProfile': { - 'presets': [{ - 'phase': [{ - 'duration': { - }, - 'phaseId': { - }, - 'type': { - }, - 'sessions.max': { - }, - 'sessions.maxPerSecond': { - }, - 'rateDist.unit': { + 'appProfile': { + 'weightType': { + }, + 'lockedBy': { + }, + 'createdBy': { + }, + 'author': { + }, + 'name': { + }, + 'superflow': [{ + 'settings': [{ + 'name': { }, - 'rateDist.min': { + 'description': { }, - 'rampDist.steadyBehavior': { + 'realtimeGroup': { }, - 'rateDist.type': { + 'label': { }, - 'rateDist.scope': { + 'units': { } }], + 'percentFlows': { + }, + 'seed': { + }, 'author': { }, - 'regen': { + 'estimate_bytes': { + }, + 'estimate_flows': { + }, + 'weight': { }, 'description': { }, 'label': { }, - 'createdOn': { + 'params': { }, - 'summaryData': { - 'deviceType': { - }, - 'unknownUdpAppNames': { - }, - 'unknownSslSuperflowName': { - }, - 'magicNumber': { - }, - 'downloadBytesSum': { - }, - 'version': { - }, - 'phaseDuration': { - }, - 'unknownTcpAppNames': { - }, - 'uploadBytesSum': { - }, - 'summaryName': { - }, - 'basisOfRegeneration': { - }, - 'activeFlowsSum': { - }, - 'miniSlotDuration': { - }, - 'unknownSslAppNames': { - }, - 'dynamicSuperflowName': { - }, - 'appStat': [{ - }], - 'startTime': { - }, - 'endTime': { - }, - 'dynamicAppNames': { - } + 'constraints': { + }, + 'createdOn': { }, 'revision': { }, 'lockedBy': { }, + 'generated': { + }, 'createdBy': { }, + 'percentBandwidth': { + }, 'name': { }, 'clazz': { } }], - 'phase': [{ - 'duration': { - }, - 'phaseId': { - }, - 'type': { - }, - 'sessions.max': { - }, - 'sessions.maxPerSecond': { - }, - 'rateDist.unit': { - }, - 'rateDist.min': { - }, - 'rampDist.steadyBehavior': { - }, - 'rateDist.type': { - }, - 'rateDist.scope': { - } - }], - 'author': { - }, - 'regen': { - }, 'description': { }, 'label': { }, 'createdOn': { }, - 'summaryData': { - 'deviceType': { - }, - 'unknownUdpAppNames': { - }, - 'unknownSslSuperflowName': { - }, - 'magicNumber': { - }, - 'downloadBytesSum': { - }, - 'version': { - }, - 'phaseDuration': { - }, - 'unknownTcpAppNames': { - }, - 'uploadBytesSum': { - }, - 'summaryName': { - }, - 'basisOfRegeneration': { - }, - 'activeFlowsSum': { - }, - 'miniSlotDuration': { - }, - 'unknownSslAppNames': { - }, - 'dynamicSuperflowName': { - }, - 'appStat': [{ - }], - 'startTime': { - }, - 'endTime': { - }, - 'dynamicAppNames': { - } + 'clazz': { }, 'revision': { }, - 'lockedBy': { - }, - 'createdBy': { - }, - 'name': { - }, - 'clazz': { - }, 'operations': { + 'add': [{ + }], + 'exportAppProfile': [{ + }], + 'importAppProfile': [{ + }], 'delete': [{ }], - 'createNewCustom': [{ + 'remove': [{ + }], + 'search': [{ }], 'load': [{ }], - 'save': [{ + 'new': [{ + }], + 'recompute': [{ }], 'saveAs': [{ + }], + 'save': [{ }] } }, - 'statistics': { - 'component': [{ - 'statNames': [{ - 'name': { - }, - 'description': { - }, - 'realtimeGroup': { - }, - 'label': { - }, - 'units': { - } + 'remote': { + 'operations': { + 'connectChassis': [{ }], - 'label': { - } - }] + 'disconnectChassis': [{ + }] + } } } 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 new file mode 100644 index 0000000..4df86d3 --- /dev/null +++ b/RestApi/Python/RestApi_v2/Modules/bps_restpy/rest_samples/Retry_Sample.py @@ -0,0 +1,115 @@ +# 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"../lib")) + +from restPyWrapper3 import * + +######################################## + + +######################################## +# Demo script global variables +######################################## +# Demo script global variables +canned_test_name = 'AppSim' +#bps system info +bps_system = '10.36.83.70' +bpsuser = 'admin' +bpspass = 'admin' +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/s07_TestModel_Run.py b/RestApi/Python/RestApi_v2/Modules/bps_restpy/rest_samples/s07_TestModel_Run.py old mode 100755 new mode 100644 index f382c7a..0f92773 --- a/RestApi/Python/RestApi_v2/Modules/bps_restpy/rest_samples/s07_TestModel_Run.py +++ b/RestApi/Python/RestApi_v2/Modules/bps_restpy/rest_samples/s07_TestModel_Run.py @@ -1,139 +1,152 @@ -# Title: Python Script made to create a Test Model from scrach. -# Actions: -# 1. Login to BPS box -# 2. Create a new test -# 3. Add components (AppSim + RR) -# 4. Save test -# 5. Clone components then disable the RR components. -# 6. Reserve ports -# 7. Run test and wait a few seconds -# 8. Get stats -# 9. Delete test from database and try to search it again -# 10. Unreserve ports and logout. - - - - -import time, sys, os -# Add bps_restpy libpath *required if the library is not installed -libpath = os.path.abspath(__file__+"/../../..") -sys.path.insert(0,libpath) - -from bps_restpy.bps import BPS,pp - - - -######################################## -# Demo script global variables -appsim_component_name = "tempAppsim" -rr_component_name = "tempRR" -test_name = "Test_Model" - -#bps system info -bps_system = '' -bpsuser = 'bps user' -bpspass = 'bps pass' - -slot_number = 1 -port_list = [0, 1] - -######################################## - - -######################################## -# Login to BPS box -bps = BPS(bps_system, bpsuser, bpspass) -bps.login() - - -######################################## -print("Create a new test: ") -bps.testmodel.new() - -print("Add components to the test.") -bps.testmodel.add(name=appsim_component_name, type="appsim", active=True, component="appsim") - -comp_Name = bps.testmodel.component["appsim_1"].label.get() -print("Component Name is: %s" % comp_Name) - -bps.testmodel.add(name=rr_component_name, type="routingrobot", active=True, component="routingrobot") -comp_Name = bps.testmodel.component["routingrobot_1"].label.get() -print("Component Name is: %s" % comp_Name) - -bps.testmodel.save(name=test_name, force=True) -test = bps.testmodel.search(searchString=test_name, limit=2, sort="name", sortorder="ascending") -print("Search result after save: ") -print(test) - -print("Clone the components: ") -bps.testmodel.clone('routingrobot_1', 'routingrobot', True) -bps.testmodel.clone("appsim_1", 'appsim', True) - -print("Change name for the cloned componets:") -bps.testmodel.component["appsim_2"].set({"label":"App2"}) -bps.testmodel.component["routingrobot_2"].set({"label":"RR2"}) - -print("Components Status: ") -pp(bps.testmodel.component.get()) - -print("Disable the RR components: ") -bps.testmodel.component["routingrobot_1"].active.set(False) -bps.testmodel.component["routingrobot_2"].active.set(False) - -######################################## -print("Save test:") -bps.testmodel.save() - -######################################## -print("Reserve Ports") -for p in port_list: - bps.topology.reserve([{'slot': slot_number, 'port': p, 'group': 1}]) - - -######################################## -print("Run test and Get Stats:") -test_id_json = bps.testmodel.run(modelname=test_name, group=1) -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 (runningTests["initProgress"] == None): - runningTests = bps.topology.runningTest['TEST-%s'%run_id].get() - print("...") - time.sleep(1) - -print("~Wait for the initialization process ") -init_progress = bps.topology.runningTest['TEST-%s'%run_id].initProgress.get() -while( 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. Get stats at every 2 seconds.") -progress = bps.topology.runningTest['TEST-%s'%run_id].progress.get() -while(type(progress) == int and int(progress) <= 100): - pp(bps.testmodel.realTimeStats(int(run_id), "summary", -1)) - progress = bps.topology.runningTest['TEST-%s'%run_id].progress.get() - time.sleep(2) - - -######################################## -print("Delete Test") -bps.testmodel.delete(name=test_name) -test = bps.testmodel.search(searchString=test_name, limit=2, sort="name", sortorder="ascending") -print("Search result after delete") -print(test) - -######################################## -print("Unreserve ports") -for p in port_list: - bps.topology.unreserve([{'slot': slot_number, 'port': p}]) - -######################################## -print("Session logout") -bps.logout() - - - +# Title: Python Script made to create a Test Model from scrach. +# Actions: +# 1. Login to BPS box +# 2. Create a new test +# 3. Add components (AppSim + RR) +# 4. Save test +# 5. Clone components then disable the RR components. +# 6. Reserve ports +# 7. Run test and wait a few seconds +# 8. Get stats +# 9. Delete test from database and try to search it again +# 10. Unreserve ports and logout. + + + + +import time, sys, os +# Add bps_restpy libpath *required if the library is not installed +libpath = os.path.abspath(__file__+"/../../..") +sys.path.insert(0,libpath) + +from bps_restpy.bps import BPS,pp + + +######################################## +# Demo script global variables +appsim_component_name = "tempAppsim" +rr_component_name = "tempRR" +test_name = "Test_Model" + +#bps system info +bps_system = '10.36.66.31' +bpsuser = 'admin' +bpspass = 'admin' + +slot_number = 9 +port_list = [0, 1] + +######################################## + + +######################################## +# Login to BPS box +bps = BPS(bps_system, bpsuser, bpspass) +bps.login() + + +######################################## +print("Create a new test: ") +bps.testmodel.new() + +print("Add components to the test.") +bps.testmodel.add(name=appsim_component_name, type="appsim", active=True, component="appsim") + +comp_Name = bps.testmodel.component["appsim_1"].label.get() +print("Component Name is: %s" % comp_Name) + +bps.testmodel.add(name=rr_component_name, type="routingrobot", active=True, component="routingrobot") +comp_Name = bps.testmodel.component["routingrobot_1"].label.get() +print("Component Name is: %s" % comp_Name) + +bps.testmodel.save(name=test_name, force=True) +test = bps.testmodel.search(searchString=test_name, limit=2, sort="name", sortorder="ascending") +print("Search result after save: ") +print(test) + +print("Clone the components: ") +bps.testmodel.clone('routingrobot_1', 'routingrobot', True) +bps.testmodel.clone("appsim_1", 'appsim', True) + +print("Change name for the cloned componets:") +bps.testmodel.component["appsim_2"].set({"label":"App2"}) +bps.testmodel.component["routingrobot_2"].set({"label":"RR2"}) + +print("Components Status: ") +pp(bps.testmodel.component.get()) + +print("Disable the RR components: ") +bps.testmodel.component["routingrobot_1"].active.set(False) +bps.testmodel.component["routingrobot_2"].active.set(False) + +######################################## +print("Save test:") +bps.testmodel.save() + +######################################## +print("Reserve Ports") +for p in port_list: + bps.topology.reserve([{'slot': slot_number, 'port': p, 'group': 1}]) + + +######################################## +print("Run test and Get Stats:") +test_id_json = bps.testmodel.run(modelname=test_name, group=1) +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 (runningTests["initProgress"] == None): + runningTests = bps.topology.runningTest['TEST-%s'%run_id].get() + print("...") + time.sleep(1) + +print("~Wait for the initialization process ") +init_progress = bps.topology.runningTest['TEST-%s'%run_id].initProgress.get() +while( 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. Get stats at every 2 seconds.") +progress = bps.topology.runningTest['TEST-%s'%run_id].progress.get() +retry_count = 0 +while(type(progress) == int and int(progress) <= 100) and retry_count <= 3: + try: + pp(bps.testmodel.realTimeStats(int(run_id), "summary", -1)) + progress = bps.topology.runningTest['TEST-%s'%run_id].progress.get() + time.sleep(2) + 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) + + + +######################################## +print("Delete Test") +bps.testmodel.delete(name=test_name) +test = bps.testmodel.search(searchString=test_name, limit=2, sort="name", sortorder="ascending") +print("Search result after delete") +print(test) + +######################################## +print("Unreserve ports") +for p in port_list: + bps.topology.unreserve([{'slot': slot_number, 'port': p}]) + +######################################## +print("Session logout") +bps.logout() + +