Source code for insights.parsers.satellite_mongodb

"""
Satellite MongoDB Commands
==========================

Parsers included in this module are:

MongoDBStorageEngine - command ``mongo pulp_database --eval 'db.serverStatus().storageEngine'``
-----------------------------------------------------------------------------------------------
MongoDBNonYumTypeRepos - command ``mongo pulp_database --eval 'db.repo_importers.find({"importer_type_id": { $ne: "yum_importer"}}).count()'``
----------------------------------------------------------------------------------------------------------------------------------------------

"""
from insights.core import CommandParser
from insights.core.exceptions import ParseException, SkipComponent
from insights.core.plugins import parser
from insights.specs import Specs


[docs] @parser(Specs.satellite_mongodb_storage_engine) class MongoDBStorageEngine(CommandParser, dict): """ Read the ``mongo pulp_database --eval 'db.serverStatus().storageEngine'`` command and save the storage engine attributes to a dict. Sample Output:: MongoDB shell version v3.4.9 connecting to: mongodb://127.0.0.1:27017/pulp_database MongoDB server version: 3.4.9 { "name" : "wiredTiger", "supportsCommittedReads" : true, "readOnly" : false, "persistent" : true } Examples:: >>> type(satellite_storage_engine) <class 'insights.parsers.satellite_mongodb.MongoDBStorageEngine'> >>> satellite_storage_engine['name'] 'wiredTiger' Raises:: SkipComponent: When there is no attribute in the output ParseException: When the storage engine attributes aren't in expected format """
[docs] def parse_content(self, content): start_parse = False for line in content: line = line.strip() if not start_parse and line == '{': start_parse = True continue if start_parse and line == '}': break if start_parse: try: name, value = [i.strip(' ,"') for i in line.split(':', 1)] self[name] = value except Exception: raise ParseException("Unable to parse the line: {0}".format(line)) if not self: raise SkipComponent("Cannot get storage engine from Satellite MongoDB")
[docs] @parser(Specs.satellite_non_yum_type_repos) class MongoDBNonYumTypeRepos(CommandParser): """ Read the ``mongo pulp_database --eval 'db.repo_importers.find({"importer_type_id": { $ne: "yum_importer"}}).count()'`` command and save the count to attribute named count. Sample Output:: MongoDB shell version v3.4.9 connecting to: mongodb://127.0.0.1:27017/pulp_database MongoDB server version: 3.4.9 0 Examples:: >>> type(satellite_non_yum_type_repos) <class 'insights.parsers.satellite_mongodb.MongoDBNonYumTypeRepos'> >>> satellite_non_yum_type_repos.count 0 Attributes:: count (int): The count of non-yum type repos in pulp_database Raises:: SkipComponent: When the output isn't in exptected format """
[docs] def parse_content(self, content): if len(content) != 4 or not content[3].isdigit(): raise SkipComponent("Unexpected output for MongoDBNonYumTypeRepos") self.count = int(content[3])