Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Cette page recense les modifications à apporter sur un module qui a été développer sur une version 02.07.XX afin de le rendre utilisable sur une version 02.08.XX

Connexion à la base mongo


Info

En version inférieure, les connexions à la base MongoDb se font par le "SshTunnelMongoManager". En version 02.08.XX, cet objet et la méthode "get_connection" ont été modifiés. Le paramètre mongo_timeout a été retiré pour laisser la valeur par défautl utilisée dans pymongo à None. Le paramètre logger a été ajouté afin de passer le logger du module et que les logs soient plus clair. Pour plus de précision, voir la section suivante.


Exemples

02.07.XX

La signature de la méthode get_connection est la suivante :

Code Block
languagepy
titleVersion 02.07.XX
def get_connection(
	self,
	uri,			 
	replica_set='',
	fsync=False,
	ssh_user=None,
	use_ssh=False,
	ssh_keyfile=None,
	ssh_retry=1,
	mongo_timeout=DEFAULT_TIMEOUT, 
	requestor='(unknown requestor)',
	force_ssh_tunnel_recreation=False,
	tunnel_for='mongodb',
	tunnel_end_of_life_delay=30):


02.08.XX

La nouvelle signature est la suivante :

Code Block
languagepy
titleVersion 02.08.XX
def get_connection(
	self,
	uri,
	logger=None,
	replica_set='',
	fsync=False,
	ssh_user=None,
	use_ssh=False,
	ssh_keyfile=None,
	ssh_retry=1,			
	requestor='(unknown requestor)',
	force_ssh_tunnel_recreation=False,
	tunnel_for='mongodb',
	tunnel_end_of_life_delay=30):


Logger (facultatif)

En Version 02.07.XX, les logger utilisés étaient ceux de shinken par défaut. Le fonctionnement du logger a été modifié en 02.08.XX mais il est toujours possible de l'utiliser de la même manière.

Afin de profiter de ces améliorations, les classes héritant de BaseModule ont un attribut logger qui permet d'écrire un log avec le nom du module. Les logs écrit sont donc plus facile à identifier et filtrer.

Exemples

02.07.XX

Pour logger dans un module, il fallait utiliser la syntaxe suivante :

Code Block
languagepy
titleVersion 02.07.XX
from shinken.brokermodule import WorkerBasedBrokerModule
from shinken.log import logger

class MyOwnBrokerModule(WorkerBasedBrokerModule):
    def my_method(self):
        logger.info(self.get_name() 'Some informations here')


02.08.XX

Pour logger dans un module, il suffit d'utiliser la syntaxe suivante :


Code Block
languagepy
titleVersion 02.08.XX
from shinken.brokermodule import WorkerBasedBrokerModule

class MyOwnBrokerModule(WorkerBasedBrokerModule):
    def my_method(self):
        self.logger.info('Some informations here')