From ff419fb35075fcb75b84d89cda62a2da84be8f72 Mon Sep 17 00:00:00 2001 From: Andrew Kapuscinski <akapusci@nrao.edu> Date: Thu, 2 Dec 2021 13:39:04 -0500 Subject: [PATCH] WS-810 remove containerized ngas --- .gitignore | 1 + Dockerfile.ngas | 10 - docker-compose.local.yml | 13 - local_ngas_root/cfg/ngamsServer.conf | 531 --------------------------- 4 files changed, 1 insertion(+), 554 deletions(-) delete mode 100644 Dockerfile.ngas delete mode 100644 local_ngas_root/cfg/ngamsServer.conf diff --git a/.gitignore b/.gitignore index 8f727755f..def1875f8 100644 --- a/.gitignore +++ b/.gitignore @@ -71,6 +71,7 @@ services/notification/notification.log **/coverage.json pyproject.toml package-lock.json +**/.hypothesis # Ignore docker volume mount points services/**/**/apps diff --git a/Dockerfile.ngas b/Dockerfile.ngas deleted file mode 100644 index ff7f77bda..000000000 --- a/Dockerfile.ngas +++ /dev/null @@ -1,10 +0,0 @@ -FROM icrar/ngas:11.0.2 - -# Get postgres/mysql development stuff in the image -RUN yum -y install epel-release && \ - yum install -y postgresql-libs - -USER ngas -RUN ./home/ngas/ngas_rt/bin/pip install psycopg2-binary==2.7.7 - -USER root diff --git a/docker-compose.local.yml b/docker-compose.local.yml index b3b51466e..94e8f09aa 100644 --- a/docker-compose.local.yml +++ b/docker-compose.local.yml @@ -55,19 +55,6 @@ services: - ./apps/cli/executables/pexable/:/config/apps/cli/executables/pexable/ - ./lustre/aoc/cluster/pipeline/docker/workspaces/sbin:/lustre/aoc/cluster/pipeline/docker/workspaces/sbin - ngas: - build: - context: . - dockerfile: ./Dockerfile.ngas - depends_on: - - db - ports: - - "7777:7777" - volumes: - - ./local_ngas_root:/home/ngas/NGAS - profiles: - - ngas - schema: build: context: ./schema/ diff --git a/local_ngas_root/cfg/ngamsServer.conf b/local_ngas_root/cfg/ngamsServer.conf deleted file mode 100644 index 52dbe8049..000000000 --- a/local_ngas_root/cfg/ngamsServer.conf +++ /dev/null @@ -1,531 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE NgamsCfg> -<!-- - Sample configuration file distributed with NGAS. - ICRAR - International Centre for Radio Astronomy Research - (c) UWA - The University of Western Australia, 2017 - Copyright by UWA (in the framework of the ICRAR) - All rights reserved - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, - MA 02111-1307 USA ---> - -<!-- -Sample configuration file distributed with NGAS. -This file pretends to show users how a server is configured, and all the -knobs and levers that can be toggled to change the behaviour of the server. -It offers secure default values for most options, so it should be safe to use -as a starting point to write your own configuration files. -Each high-level XML element contains a description of what topic it covers, -and which attributes and values are accepted. -For more information on the configuration options, visit NGAS's documentation at -https://ngas.readthedocs.io/en/latest/ -Quick-start -=========== -To quickly adapt this file to your needs: - * Adjust the Server.RootDirectory attribute to your NGAS root directory - * Adjust the Server.ArchiveName to a meaningful name for your archive - * Adjust the <Db> XML element to point to your database -About time amounts -================== -Some time amounts are expresed using a DTHH:mm:ss format, with D, HH, mm and ss -representing days, hours, minutes and seconds, respectivelly. A shorter version -is also accepted in the form of HH:mm (without :ss). Because this is confusing -future versions of NGAS will not support this format anymore, and will change -to simply use seconds everywhere. Once this change takes effect the old format -will still be supported for a few versions, but warning messages will appear so -users update their configuration files. -About secrets -============= -Some secrets (like Authorization passwords) are expressed in this configuration -file using base64 encoding. This will change in future versions of NGAS, where -passwords will be expressed literally. ---> -<NgamsCfg Id="ngamsCfg"> - - - - - <!-- - ======================================================================== - High-level server-wide configuration items - ======================================================================== - --> - - <!-- - Server configuration. - The NGAS HTTP server listens for requests in the address indicated - by the IpAddress/PortNo pair, and attends up to MaxSimReqs simultaneous - requests. It acts as a proxy for requests that must be answered by other - servers in the same cluster if ProxyMode is set; otherwise clients receive - a redirect response instead. - Any disk found by the server will be considered as being part of the - abstract archive ArchiveName. Access to the disk, plus other block-based - operations performed by the server (e.g., network read/write and - checksum calculation) will be performed using BlockSize block size. - Finally, a list of colon-separated directories containing python - packages and modules can be specified using the PluginsPath attribute. - This directories will be added to the sys.path of the NGAS server, - allowing users to install their own code separately from the NGAS - installation, which might not even be writable. - --> - <Server Id="Server-MWA" - RootDirectory="/home/ngas/NGAS" ArchiveName="LocalWorkspacesArchive" BlockSize="65536" - IpAddress="127.0.0.1" PortNo="7777" MaxSimReqs="10" - ProxyMode="0"/> - - <!-- - Authorization and authentication. - Authorization is performed using Basic HTTP authentication. - Usernames and passwords are defined on each of the User - sub-elements below. Passwords are base64-encoded. For each user, a - comma-separated list of the commands they are allow to use can be defined - (with "*" serving as a wildcard to indicate all commands). - Authorization can be enabled/disabled fully through the Enable attribute. - --> - <Authorization Id="Authorization" Enable="0"> - <User Name="user1" Password="dXNlcjE=" Commands="*"/> - <User Name="user2" Password="dXNlcjI=" Commands="RETRIEVE"/> - <User Name="user3" Password="dXNlcjM=" Commands="ARCHIVE"/> - </Authorization> - - <!-- - Logging configuration - The NGAS server outputs its logging to three different sinks: - the stdout, a (rotating) logfile, and syslog. - The stdout output is not configured but via a command-line parameter. - In a real-world setup the NGAS server will run in the background, - so there is no point on configuring stdout logging here. - Logfile output is configured via LocalLogFile, which indicates the - logfile. Statements with level <= LocalLogLevel appear in the logfile. - The logfile is rotated with a LogRotateInt interval (expressed as ddTHH:mm:ss), - and LogRotateCache files are maintained before they start getting - deleted. - Syslog output is enabled if SysLog is 1. Statements are prefixed with - SysLogPrefix before sent to syslog. - Logging levels are interpreted like this: - 0 = NONE, 1 = ERROR, 2 = WARNING, 3 = NOTICE, 4 = INFO, 5 = DEBUG. - The flag ArchiveRotatedLogfiles controls whether the rotated log files - are archived (=1) on the host or not (=0). - --> - <Log Id="Log" LocalLogFile="log/LogFile.nglog" LocalLogLevel="4" - LogRotateCache="30" LogRotateInt="01T00:00:00" SysLog="0" - SysLogPrefix="ngas" ArchiveRotatedLogfiles="0"/> - - <!-- - Archiving configuration - The FreeSpaceDiskChangeMb and MinFreeSpaceWarningMb specify how much - available free space in the disks will trigger an error to change the - disk, and a warning email alerting about the condition, respectivelly. - The PathPrefix is the top-level directory on each volume under which - NGAS will store incoming data. Data will be replicated during archiving - from the Main disk to a Replication disk if Replication is set to 1. - If BackLogBuffering is set to 1, then failures during ARCHIVE commands - *might* be resolved automatically by NGAS asynchronously. In such - situations, backlogged data sits temporarily in the - BackLogBufferDirectory. - --> - <ArchiveHandling Id="ArchiveHandling" - BackLogBufferDirectory="." BackLogBuffering="0" - FreeSpaceDiskChangeMb="200" MinFreeSpaceWarningMb="200" - PathPrefix="MWAArchive" Replication="0"/> - - <!-- - Set of actions this server is allowed to perform - Servers can be allowed to process archive requests, processing requests, - remove requests and/or retrieve requests. - --> - <Permissions Id="Permissions" AllowArchiveReq="1" AllowProcessingReq="1" - AllowRemoveReq="1" AllowRetrieveReq="1"/> - - <!-- - Database connectivity - NGAS uses the PEP-249-compliant module indicated by Interface to - connect to the central database. This driver is wrapped by a - connection pool, which will hold a maximum of MaxPoolConnections - connections. When a new connection is established by the pool to - the database server, the SQL statements specified in the sql attribute - of the SessionSql XML sub-elements are executed. This could be useful, - for instance, to switch to a different database before running any - queries, if required, but could be used for other purposes. - Because of historical reasons, some database schemas had a "ignore" - column in the ngas_files table rather than a "file_ignore" column. - If you are creating a database from scratch, you should prefer - "file_ignore" (which is what we use in the SQL scripts we ship with - NGAS to create databases from scratch), but if you have an existing - database with "ignore" you can still configure NGAS to use that name. - The UseFileIgnore attribute controls this. It defaults to "true", - in which case "file_ignore" will be used throughout the code; - otherwise "ignore" will be used instead. - The Snapshot attribute should be considered unsafe, and (unless you - know exactly what you are doing) should be left set to "0". - Any other parameter will be used verbatim as keyword arguments - to the connect method of the PEP-249 driver. - Example: If the central database is a PostgreSQL server, and is - using the old "ignore" column name one can setup this element - to be: - <Db Id="Db" Snapshot="0" Interface="psycopg2" UseFileIgnore="false" - host="db-server.example.com" dbname="db-name" user="db-user" - password="password"/> - --> - <!-- <Db Id="Db-Element" Snapshot="0" Interface="sqlite3" - MaxPoolConnections="5" UseFileIgnore="true" - database="/tmp/ngas.sqlite"/> --> - <Db Id="Db" Snapshot="0" Interface="psycopg2" UseFileIgnore="true" - host="db" dbname="ngas" user="archive" - password="docker"/> - - <!-- - E-mail notification setup - Under certain circumstances emails can be sent by NGAS to different - recipients. Notifications are sent to the SmtpHost SMTP server, and - appear as sent by Sender. Depending on the event generating the email, - one of the addresses will be used. Email sending can be disabled, - although even when disabled some notifications (that are considered - too important to be missed) will still be sent. - If messages cannot be sent for any reason, they are kept internally - by NGAS for a maximum of time defined by MaxRetentionTime, or until - MaxRetentionSize messages are hit. - --> - <Notification Id="Notification" - Active="0" MaxRetentionSize="1" MaxRetentionTime="00T00:30:00" - Sender="ngas@host.com" SmtpHost="localhost"> - <AlertNotification> - <EmailRecipient Address="address@example.com"/> - </AlertNotification> - <ErrorNotification> - <EmailRecipient Address="address@example.com"/> - </ErrorNotification> - <DiskSpaceNotification> - <EmailRecipient Address="address@example.com"/> - </DiskSpaceNotification> - <DiskChangeNotification> - <EmailRecipient Address="address@example.com"/> - </DiskChangeNotification> - <NoDiskSpaceNotification> - <EmailRecipient Address="address@example.com"/> - </NoDiskSpaceNotification> - <DataCheckNotification> - <EmailRecipient Address="address@example.com"/> - </DataCheckNotification> - </Notification> - - - - - <!-- - ======================================================================== - Background tasks - ======================================================================== - --> - - <!-- - Configures the Janitor service. - The Janitor service runs a number of house-keeping tasks in the - background with a given period (specified via SuspensionTime). - One of the tasks of the Janitor service is the check that the - filesystems where files are being stored in have enough space to - keep storing new files (and if not, send the server to OFFLINE - state). This behavior is controlled via the MinSpaceSysDirMb - attribute, which indicates how much space should always be available - on each filesystem. - Users can also specify extra functionality to be run during each - janitor iteration. To do this, PlugIn XML sub-elements can be defined - inside the JanitorThread element, each specifying a Name attribute - pointing to a fully-qualified python module name. See NGAS's - documentation for more details. - --> - <JanitorThread Id="JanitorThread-Std" SuspensionTime="0T00:10:00" - MinSpaceSysDirMb="500"/> - - <!-- - Caching control configuration - If enabled (Enable="1"), the caching control service automatically - removes data from the server when certain criteria are met. - Files are removed from the cache if any of the following is true - for them: 1) they have been in the cache for more than a specified - maximum time, expressed in seconds (e.g., MaxTime="86400" for a full - day), 2) the total volume of files in the cache has reached the - specified limit (e.g., MaxCacheSize="1099511627776" to specify 1 TBs), - 3) a maximum number of files has been reached (e.g., MaxFiles="1000" - for a maximum caching of 1000 files), and 4) A user-specific plugin, - specified via the CacheControlPlugIn (a fully-qualified python module - name) and the CacheControlPlugInPars parameters, which determines - whether a particular file should be deleted or not. - If any of these attributes is missing, the corresponding criterion - is not applied. In the case of MaxCacheSize and MaxFiles, eligible - files are selected FIFO-wise; that is, older files are removed first. - On top of all the above, if the Subscription service is enabled files - will only be eligible for deletion after they are successfully - transmitted to all their subscribers. At the moment this is - specified by setting CheckCanBeDeleted="1", but in future releases - this will change and the behaviour will be implicit. - --> - <Caching Enable="0" Period="0T00:30:00" MaxCacheSize="1099511627776" - CheckCanBeDeleted="1"/> - - <!-- - Data Checker Thread configuration - If enabled (Active="1"), the checksum of the files stored in the - NGAS server will be periodically re-calculated (with a period of - MinCycle) and compared against the respective checksum stored in the - database. A summary report will be generated at the end and e-mailed - to the corresponding recipient (see the Notification configuration - element) if there are errors, or if the ForceNotif attribute is - set to 1. - The data checker thread can also be configured to perform a simple file - scanning check (if Scan is "1") instead of a full checksum calculation - and comparison. - --> - <DataCheckThread Id="DataCheckThread" Active="0" Scan="0" - ForceNotif="1" MaxProcs="4" MinCycle="01T00:00:00"/> - - <!-- - A collection of system-level plug-ins - These plug-ins are used for different purposes, either by a command or - by the core system. Each specifies a name (a python module with that name, - offering a function with the same name) and an optional set of comma-separated - key=value parameter pairs. - --> - <SystemPlugIns Id="SystemPlugIns-Std" - LabelPrinterPlugIn="-" LabelPrinterPlugInPars="-" - OfflinePlugIn="ngamsGenericOfflinePlugIn" OfflinePlugInPars="unmount=0" - OnlinePlugIn="ngamsGenericOnlinePlugIn" OnlinePlugInPars="" - DiskSyncPlugIn="" DiskSyncPlugInPars=""/> - - - - - <!-- - ======================================================================== - File types, storage organisation, and processing - ======================================================================== - --> - - - <!-- - Mime type definitions. - Here mime types, and their associated default extensions, - are defined. - --> - <MimeTypes Id="MimeTypes-Std"> - <MimeTypeMap Extension="fits" MimeType="image/x-fits"/> - <MimeTypeMap Extension="nglog" MimeType="ngas/nglog"/> - <MimeTypeMap Extension="nglog.gz" MimeType="application/x-nglog"/> - <MimeTypeMap Extension="txt" MimeType="text/ascii"/> - <MimeTypeMap Extension="log" MimeType="text/log-file"/> - <MimeTypeMap Extension="log.Z" MimeType="application/x-clog"/> - <MimeTypeMap Extension="paf" MimeType="ngas/paf"/> - <MimeTypeMap Extension="fits.gz" MimeType="application/x-gfits"/> - <MimeTypeMap Extension="fits.Z" MimeType="application/x-cfits"/> - <MimeTypeMap Extension="hfits" MimeType="application/x-hfits"/> - <MimeTypeMap Extension="hdr" MimeType="image/x-fitshdr"/> - <MimeTypeMap Extension="tar" MimeType="application/x-tar"/> - <MimeTypeMap Extension="tar.gz" MimeType="application/x-gtar"/> - <MimeTypeMap Extension="pdf" MimeType="application/pdf"/> - <MimeTypeMap Extension="msg" MimeType="multialma/related"/> - <MimeTypeMap Extension="bin" MimeType="application/octet-stream"/> - </MimeTypes> - - <!-- - Storage organisation. - NGAS storage is organised in disks or volumes, which can be grouped - in StorageSets. For full details see - https://ngas.readthedocs.io/en/latest/ - --> - <StorageSets> - <StorageSet DiskLabel="BULK" MainDiskSlotId="volume1" Mutex="0" - Synchronize="1" StorageSetId="volume1"/> - <StorageSet DiskLabel="BULK" MainDiskSlotId="volume2" Mutex="0" - StorageSetId="volume2" Synchronize="1"/> - <StorageSet DiskLabel="BULK" MainDiskSlotId="volume3" Mutex="0" - StorageSetId="volume3" Synchronize="1"/> - </StorageSets> - - <!-- - Stream definitions - With the definitions of mime types and storage sets, users define - which files end up in which disks depending on their storage sets. - This logic is obeyed but some (but not all) archiving commands. - On top of that, streams also define which plug-in should be applied - to each mapped mime type (although this bit of configuration will - be moved in the future to the MimeTypes element). - For full details on Streams and storage organisation visit: - https://ngas.readthedocs.io/en/latest/ - --> - <Streams> - <Stream MimeType="application/octet-stream" PlugIn="ngamsGenDapi" PlugInPars=""> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - <Stream MimeType="image/x-fits" PlugIn="ngamsGenDapi"> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - <Stream MimeType="cal/x-fits" PlugIn="ngamsCalibDapi" PlugInPars=""> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - <Stream MimeType="cal/x-tfits" PlugIn="ngamsCalibDapi" PlugInPars=""> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - <Stream MimeType="non/existing" PlugIn="ngamsNonExisting" PlugInPars=""> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - <Stream MimeType="application/x-cfits" PlugIn="ngamsGenDapi"> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - <Stream MimeType="application/x-gfits" PlugIn="ngamsGenDapi"> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - <Stream MimeType="ngas/nglog" PlugIn="ngamsNgLogPlugIn" PlugInPars=""> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - <Stream MimeType="text/ascii" PlugIn="ngamsGenDapi" PlugInPars=""> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - <Stream MimeType="text/log-file" PlugIn="ngamsNgLogPlugIn" PlugInPars=""> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - <Stream MimeType="application/x-tar" PlugIn="ngasTarBallPlugIn" PlugInPars=""> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - <Stream MimeType="multialma/related" PlugIn="ngamsSdmMultipart" PlugInPars=""> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - <Stream MimeType="application/pdf" PlugIn="ngamsGenDapi" PlugInPars=""> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - <Stream MimeType="application/x-gtar" PlugIn="ngamsGenDapi" PlugInPars=""> - <StorageSetRef StorageSetId="volume1"/> - <StorageSetRef StorageSetId="volume2"/> - <StorageSetRef StorageSetId="volume3"/> - </Stream> - </Streams> - - <!-- - Processing setup - When files are retrieved from an NGAS server, they can be processed - before sent back to the client. This behaviour is controlled by these - plug-ins, which specify which mime types are allowed to be processed - by which plug-in (users specify in the HTTP request which plugin - they want to use for processing). - Temporary files used during processing are stored under a "processing" - directory under the directory indicated by ProcessingDirectory, - which can be relative to the NGAS root directory - --> - <Processing Id="Processing-Std" ProcessingDirectory="."> - <PlugIn Name="ngamsEsoArchDppi" PlugInPars=""> - <MimeType Name="image/x-fits"/> - <MimeType Name="application/x-gfits"/> - <MimeType Name="application/x-cfits"/> - </PlugIn> - <PlugIn Name="ngamsExtractFitsHdrDppi" PlugInPars=""> - <MimeType Name="image/x-fits"/> - <MimeType Name="application/x-gfits"/> - <MimeType Name="application/x-cfits"/> - </PlugIn> - <PlugIn Name="ngasWfiPreview" PlugInPars=""> - <MimeType Name="image/x-fits"/> - <MimeType Name="application/x-gfits"/> - <MimeType Name="application/x-cfits"/> - </PlugIn> - </Processing> - - <!-- - Plug-in definitions for the REGISTER command - --> - <Register Id="Register-Std"> - <PlugIn Name="ngamsFitsRegPlugIn" - PlugInPars="checksum_util=utilFitsChecksum, - checksum_result=0/0000000000000000"> - <MimeType Name="image/x-fits"/> - <MimeType Name="application/x-gfits"/> - <MimeType Name="application/x-cfits"/> - </PlugIn> - </Register> - - <!-- - Host suspension configuration - Under some circumstances users may want to configure NGAS hosts to - suspend themselves if they have been idle for a long time. If enabled - (IdleSuspension="1"), a host H will suspend itself after being - IdleSuspensionTime seconds idle using SuspensionPlugIn (and its - SuspensionPlugInPars). Before suspending themselves, they register - a wake-up call with the WakeUpServerHost, who will wake wake up - host H using WakeUpPlugIn and WakeUpPlugInPars, and a timeout of - WakeUpCallTimeOut. - --> - <HostSuspension Id="HostSuspension" IdleSuspension="0" IdleSuspensionTime="60" - SuspensionPlugIn="ngamsSuspensionPlugIn" - SuspensionPlugInPars="--SuspensionPlugInPars--" - WakeUpCallTimeOut="200" WakeUpPlugIn="ngamsWakeUpPlugIn" - WakeUpPlugInPars="eth0,eth1" WakeUpServerHost="my_wakeup_host"/> - - <!-- - Pre-defined subscriptions. - These subscrptions are incorporated into the list of subscriptions managed by the server - at server startup time. If the subscriptions exist in the subscription database (which is - the official source of subscription information) then no action is taken. Otherwise they - are added to the database, and will start being used immediately. - Note that these elements define data flowing INTO our server from the server in - <HostId>:<PortNo> rather than the other way around. - --> - <SubscriptionDef Id="SubscriptionDef" AutoUnsubscribe="1" BackLogExpTime="28T00:00:00" - Enable="0" SuspensionTime="0T00:03:00"> - <Subscription HostId="HostId1" - PortNo="1234" - Priority="1" - SubscriberUrl="http://test.url1" - FilterPlugIn="FilterPlugIn1" - FilterPlugInPars="1,2,3,4"/> - <Subscription HostId="HostId2" - PortNo="5678" - Priority="2" - SubscriberUrl="http://test.url2" - FilterPlugIn="FilterPlugIn2" - FilterPlugInPars="5,6,7,8"/> - </SubscriptionDef> - - <!-- - Authentication to use for subscriptions. - This section specifies the authentication plugin to use when sending - files via the subscription system. See the documentation for more - information, or see the example plugin included below. - --> - <SubscriptionAuth Id="SubscriptionAuth" PlugInName="ngas_sub_auth_plugin"/> - -</NgamsCfg> -- GitLab