Skip to content

Commit

Permalink
Merge branch 'development' into issue974
Browse files Browse the repository at this point in the history
  • Loading branch information
petersilva committed Mar 22, 2024
2 parents 2fbd8b5 + 9b7399d commit 895c3d3
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 95 deletions.
29 changes: 8 additions & 21 deletions docs/source/Explanation/CommandLineGuide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -934,7 +934,7 @@ POLLING

Polling is doing the same job as a post, except for files on a remote server.
In the case of a poll, the post will have its url built from the *pollUrl*
option, with the product's path (*directory*/"matched file"). There is one
option, with the product's path (*path*/"matched file"). There is one
post per file. The file's size is taken from the directory "ls"... but its
checksum cannot be determined, so the default identity method is "cod", asking
clients to calculate the identity Checksum On Download.
Expand All @@ -961,7 +961,7 @@ Refer to `sr_post(7) <../Reference/sr_post.7.html>`_ - to understand the complet
These options set what files the user wants to be notified for and where
it will be placed, and under which name.

- **directory <path> (default: .)**
- **path <path> (default: .)**
- **accept <regexp pattern> [rename=] (must be set)**
- **reject <regexp pattern> (optional)**
- **permDefault <integer> (default: 0o400)**
Expand All @@ -970,28 +970,16 @@ These options set what files the user wants to be notified for and where
nodupe_fileAgeMax should be less than nodupe_ttl when using duplicate suppression,
to avoid re-ingesting of files that have aged out of the nodupe cache.

The option *filename* can be used to set a global rename to the products.
Ex.:

**filename rename=/naefs/grib2/**

For all posts created, the *rename* option would be set to '/naefs/grib2/filename'
because I specified a directory (path that ends with /).

The option *directory* defines where to get the files on the server.
The option *path* defines where to get the files on the server.
Combined with **accept** / **reject** options, the user can select the
files of interest and their directories of residence.

The **accept** and **reject** options use regular expressions (regexp) to match URL.
These options are processed sequentially.
The URL of a file that matches a **reject** pattern is not published.
Files matching an **accept** pattern are published.
Again a *rename* can be added to the *accept* option... matching products
for that *accept* option would get renamed as described... unless the *accept* matches
one file, the *rename* option should describe a directory into which the files
will be placed (prepending instead of replacing the file name).

The directory can have some patterns. These supported patterns concern date/time .
The path can have some patterns. These supported patterns concern date/time .
They are fixed...

**${YYYY} current year**
Expand All @@ -1006,14 +994,13 @@ They are fixed...

::

ex. directory /mylocaldirectory/myradars
accept .*RADAR.*
ex. path /mylocaldirectory/myradars
path /mylocaldirectory/mygribs
path /mylocaldirectory/${YYYYMMDD}/mydailies

directory /mylocaldirectory/mygribs
accept .*RADAR.*
reject .*Reg.*
accept .*GRIB.*

directory /mylocaldirectory/${YYYYMMDD}/mydailies
accept .*observations.*

The **permDefault** option allows users to specify a linux-style numeric octal
Expand Down
8 changes: 8 additions & 0 deletions docs/source/How2Guides/UPGRADING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,14 @@ Installation Instructions
git
---

3.0.53
------

*CHANGE*: *directory* option in poll will no longer be converted to *path* silently.
Use *path* explicitly instead. It is still converted when upgrading from v2 with
*sr3 convert*, but in v3 configurations, *directory* now acts as it does in all other
components as a download specifier.

3.0.52
------

Expand Down
9 changes: 9 additions & 0 deletions docs/source/fr/CommentFaire/MiseANiveau.rst
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,15 @@ Instructions d’installation
git
---

3.0.53
------

*CHANGEMENT* : l'option *directory* dans le sondage ne sera plus convertie en *path* silencieusement.
Utilisez *path* explicitement à la place. Il est toujours converti lors de la mise à niveau depuis la v2 avec
*sr3 convert*, mais dans les configurations v3, *directory* agit désormais comme dans tous les autres
composants comme spécificateur de chemin de destination de téléchargement.


3.0.52
------

Expand Down
40 changes: 14 additions & 26 deletions docs/source/fr/Explication/GuideLigneDeCommande.rst
Original file line number Diff line number Diff line change
Expand Up @@ -941,9 +941,9 @@ SONDAGE (POLLING)

On peut faire le même travail que post, sauf que les fichiers sont sur un serveur distant.
Dans le cas d’un sondage (en anglais: poll), l’URL de la publication sera générée à partir de l´option *pollUrl*,
avec le chemin d’accès du produit (*directory*/« fichier correspondant »). Il y en a une publication
avec le chemin d’accès du produit (*path* « fichier correspondant »). Il y en a une publication
par fichier. La taille du fichier est prise dans le répertoire « ls »... mais sa somme
de contrôle ne peut pas être déterminée, lors la stratégie de calcul de est ¨cod¨ qui signifie
de contrôle ne peut pas être déterminée, alors la stratégie de calcul de est ¨cod¨ qui signifie
que ca devrait être calculé lors du transfert.

