diff options
author | Vikraman Choudhury <vikraman.choudhury@gmail.com> | 2011-06-23 16:49:09 +0530 |
---|---|---|
committer | Vikraman Choudhury <vikraman.choudhury@gmail.com> | 2011-06-23 16:49:09 +0530 |
commit | 5f953a0c1c54257d5ba50c4c9a9502f38295afe2 (patch) | |
tree | f54120f79576df37e1a1975adb4281cc827e8df0 /client | |
parent | update ebuild (diff) | |
download | gentoostats-5f953a0c1c54257d5ba50c4c9a9502f38295afe2.tar.gz gentoostats-5f953a0c1c54257d5ba50c4c9a9502f38295afe2.tar.bz2 gentoostats-5f953a0c1c54257d5ba50c4c9a9502f38295afe2.zip |
allow masking payload fields
Diffstat (limited to 'client')
-rwxr-xr-x | client/gentoostats-send | 8 | ||||
-rw-r--r-- | client/gentoostats/payload.py | 83 | ||||
-rw-r--r-- | client/payload.cfg | 29 |
3 files changed, 82 insertions, 38 deletions
diff --git a/client/gentoostats-send b/client/gentoostats-send index 9a9cd39..b118e94 100755 --- a/client/gentoostats-send +++ b/client/gentoostats-send @@ -6,10 +6,10 @@ import sys import json import urllib, httplib -def getAuthInfo(): +def getAuthInfo(auth='/etc/gentoostats/auth.cfg'): config = ConfigParser.ConfigParser() - if len(config.read('/etc/gentoostats/auth.cfg')) == 0: - sys.stderr.write('Cannot read auth.cfg') + if len(config.read(auth)) == 0: + sys.stderr.write('Cannot read '+auth) sys.exit(1) try: @@ -18,7 +18,7 @@ def getAuthInfo(): auth_info = {'UUID' : uuid, 'PASSWD' : passwd} return auth_info except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): - sys.stderr.write('Malformed auth.cfg') + sys.stderr.write('Malformed auth config') sys.exit(1) def serialize(object, human=False): diff --git a/client/gentoostats/payload.py b/client/gentoostats/payload.py index 9553512..756496c 100644 --- a/client/gentoostats/payload.py +++ b/client/gentoostats/payload.py @@ -1,49 +1,64 @@ +import sys import pprint +import ConfigParser from gentoostats.environment import Environment from gentoostats.packages import Packages from gentoostats.metadata import Metadata class Payload(object): - def __init__(self): - self.payload = dict() - self.payload['PROTOCOL'] = 1 - self.update() + def __init__(self, configfile='/etc/gentoostats/payload.cfg'): + self.config = ConfigParser.ConfigParser() + if len(self.config.read(configfile)) == 0: + sys.stderr.write('Cannot read ' + configfile) + sys.exit(1) + + self.payload = dict() + self.payload['PROTOCOL'] = 1 + self.update() + + def __masked(self, section, item): + try: + return not self.config.getboolean(section, item) + except ConfigParser.NoOptionError: + return False + except (ConfigParser.NoSectionError, ValueError): + sys.stderr.write('Malformed payload config') + sys.exit(1) def update(self): + env = Environment() + self.payload['PLATFORM'] = 'Unknown' if self.__masked('ENV','PLATFORM') else env.getPlatform() + self.payload['LASTSYNC'] = 'Unknown' if self.__masked('ENV','LASTSYNC') else env.getLastSync() + self.payload['PROFILE'] = 'Unknown' if self.__masked('ENV','PROFILE') else env.getProfile() + + for var in ['ARCH','CHOST','CFLAGS','CXXFLAGS','FFLAGS','LDFLAGS','MAKEOPTS','SYNC']: + self.payload[var] = None if self.__masked('ENV',var) else env.getVar(var) + + for var in ['ACCEPT_KEYWORDS','LANG','GENTOO_MIRRORS','FEATURES','USE']: + self.payload[var] = [] if self.__masked('ENV',var) else env.getVar(var).split() - env = Environment() - self.payload['PLATFORM'] = env.getPlatform() - self.payload['LASTSYNC'] = env.getLastSync() - self.payload['PROFILE'] = env.getProfile() - - for var in ['ARCH','CHOST','CFLAGS','CXXFLAGS','FFLAGS','LDFLAGS','MAKEOPTS','SYNC']: - self.payload[var] = env.getVar(var) - - for var in ['ACCEPT_KEYWORDS','LANG','GENTOO_MIRRORS','FEATURES','USE']: - self.payload[var] = env.getVar(var).split() - - self.payload['PACKAGES'] = dict() - for cpv in Packages().getInstalledCPVs(): - m = Metadata(cpv) - p = dict() - p['REPO'] = m.getRepoName() - p['KEYWORD'] = m.getKeyword() - p['USE'] = dict() - p['USE']['PLUS'] = m.getPlusFlags() - p['USE']['MINUS'] = m.getMinusFlags() - p['USE']['UNSET'] = m.getUnsetFlags() - p['COUNTER'] = m.getCounter() - p['SIZE'] = m.getSize() - p['BUILD_TIME'] = m.getBuildTime() - self.payload['PACKAGES'][cpv] = p + self.payload['PACKAGES'] = dict() + for cpv in Packages().getInstalledCPVs(): + m = Metadata(cpv) + p = dict() + p['REPO'] = None if self.__masked('PACKAGES','REPO') else m.getRepoName() + p['KEYWORD'] = None if self.__masked('PACKAGES','KEYWORD') else m.getKeyword() + p['USE'] = dict() + p['USE']['PLUS'] = [] if self.__masked('PACKAGES','USE_PLUS') else m.getPlusFlags() + p['USE']['MINUS'] = [] if self.__masked('PACKAGES','USE_MINUS') else m.getMinusFlags() + p['USE']['UNSET'] = [] if self.__masked('PACKAGES','USE_UNSET') else m.getUnsetFlags() + p['COUNTER'] = None if self.__masked('PACKAGES','COUNTER') else m.getCounter() + p['SIZE'] = None if self.__masked('PACKAGES','SIZE') else m.getSize() + p['BUILD_TIME'] = None if self.__masked('PACKAGES','BUILD_TIME') else m.getBuildTime() + self.payload['PACKAGES'][cpv] = p def get(self): - return self.payload + return self.payload def dump(self,human=False): - if human: - pprint.pprint(self.payload) - else: - print self.payload + if human: + pprint.pprint(self.payload) + else: + print self.payload diff --git a/client/payload.cfg b/client/payload.cfg new file mode 100644 index 0000000..a90a7c8 --- /dev/null +++ b/client/payload.cfg @@ -0,0 +1,29 @@ + +[ENV] + +# PLATFORM = yes +# PROFILE = yes +# LASTSYNC = yes +# ARCH = yes +# CHOST = yes +# CFLAGS = yes +# CXXFLAGS = yes +# FFLAGS = yes +# LDFLAGS = yes +# MAKEOPTS = yes +# SYNC = yes +# ACCEPT_KEYWORDS = yes +# GENTOO_MIRRORS = yes +# FEATURES = yes +# USE = yes + +[PACKAGES] + +# REPO = yes +# KEYWORD = yes +# USE_PLUS = yes +# USE_MINUS = yes +# USE_UNSET = yes +# COUNTER = yes +# SIZE = yes +# BUILD_TIME = yes |