# Utilities # XINA Connect XINA Connect is a Java application which combines the features of the XINA Tunnel and XINA Import applicatons with a UI. This application is distributed as a Java jar file and requires Java 17 or greater to run. The recommended OpenJDK build is available [here](https://learn.microsoft.com/en-us/java/openjdk/download). ### Latest Version #### 1.1.0 [Windows Installer](https://smce-xina.s3.amazonaws.com/dist/connect/XINA+Connect+Beta-1.1.0.msi) [Windows Portable](https://smce-xina.s3.amazonaws.com/dist/connect/XINA+Connect+Beta-1.1.0.zip) [MacOS Installer](https://smce-xina.s3.amazonaws.com/dist/connect/XINA+Connect+Beta-1.1.0.dmg) [Jar File](https://smce-xina.s3.amazonaws.com/dist/connect/XINA+Connect+Beta-1.1.0.jar.zip)(requires Java 17+) `java -jar xina_connect.jar` ### Previous Versions #### 1.0.0 [Windows Installer](https://smce-xina.s3.amazonaws.com/dist/connect/XINA+Connect+Beta-1.0.0.msi) [MacOS Installer](https://smce-xina.s3.amazonaws.com/dist/connect/XINA+Connect+Beta-1.0.0.dmg) # XINA Tunnel XINA Tunnel is a command line application required for client applications to communicate with the XINA Server via the [XINA API](/books/api-reference). This application is distributed as a Java jar file and requires Java 17 or greater to run. The recommended OpenJDK build is available [here](https://learn.microsoft.com/en-us/java/openjdk/download). ### Latest Version #### XINA Tunnel 11.2.3 [Download](https://smce-xina.s3.amazonaws.com/dist/11.2.3/xina-tunnel.jar) ### Usage Windows ``` java -jar "path to xina_tunnel.jar" ^ -host "host URL or IP address" ^ -keyfile "path to key.json" ``` MacOS, Linux ``` java -jar "path to xina_tunnel.jar" \ -host "host URL or IP address" \ -keyfile "path to key.json" ``` ### Old Versions #### XINA Tunnel 9.2.0 [Download](https://smce-xina.s3.amazonaws.com/dist/tunnel/xina_tunnel_9.2.0.zip) ### Usage Windows ``` java -jar "path to xina_tunnel.jar" ^ -host "host URL or IP address" ^ -keyfile "path to key.json" ``` MacOS, Linux ``` java -jar "path to xina_tunnel.jar" \ -host "host URL or IP address" \ -keyfile "path to key.json" ``` # XINA Import XINA Import is a utility for importing XINA API actions as JSON files. This application is distributed as a Java jar file and requires Java 17 or greater to run. The recommended OpenJDK build is available [here](https://learn.microsoft.com/en-us/java/openjdk/download). ### Latest Version #### XINA Import 11.2.3 [Download](https://smce-xina.s3.amazonaws.com/dist/11.2.3/xina-import.jar) Windows ``` java -jar "path to xina_import.jar" ^ [additional arguments...] ``` MacOS, Linux ``` java -jar "path to xina_import.jar" \ [additional arguments...] ```
ArgumentInfoDefault
`-host `the XINA Tunnel host`"localhost"`
`-post `the XINA Tunnel port`41746`
`-okmove `if set, move files to path to after successful importnone (files are not moved)
`-oktrash`if set, move files to OS trash after successful import`false`
`-okdelete`if set, permanently delete files after successful import`false`
`-ermove`if set, move files to path to after failed importnone (errors stop import)
`-dir `path to directory containing files to import
`-watch `path to directory to watch for files to import
`-recursive`if true in `dir` or `watch` mode, searches directory recursively for JSON files`false`
XINA Import has three modes of operation: #### File List JSON files can be listed explicitly. They will be imported in the specified order. ``` java -jar "path to xina_import.jar" \ "path to JSON file" \ "path to JSON file"... ``` #### Directory If the `-dir` argument is used, XINA Import will attempt to import all `*.json` files in the specified directory in alphanumeric order. **Note**: the directory is now queried after each imported file, so at one of `-okmove`, `-oktrash`, or `-okdelete` must be specified in this mode, or the same file would be imported repeatedly in an infinite loop. ``` java -jar "path to xina_import.jar" \ -dir "path to directory" \ -okmove "path to different directory" ``` #### Watch If the `-watch` argument is used, XINA Import will attempt to import all `*.json` files in the specified directory in alphanumeric order. Once complete, the directory is watched for any new JSON files, which are imported as they become available. As with directory mode, a `-ok*` argument is required to prevent the same file from being imported repeatedly. ``` java -jar "path to xina_import.jar" \ -watch "path to directory" \ -okmove "path to different directory" ``` ### Previous Versions #### XINA Import 10.1.0 [Download](https://smce-xina.s3.amazonaws.com/dist/import/10.1.0/xina_import.jar) Windows ``` java -jar "path to xina_import.jar" ^ [additional arguments...] ``` MacOS, Linux ``` java -jar "path to xina_import.jar" \ [additional arguments...] ```
ArgumentInfoDefault
`-host `the XINA Tunnel host`"localhost"`
`-post `the XINA Tunnel port`41746`
`-okmove `if set, move files to path to after successful importnone (files are not moved)
`-oktrash`if set, move files to OS trash after successful import`false`
`-okdelete`if set, permanently delete files after successful import`false`
`-ermove`if set, move files to path to after failed importnone (errors stop import)
`-dir `path to directory containing files to import
`-watch `path to directory to watch for files to import
`-recursive`if true in `dir` or `watch` mode, searches directory recursively for JSON files`false`
XINA Import has three modes of operation: #### File List JSON files can be listed explicitly. They will be imported in the specified order. ``` java -jar "path to xina_import.jar" \ "path to JSON file" \ "path to JSON file"... ``` #### Directory If the `-dir` argument is used, XINA Import will attempt to import all `*.json` files in the specified directory in alphanumeric order. **Note**: the directory is now queried after each imported file, so at one of `-okmove`, `-oktrash`, or `-okdelete` must be specified in this mode, or the same file would be imported repeatedly in an infinite loop. ``` java -jar "path to xina_import.jar" \ -dir "path to directory" \ -okmove "path to different directory" ``` #### Watch If the `-watch` argument is used, XINA Import will attempt to import all `*.json` files in the specified directory in alphanumeric order. Once complete, the directory is watched for any new JSON files, which are imported as they become available. As with directory mode, a `-ok*` argument is required to prevent the same file from being imported repeatedly. ``` java -jar "path to xina_import.jar" \ -watch "path to directory" \ -okmove "path to different directory" ``` #### XINA Import 9.2.0 [Download](https://smce-xina.s3.amazonaws.com/dist/import/xina_import_9.2.0.zip) ### Usage Windows ``` java -Dlog4j.configurationFile="path to log4j2.xml" ^ -jar "path to xina_import.jar" ^ [additional arguments...] ``` MacOS, Linux ``` java -Dlog4j.configurationFile="path to log4j2.xml" \ -jar "path to xina_import.jar" \ [additional arguments...] ```
ArgumentInfoDefault
`-host `the XINA Tunnel host`"localhost"`
`-post `the XINA Tunnel port`41746`
`-movejson `directory to move JSON files to after importnone (files are not moved)
`-movefile `directory to move other files to after importnone (files are not moved)
`-deljson`if set, permanently delete JSON files after import`false`
`-delfile`if set, permanently delete other files after import`false`
`-dir `path to directory containing files to import
`-watch `path to directory to watch for files to import
`-recursive`if true in `dir` or `watch` mode, searches directory recursively for JSON files`false`
XINA Import has three modes of operation: #### File List JSON files can be listed explicitly. They will be imported in the specified order. ``` java -jar "path to xina_import.jar" \ "path to JSON file" \ "path to JSON file"... ``` #### Directory If the `-dir` argument is used, XINA Import will attempt to import all `*.json` files in the specified directory in alphabetical order. It is recommended to include `-movejson` or `-deljson` to track progress, in case the import is interrupted. ``` java -jar "path to xina_import.jar" \ -dir "path to directory" \ -movejson "path to different directory" ``` #### Watch If the `-watch` argument is used, XINA Import will attempt to import all `*.json` files in the specified directory in alphabetical order. Once complete, the directory is watched for any new JSON files, which are imported as they become available. It is required to include `-movejson` or `-deljson`, as otherwise files would be continuously re-imported. ``` java -jar "path to xina_import.jar" \ -watch "path to directory" \ -movejson "path to different directory" ``` # XINA Import Helper XINA Import Helper is a utility for generating the XINA API actions as JSON files for an archive directory. The following XINA action files will be generated: - Cancel any existing task(s) for the archive - Delete the archive if it already exists in XINA - Import the file archive - Run the mining task on the archive to extract the data The output files can then be imported into XINA using [XINA Import](https://wiki.xina.io/books/utilities/page/xina-import). This application is distributed as a Java jar file and requires Java 17 or greater to run. The recommended OpenJDK build is available [here](https://learn.microsoft.com/en-us/java/openjdk/download). ### Latest Version #### XINA Import Helper 11.2.3 [Download](https://smce-xina.s3.amazonaws.com/dist/11.2.3/xina-struct-import-helper.jar) Windows ``` java -jar "path to xina-import-helper.jar" ^ [additional arguments...] ``` MacOS, Linux ``` java -jar "path to xina-import-helper.jar" \ [additional arguments...] ``` # XINA Download XINA Download is a utility for managing batch file downloads with XINA. This application currently works with the SAM and MOMA XINA instances for telemetry file management only. ### Latest Version Windows Installer [xina\_download.exe](https://smce-xina.s3.amazonaws.com/dist/download/xina_download.exe) MacOS Installer [xina\_download.dmg](https://smce-xina.s3.amazonaws.com/dist/download/xina_download.dmg) # XINA API Libraries We aim to provide a variety of reference XINA API client implementations for different programming languages and environments. ## Python [xina\_api\_python\_0.4.0.zip](https://smce-xina.s3.amazonaws.com/dist/api/python/xina_api_python_0.4.0.zip) ### Installation #### Prerequisites - Python 3.8 or greater The `xina` client communicates with XINA via the [XINA Tunnel](https://wiki.xina.io/books/utilities/page/xina-tunnel) utility. You must have it running for the `xina` client to connect. #### Steps 1. Extract the zip file. 2. Open a terminal in the root extracted directory, and execute the following commands: ```bash python3 -m pip install . ``` ### Examples #### Client class ```python from xina import XPClient with XPClient() as x: res = x.act({'action': 'version'}) print(res) # => {'schema':100, 'host':'sandbox.xina.io', 'server':'9.1.4', 'team':100} ``` #### CLI ```bash python -m xina action '{"action":"version"}' # => {"schema":100,"host":"sandbox.xina.io","server":"9.1.4","team":100} ``` # XINA Struct Archive The XINA Struct Archive utility processes mnemonic buffer files into mnemonic archive files. It is primarily intended to be run as part of the automated XINA Structs data pipeline. ### Arguments
NameReqDescriptionDefault
tasktask ID
confJSON conf file path
temptemp directory path
importimport directory path (for file outputs)
postpost directory path (for post-import outputs)
hosttunnel host`"localhost"`
porttunnel port`41746`
### Configuration
NameReqDescriptionDefault
originorigin group
sliceslice length in minutes`60`
tslice time barrier (see below)
### Operation This utility serves three main functions. First, processing raw buffer files of any supported format into well formatted, optimized xbin files. Second, merging buffer file data into time slice separated archive files. Third, processing any changes of flagged buffer files and updating associated archives as needed. #### File Processing Buffer files are typically imported in the `PENDING` state, and must be converted into xbin files, which are indicated with the `PROCESSED` state. # XINA Struct Mine The XINA Struct Mine utility processes archive files to produce data products for import into XINA. It is primarily intended to be run as part of the XINA Structs data pipeline's Mining Task. There are 2 suppported archive file formats: `xbin` and `xpf`. If the archive file is in the `xpf` format, processing is delegated to a mission specific tool. See the [Struct Extract Interface](https://wiki.xina.io/books/structured-data-standards/page/struct-extract-interface) that describes the interface the tool shall implement. ### Arguments
NameReqDescriptionDefault
tasktask ID
confJSON conf file path
temptemp directory path
importimport directory path (for file outputs)
postpost directory path (for post-import outputs)
hosttunnel host`"localhost"`
porttunnel port`41746`
### Configuration
NameReqDescriptionDefault
pipepipe group path, or model path if no pipe
sliceslice length in minutes`60`
tTBD REMOVE slice time barrier (see below)
TODO: Add re-mine options
### Operation This utility serves a few main functions: - Extract data from archive files to produce import products such as: - Full mnemonic data - Delta mnemonic data - Time and Interval bin data - Filtered mnemonic data - Events (Actions?) - Limit Report - Metrics - Mission Specific Data # XINA Struct Export The XINA Struct Export command line utility processes archive files for a specified time range to produce data products for XINA's Export Tasks. There are 2 suppported archive file formats: `xbin` and `xpf`. If the archive file is in the `xpf` format, processing is delegated to a mission specific tool. See the [Struct Extract Interface](https://wiki.xina.io/books/structured-data-standards/page/struct-extract-interface) that describes the interface the tool must implement. Available data products include: - Full resolution mnemonic data with a configurable format - Mnemonic data statistics - Configurable plots of data - Limit Report - Events - Log file ### Arguments
NameReqDescriptionDefault
cacheCache directory path. Used for any persistent caching across tasks for optimization purposes.
cancellationPath to the cancellation file for detecting cancel requests.
confFile path to the JSON config containing the export parameters.
envFile path to the JSON environment file which defines environment parameters such as project specific paths.
extractOverrides the path provided in the environment file to the [struct\_extract](https://wiki.xina.io/books/structured-data-standards/page/struct-extract-interface) app. Only used if the archive format is `xpf`.
helpPrint available options.
hostXINA Tunnel host.`"localhost"`
portXINA Tunnel port.`41746`
importImport directory path. Files that need to be imported will be placed here. `struct_export` is responsbile for generating the corresponding import action file but `xina-run` will perform the actual importing.
logFile path that log events will be written to.
outOuptut directory path. Files placed here will be uploaded and accessible directly from the Task interface (e.g. notifications panel).
pkt\_modelsModels to use packet time by default. **\[TBD Remove\]**
plotOverrides the path provided in the environment file to the app that generates plot PDFs.
postPost directory path (for post-import outputs) e.g. uploading log files to the Task record.
pythonOverrides the path to the Python executable used by the plot app provided in the environment file.
taskFile path to the JSON file containing info about the Task.
tempTemp directory path for storing temporary files during execution. For example, zipped archives are unzipped to this directory for processing.
### conf The below table describes the available fields in the `conf` JSON file and is used to control how data should be exported.
NameTypeReqDescriptionDefault
model`utf8text `Path of model to export data from e.g. `moma.fm`
start`instant(us)`Start time of data to export. May be provided as a Unix timestamp in microseconds (e.g. `1738781947000000`) or an ISO 8601 formatted string (e.g. `2024-06-12T00:00:00Z`).
end`instant(us)`End time of data to export. May be provided as a Unix timestamp in microseconds (e.g. `1738781947000000`) or an ISO 8601 formatted string (e.g. `2024-06-12T00:00:00Z`).
ueid`UUID`Event UUID of interval if the export was requested for an interval. The event's start and end time will be used instead of `start` and `end`.
disable\_filter`boolean`If `true`, does not apply the filters defined in `data_conf`. This is useful if you want to export an existing profile that has filters, but don't want to apply the filters.false
copy`boolean`If true, the zip file will be uploaded and available from the Task UI.false
label`utf8text`The text that will be used to name the files and final zip file. The format will be like `2024_06_12_00_00_00_2024_06_12_00_20_00_profile_label`
profile`utf8text `The name of the Profile if the export was generated from one. If provided, then the Profile's `plot_conf` and `data_conf` will be used.
auto\_conf`struct_auto_conf`The `struct_auto_conf` that triggered the export. Only provided if the export was auto generated.
plot\_conf`struct_plot_conf`The plot configuration used to generate the plot PDF. See [plot format](https://wiki.xina.io/books/oci-user-guide/page/export-plot-configuration-json-format). An empty object i.e. `{}` can be provided to generate the default plot configuration. If not provided, then plots will not be generated.One mnemonic per plot, one plot per page, sorted by `mn_id` in ascending order.
data\_conf`struct_data_conf`See [struct\_data\_conf](https://wiki.xina.io/link/170#bkmrk-struct_data_conf-jso)
multi`boolean`**\[TBD REMOVE - Not currently supported\]** Has extract process all archives at once. This was added for performance reasons since loading the mnem def is slow.
**Example conf:** *Note: The plot\_conf was truncated for brevity.* This example performs an export with fields provided directly in the `conf` object. ```json { "model": "oci.fm", "label": "test", "start": 1718150400000000, "end": "2024-06-12T00:20:00Z", "ueid": null, "copy": true, "plot_conf": { "trend_series": [ "avg" ], "pages": [ { "plots": [ { "title": "OCI Pri Power (15A)", "mnemonics": [ "PSE.OM1.OCI_PRI_CURR" ] }, { "series": [ { "mnemonic": "oci.dau.ddc.FPGA.CcdOpMode", "plot_options": { "color": "k" } } ] } ] } ] }, "data_conf": { "limit": false, "ids": "@#[42316,42318-42322,43255,44243,45140,45187-45210,45233-45236,45238,45240,45241,45245,45247,45248,45259,45260,45265-45268,45270,45272,45273,45277,45279,45280,45291,45292,45442,45444,45446,45448,45450,45452,45454,45460,45462,45472,45538,45540,45542,45544,45546,45548,45550,45556,45558,45568,51908,51910,64097,64109,64111,64113,64115,66333,66341,66349,66357,66365,66373,66381,67536,67537,69019,69024-69026,69031,69032,69729,77534,77570,77696]sci", "dis": false, "fill": false, "columns": { "ts_utc_iso": true }, "join": true, "pkt": true } } ``` This example performs an export for an existing [Profile Definition](https://wiki.xina.io/link/170#bkmrk-profile-definitions). The `data_conf` and `plot_conf` objects will be retrieved from the `OPS_FLT_OCI_SDS` profile. ```json { "model": "oci.fm", "profile": "OPS_FLT_OCI_SDS", "label": "test", "start": 1718150400000000, "end": "2024-06-12T00:20:00Z", "ueid": null, "copy": true, } ``` # XINA Struct Trend The XINA Struct Trend command line utility generates trend data products for a specified time range or Event Intervals. It is used by the XINA Trend Task. Generated data products include: - Binned trend data - Configurable trend plots - Log file ### Arguments
NameReqDescriptionDefault
cacheCache directory path. Used for any persistent caching across tasks for optimization purposes.
confFile path to the JSON config containing the trend parameters.
envFile path to the JSON environment file which defines environment parameters such as project specific paths.
helpPrint available options.
hostXINA Tunnel host.`"localhost"`
portXINA Tunnel port.`41746`
importImport directory path. Files that need to be imported will be placed here. `struct_trend` is responsbile for generating the corresponding import action file but `xina-run` will perform the actual importing.
logFile path that log events will be written to.
outOuptut directory path. Files placed here will be uploaded and accessible directly from the Task interface (e.g. notifications panel).
postPost directory path (for post-import outputs) e.g. uploading log files to the Task record.
taskFile path to the JSON file containing info about the Task.
tempTemp directory path for storing temporary files during execution.
### conf The below table describes the available fields in the `conf` JSON file and is used to control how data should be trended.
NameTypeReqDescriptionDefault
model`utf8text `Path of model to trend data from e.g. `moma.fm`
copy`boolean`If true, the zip file will be uploaded and available from the Task interface.false
trend`utf8text `The name of the [Trend Definition](https://wiki.xina.io/link/170#bkmrk-trend-definitions) to generate the trend for. If provided, then the `profiles`, `trend_conf`, and `plot_conf` will be loaded from it.
label`utf8text`The text that will be used to name the files and final zip file. The format will be like `2024_06_12_00_00_00_2024_06_12_00_20_00_profile_label`
profiles`set(utf8string)`Name of profile(s) to include in trend
trend\_conf`struct_trend_conf`See [struct\_trend\_conf](https://wiki.xina.io/link/170#bkmrk-struct_trend_conf-js)
plot\_conf`jsonobject`See [trend plot conf](https://wiki.xina.io/link/170#bkmrk-plot_conf-jsonobject-1)
**Example conf:** This example performs a trend export with fields provided directly in the conf object. ```json { "label": "Test_Trend_From_Conf", "desc": "This is a test trend. The Trend parameters are provided in the conf.", "model": "model.path", "copy": true, "profiles": [ "TEST_PROFILE" ], "trend_conf": { "t": [ { "start": "2024-11-01T00:00:00Z", "end": "2024-11-01T00:10:00Z" } ], "bin_minutes": 1, "disable_filter": false, "intervals": null }, "plot_conf": {} } ``` In this example, the trend will be generated from an existing [Trend Definition](https://wiki.xina.io/link/170#bkmrk-trend-definitions) named `TEST_TREND`. ``` { "trend": "TEST_TREND", "model": "model.path", "copy": true } ```