/usr/lib/python3/dist-packages/glances/outputs/glances_csv.py is in glances 2.1.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | # -*- coding: utf-8 -*-
#
# This file is part of Glances.
#
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
#
# Glances 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 3 of the License, or
# (at your option) any later version.
#
# Glances 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 program. If not, see <http://www.gnu.org/licenses/>.
"""CSV interface class."""
# Import sys libs
import sys
import csv
# Import Glances lib
from glances.core.glances_globals import logger
from glances.core.glances_globals import is_py3
# List of stats enabled in the CSV output
csv_stats_list = ['cpu', 'load', 'mem', 'memswap']
class GlancesCSV(object):
"""This class manages the CSV output."""
def __init__(self, args=None):
# CSV file name
self.csv_filename = args.output_csv
# Set the CSV output file
try:
if is_py3:
self.csv_file = open(self.csv_filename, 'w', newline='')
else:
self.csv_file = open(self.csv_filename, 'wb')
self.writer = csv.writer(self.csv_file)
except IOError as e:
logger.critical(_("Error: Cannot create the CSV file: {0}").format(e))
sys.exit(2)
logger.info(_("Stats dumped to CSV file: {0}").format(self.csv_filename))
def exit(self):
"""Close the CSV file."""
self.csv_file.close()
def update(self, stats):
"""Update stats in the CSV output file."""
all_stats = stats.getAll()
plugins = stats.getAllPlugins()
# Loop over available plugin
i = 0
for plugin in plugins:
if plugin in csv_stats_list:
fieldnames = all_stats[i].keys()
fieldvalues = all_stats[i].values()
# First line: header
csv_header = ['# ' + plugin + ': ' + '|'.join(fieldnames)]
self.writer.writerow(csv_header)
# Second line: stats
self.writer.writerow(list(fieldvalues))
i += 1
self.csv_file.flush()
|