Skip to content

Commit 2fdfdff

Browse files
committed
DL - Initial commit in GitHub
1 parent c8389e0 commit 2fdfdff

28 files changed

+70005
-0
lines changed

.gitignore

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.buildpath
2+
.directory
3+
.project
4+
.pydevproject
5+
.settings/*
6+
py/__pycache__/*
7+

AUTHORS.txt

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Daniel Léveillé <[email protected]>
2+
All of the code

CHANGES.txt

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
===============
2+
Release Notes
3+
===============
4+
5+
lists all changes between versions.
6+
7+
8+
**0.0.1**
9+
* development began August 2017.
10+
11+
* Initial release

LICENSE.txt

+340
Large diffs are not rendered by default.

MANIFEST.in

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
include AUTHORS.txt
2+
include LICENSE.txt
3+
include CHANGES.txt
4+
include README.rst
5+
6+
recursive-include sarrasemina *.py

RELEASE_NOTES

+290
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,290 @@
1+
2+
Le français suit (recherchez FRANCAIS)
3+
4+
5+
Sarracenia/dd_subscribe release notes
6+
7+
1- dd.weather.gc.ca (the MSC Datamart) is Environment Canada's public
8+
meteorological data access repository.
9+
10+
2- For each product posted on the Datamart, an AMQP message is
11+
immediately transmitted. This message contains :
12+
"md5sum filesize http://servername/ filepath".
13+
The product's URL is described by the last two fields.
14+
Any application which can subscribe to an AMQP service can
15+
receive notification of products being published and then retrieve
16+
them in real time via http. There is a wide variety of languages and
17+
platforms whereby this procedure can be implemented. Here you will
18+
find a simple demonstration client, "dd_subscribe". It is implemented
19+
in the Python language.
20+
21+
3- dd_subscribe is a python2 program that uses python-amqplib to receive
22+
these amqp notification messages, retrieve the products from the
23+
datamart via HTTP and place them in a chosen local directory.
24+
25+
4- dd_subscribe's usage is : dd_subscribe [-n] [-l logdir] config_file.
26+
By default, the program will automatically initiate product download
27+
upon notification. If you want dd_subscribe to simply display the
28+
notification message without retrieving the products,use the "-n"
29+
The -l option sets a logging directory, and a file named config_file_PID.log
30+
will be written.(where PID is the process id)
31+
32+
5- The config file is simple (see dd_subscribe manpage). To make
33+
things even easier, the example config files provided with the script
34+
contain valid configuration parameters that should be enough to get
35+
you started. The config files may contain :
36+
37+
a) credentials for the rabbitmq server. These options are
38+
39+
host default host dd.weather.gc.ca
40+
port default port 5672
41+
amqp-user default amqp-user anonymous
42+
amqp-password default amqp-password anonymous
43+
44+
45+
b) amqp exchange settings to be able to receive the desired notifications (URL)
46+
47+
exchange default exchange xpublic
48+
exchange_type default exchange_type topic
49+
subtopic no default ...
50+
51+
- subtopic replaces amqp exchange_key options
52+
- several subtopic options may be declared
53+
- to arrive at a valid subtopic, browse the datamart (http://dd.weather.gc.ca)
54+
and pick any directories where the products are interesting for you. For each
55+
directory, create a subtopicas follows:
56+
57+
subtopic directory1.subdirectory2.*.subdirectory4.#
58+
59+
where * replace a directory name (one * per directory)
60+
# stands for the remaining possibilities
61+
62+
c) amqp queue settings to be able to queue the desired notifications (URL)
63+
64+
queue default None
65+
durable default False
66+
expire default None
67+
68+
- queue sets the queue name. It should start with cmc.
69+
- expire is expressed in minutes... it sets how long should live a queue without connections
70+
- durable means write queue on disk if the rabbitmq server is stop/restarted...
71+
- by default, dd_subscribe creates a queue name that should be unique and starts with cmc
72+
and puts it into a file .<configname>.queue, where <configname> is the config filename.
73+
74+
d) http credentials (not used for now... might be implemented for restricted products)
75+
76+
http-user default http-user None
77+
http-password default http-password None
78+
79+
80+
e) delivery specifications
81+
82+
lock default lock .tmp
83+
directory default directory .
84+
accept default accept None
85+
reject default reject None
86+
mirror enabling mirror False
87+
flatten default flat char. '/'
88+
timeout default timeout 180
89+
90+
91+
- The 'lock' option is a suffix given to the file during the download
92+
and taken away when it is completed... This prevents the file from
93+
being processed prematurely.
94+
95+
- The 'directory' option defines the target directory on your server.
96+
Combined with accept/reject options, the user can select the
97+
files of interest and their directories of residence.
98+
Theses options are processed sequentially. A rejected product is never downloaded.
99+
Accepted products are placed in the closest directory declared above the 'accept'
100+
option that picked it. The accept and reject option use regexp to match URLs.
101+
The patterns in accept/reject clauses use regular expression syntax, more
102+
information here: https://en.wikipedia.org/wiki/Regular_expression
103+
briefly ´.´ is a one character wildcard matching any single character
104+
´*´ means ´any number of repetitions. so ´.*´ means any sequence of characters,
105+
(a wildcard.)
106+
107+
ex. directory /mylocal/myradars
108+
accept .*RADAR.*
109+
110+
directory /mylocal/mygribs
111+
reject .*Reg.*
112+
accept .*GRIB.*
113+
114+
- The option 'mirror', if set to True, will put the files into a directory tree
115+
similar to the one it resides on dd.weather.gc.ca except that the basename of
116+
the tree will be the path set by the directory option.
117+
118+
- The option 'flatten' sets a character that will be used to rename the file on the
119+
basis of its path name on dd.weather.gc.ca, replacing the '/' with the chosen
120+
character. The file will placed with that extended name in the directory defined
121+
by the 'directory' option.
122+
123+
- The option 'timeout' sets a limit in seconds of time under which the file should
124+
have been downloaded and placed under the proper directory/name... If the timeout
125+
is reached the download is retried ... until succes.
126+
127+
128+
6- Under samples/config you will find working configuration files, provided as is,
129+
without guaranty. Under samples/program you will find other programs we played with.
130+
131+
7- FUN FACT: sarracenia : another rare, mostly carnivorous, Canadian
132+
plant... (as are sundew,columbo)
133+
134+
_____________________________________________________________________________________
135+
136+
137+
FRANCAIS
138+
139+
Notes de publication pour sarracenia/dd_subscribe
140+
141+
1- dd.weather.gc.ca (le datamart du SMC) est le dépôt public de
142+
données météorologiques d'Environnement Canada
143+
144+
2- Chaque fois qu'un produit arrive dans le datamart, un message AMQP
145+
est immédiatement transmis. Ce message a la forme :
146+
"md5sum taillefichier http://servername/ filepath".
147+
Le URL du produit est décrit par les deux derniers chanps.
148+
Toute application capable de s'abonner à un service AMQP
149+
peut recevoir les notifications des produits en qui sont publiés et
150+
les récupérer en temps réel par HTTP. Il existe un grand nombre de
151+
langages et de plateformes qui peuvent être utilisées pour mettre en
152+
oeuvre cette procédure. Vous trouverez ici un script de démonstration
153+
simple, "dd_subscribe". Le script est écrit en Python.
154+
155+
3- dd_subscribe est un programme en python, utilisant python-amqplib pour
156+
recevoir les notification AMQP, récupérer les produits sur le datamart
157+
par HTTP et les placer dans un répertoire local choisi par l'usager.
158+
159+
160+
4- L'utilisation du programme: dd_subscribe [-n] [-l logdir] fichier_config.
161+
Par défaut, le programme télécharge immédiatement le
162+
produit lorsqu'une notification est reçue. Si vous voulez simplement
163+
afficher les notifications sans effectuer de téléchargement, utilisez
164+
l'option "-n". L'option "-l" quand a elle, définit un répertoire de
165+
logging et un fichier nomme "fichier_config_PID.log" sera écrit.
166+
(PID est le ID du process)
167+
168+
169+
5- Le fichier de configuration est simple (voir le manpage pour
170+
dd_subscribe). Pour faciliter encore les choses, les exemples de
171+
fichiers de configurations qui sont fournis avec le programme
172+
contiennent des paramètres valides qui devraient suffire pour
173+
commencer::
174+
175+
a) identifiants pour le serveur rabbitmq. Ces paramètres sont:
176+
177+
host default host dd.weather.gc.ca
178+
port default port 5672
179+
amqp-user default amqp-user anonymous
180+
amqp-password default amqp-password anonymous
181+
182+
183+
b) réglages d'échanges amqp permettant de recevoir les notifications (indiquant
184+
l'URL du produit)
185+
186+
exchange default exchange xpublic
187+
exchange_type default exchange_type topic
188+
subtopic no default ...
189+
190+
- le subtopic replace les clés d'échanges amqp (exchange_key)
191+
- il est permi de déclarer plusieurs subtopic
192+
- Pour déterminer une valeur correcte pour un subtopic, explorez le dépôt
193+
http://dd.weather.gc.ca et choisissez n'importe quel répertoire contenant des
194+
produits qui sont d'intérêt pour vous. Pour chacun de ces répertoires, spécifiez
195+
le subtopic comme suit:
196+
197+
subtopic directory1.subdirectory2.*.subdirectory4.#
198+
199+
ou * caractère de remplacement (wildcard)
200+
(un seul '*' per par répertoire)
201+
# signifie les possibilités restantes
202+
203+
c) réglages de la queue amqp permettant de recevoir les notifications
204+
205+
queue default None
206+
durable default False
207+
expire default None
208+
209+
- queue défini le nom de la queue, qui commence toujours avec cmc. Par défaut un nom de queue
210+
au hazard est créé et conserver dans un fichier nomme .fichier_config.queue
211+
- expire est un nombre de minutes... qui déclare la longueur de la vie d'une queue sans connection
212+
- durable permet d'écrire la queue sur disque si le serveur rabbitmq est arrêté ou redemarré
213+
- par defaut, dd_subscribe crée un nom de queue qui devrait être unique et l'enregistre dans
214+
un fichier nommé .<configname>.queue où <configname> est le nom du fichier de configuration.
215+
216+
217+
d) identifiant http (non utilisé en ce moment, pourrait l'être pour des produits
218+
à distribution restreinte)
219+
220+
http-user default http-user None
221+
http-password default http-password None
222+
223+
224+
e) paramètres de livraison
225+
226+
lock default lock .tmp
227+
directory default directory .
228+
accept default accept None
229+
reject default reject None
230+
mirror enabling mirror False
231+
flatten default flat char. '/'
232+
timeout default timeout 180
233+
234+
235+
- Le paramètre 'lock' contrôle le suffixe qui sera donné au
236+
fichier pendant le téléchargement qui sera retiré une fois la
237+
tâche complétée. Par ce moyen, le fichier en cours de
238+
téléchargement ne sera pas traité prématurément.
239+
240+
- Le paramètre 'directory' contrôle le répertoire où seront
241+
reçues les données sur votre serveur. En combinaison avec
242+
'accept/reject' vous pouvez gérer les fichiers qui sont
243+
téléchargés et leur répertoire de résidence.
244+
245+
Ces paramètres sont traités séquentiellement. Un produit
246+
rejeté n'est jamais téléchargé. Les produits acceptés sont
247+
placés dans le répertoire le plus récent qui ait été
248+
déclaré au-dessus du paramètre accept qui a été utilisé
249+
pour le sélectionner. Les paramètres accept et reject
250+
acceptent des expressions régulières pour la reconnaissance
251+
des URL. Plus d´information içi: https://fr.wikipedia.org/wiki/Expression_rationnelle
252+
brièvement:
253+
´.´ va accepter n´importe lequel caractère.
254+
´*´ indique une quantité indefinie de répétitions.
255+
Alors ´.*´ accept n´importe lequel séquence de caractères.
256+
257+
258+
ex. directory /home/steve/myradars
259+
accept .*RADAR.*
260+
261+
directory /home/julie/donnees/grib
262+
reject .*Reg.*
263+
accept .*GRIB.*
264+
265+
- Si vous donnez au paramètre 'mirror' la valeur 'True', les
266+
fichiers seront placés dans une structure de répertoires
267+
similaire à celle qui existe sur dd.weather.gc.ca. La racine
268+
de la structure sera le répertoire indiqué par le paramètre
269+
'directory'.
270+
271+
- Le paramètre 'flatten' permet de spécifier un caractère qui
272+
sera utilisé pour renommer le fichier d'après son chemin sur
273+
dd.weather.gc.ca, en remplaçant les '/' par le caractère
274+
choisi. Le fichier sera placé avec ce nom étendu dans le
275+
répertoire défini par le paramètre 'directory'.
276+
277+
- L'option 'timeout' défini une limite en seconds pour le temps ou le fichier
278+
est téléchargé et placé dans le répertoire/nom approprié... Si le timeout
279+
est dépassé, le download est repris... jusqu'à ce qu'il soit un succès.
280+
281+
6- Dans le répertoire samples/config vous trouverez des fichiers de
282+
configuration qui devraient fonctionner tels quels (sans
283+
garantie). Sous samples/program vous trouverez d'autres programmes
284+
avec lesquels nous avons expérimenté.
285+
286+
7- Détail distrayant: sarracenia est le nom latin de la sarracène, une
287+
plante canadienne rare et à prédominance carnivore (au même titre que la
288+
droséra et la columbo).
289+
290+

0 commit comments

Comments
 (0)