Pour définir la fréquence de sondage, on se sert de *scheduled_*, tel que::
Expand All @@ -967,7 +967,7 @@ Référez `sr3_post(7) <../Reference/sr3_post.7.html>`_ - pour comprendre le for
Ces options définissent les fichiers pour lesquels l’utilisateur souhaite être averti et où
il sera placé, et sous quel nom.

- **directory <path> (par défaut: .)**
- **path <path> (par défaut: .)**
- **accept <regexp pattern> [rename=] (doit être défini)**
- **reject <regexp pattern> (facultatif)**
- **permDefault <integer> (par défaut: 0o400)**
Expand All @@ -976,15 +976,7 @@ Ces options définissent les fichiers pour lesquels l’utilisateur souhaite êt
fileAgeMax doit être inférieur à nodupe_ttl lors de l'utilisation de la suppression des doublons,
pour éviter la réingestion de fichiers obsolètes une fois partie du cache nodupe.

L’option *filename* peut être utilisée pour définir un changement de nom global pour les produits.
Ex.:

**filename rename=/naefs/grib2/**

Pour tous les messages créés, l’option *rename* serait définie à '/naefs/grib2/filename'
parce que j’ai spécifié un répertoire (chemin qui se termine par /).

L’option *directory* définit où obtenir les fichiers sur le serveur.
L’option *path* définit où obtenir les fichiers sur le serveur.
Combiné avec les options **accept** / **reject**, l’utilisateur peut sélectionner
les fichiers d’intérêt et leurs répertoires de résidence.

Expand All @@ -993,10 +985,6 @@ une correspondance avec l’URL.
Ces options sont traitées séquentiellement.
L’URL d’un fichier qui correspond à un modèle **reject** n’est pas publiée.
Les fichiers correspondant à un modèle **accept** sont publiés.
Encore une fois, un *rename* peut être ajouté à l’option *accept*... les produits qui correspondent
a l'option *accept* seront renommé comme décrit... à moins que le *accept* corresponde à
un fichier, l’option *rename* doit décrire un répertoire dans lequel les fichiers
seront placé (en préfix au lieu de remplacer le nom du fichier).

Le répertoire peut avoir des modèles. Ces modèles pris en charge concernent la date/l’heure.
Ils sont fixes...
Expand All @@ -1013,14 +1001,14 @@ Ils sont fixes...

::

ex. directory /mylocaldirectory/myradars
accept .*RADAR.*
ex. path /mylocaldirectory/myradars
path /mylocaldirectory/mygribs
path /mylocaldirectory/${YYYYMMDD}/mydailies

directory /mylocaldirectory/mygribs

accept .*RADAR.*
reject .*Reg.*
accept .*GRIB.*

directory /mylocaldirectory/${YYYYMMDD}/mydailies
accept .*observations.*

L’option **permDefault** permet aux utilisateurs de spécifier un masque d'autorisation octal numérique
Expand All @@ -1034,10 +1022,9 @@ Les options **permDefault** spécifient un masque, c’est-à-dire que les autor
au moins ce qui est spécifié.

Comme pour tous les autres composants, l’option **vip** peut être utilisée pour indiquer
qu’un poll doit être actif sur seulement un seul nœud d’un cluster. Notez que quand
d’autres nœuds participant au poll et wu’ils n’ont pas le vip, ils
qu’un poll doit être actif sur seulement un seul nœud d’un cluster.

les fichiers qui sont plus vieux que fileAgeMax sont ignorés. Cela
Les fichiers qui sont plus vieux que fileAgeMax sont ignorés. Cela
peut être modifié à n’importe quelle limite de temps spécifiée dans les configurations en utilisant
l’option *fileAgeMax <duration>*. Par défaut, dans les composants
autre que poll, cette option est désactivé en étant défini à zéro (0). Comme il s’agit d’une
Expand Down Expand Up @@ -1128,8 +1115,9 @@ informe qu'il y a nouveau produit.

Le protocle de notification est défini ici `sr3_post(7) <../Reference/sr3_post.7.html>`_

**poll** se connecte à un *broker*. À toutes les secondes de *scheduled_interval* (où bien à des moment spécifié par *scheduled_hour* et *scheduled_minute*), il se connecte à
une *pollUrl* (sftp, ftp, ftps). Pour chacun des *directory* définis, les contenus sont listés.
**poll** se connecte à un *broker*. À toutes les secondes de *scheduled_interval* (où bien
à des moment spécifié par *scheduled_hour* et *scheduled_minute*), il se connecte à
une *pollUrl* (sftp, ftp, ftps). Pour chacun des *path* définis, les contenus sont listés.
Le poll est seulement destinée à être utilisée pour les fichiers récemment modifiés.
L’option *fileAgeMax* élimine les fichiers trop anciens. Lorsqu’un fichier correspondant
à un modèle donné est trouvé by *accept*, **poll** crée un message de notification pour ce produit.
Expand Down
5 changes: 3 additions & 2 deletions sarracenia/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -1447,8 +1447,6 @@ def parse_file(self, cfg, component=None):
k = 'sendTo'
elif k == 'broker' and component == 'poll' :
k = 'post_broker'
elif k == 'directory' and component == 'poll' :
k = 'path'

if (k in convert_to_v3):
self.log_flowcb_needed |= '_log' in k
Expand Down Expand Up @@ -1640,6 +1638,9 @@ def parse_file(self, cfg, component=None):
logger.error( f'{self.files}:{lineno} invalid entry for {k}: {i}. Must be one of: {set_choices[k]}' )

elif k in str_options:
if ( k == 'directory' ) and not self.download:
logger.info( f"{self.files}:{lineno} if download is false, directory has no effect" )

v = ' '.join(line[1:])
if v == 'None':
v=None
Expand Down
50 changes: 4 additions & 46 deletions sarracenia/flowcb/poll/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -421,12 +421,11 @@ def lsdir(self):
return False, {}, {}

def poll_directory(self, pdir):

#logger.debug("poll_directory %s %s" % (pdir))
npost = 0
msgs = []

# cd to that directory

logger.debug(" cd %s" % pdir)
ok = self.cd(pdir)
if not ok: return []
Expand Down Expand Up @@ -462,12 +461,6 @@ def poll_directory(self, pdir):

def poll_file_post(self, desc, destDir, remote_file):

FileOption = None
for mask in self.pulllst:
pattern, maskDir, maskFileOption, mask_regexp, accepting, mirror, strip, pstrip, flatten = mask
if mask_regexp.match(remote_file) and accepting:
FileOption = maskFileOption

path = destDir + '/' + remote_file

# posting a localfile
Expand Down Expand Up @@ -538,26 +531,11 @@ def poll_file_post(self, desc, destDir, remote_file):

# If there is a file operation, and it isn't a rename, then some fields are irrelevant/wrong.
if 'fileOp' in msg and 'rename' not in msg['fileOp']:
if 'Identity' in msg:
del msg['Indentity']
if 'identity' in msg:
del msg['identity']
if 'size' in msg:
del msg['size']

this_rename = self.o.rename

# FIX ME generalized fileOption
if FileOption is not None:
parts = FileOption.split('=')
option = parts[0].strip()
if option == 'rename' and len(parts) == 2:
this_rename = parts[1].strip()

if this_rename is not None and this_rename[-1] == '/':
this_rename += remote_file

if this_rename is not None:
msg['rename'] = this_rename

return [msg]

def poll_list_post(self, destDir, desclst, filelst):
Expand All @@ -581,20 +559,12 @@ def poll_list_post(self, destDir, desclst, filelst):

def poll(self) -> list:

# General Attributes

self.pulllst = []

msgs = []
# number of post files

npost = 0

# connection did not work

try:
self.dest.connect()
except:
# connection did not work
logger.error("sr_poll/post_new_url: unable to connect to %s" %
self.o.pollUrl)
logger.debug('Exception details: ', exc_info=True)
Expand All @@ -603,20 +573,8 @@ def poll(self) -> list:
time.sleep(nap)
return []

# loop on all directories where there are pulls to do

for destDir in self.o.path:

# setup of poll directory info

#self.pulllst = self.pulls[destDir]

#path = destDir
#path = path.replace('${', '')
#path = path.replace('}', '')
#path = path.replace('/', '_')
#lsPath = self.o.cfg_run_dir + os.sep + 'ls' + path

currentDir = self.o.variableExpansion(destDir)

if currentDir == '': currentDir = destDir
Expand Down

0 comments on commit 895c3d3

Please sign in to comment.