aboutsummaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorVikraman Choudhury <vikraman.choudhury@gmail.com>2011-06-23 16:49:09 +0530
committerVikraman Choudhury <vikraman.choudhury@gmail.com>2011-06-23 16:49:09 +0530
commit5f953a0c1c54257d5ba50c4c9a9502f38295afe2 (patch)
treef54120f79576df37e1a1975adb4281cc827e8df0 /client
parentupdate ebuild (diff)
downloadgentoostats-5f953a0c1c54257d5ba50c4c9a9502f38295afe2.tar.gz
gentoostats-5f953a0c1c54257d5ba50c4c9a9502f38295afe2.tar.bz2
gentoostats-5f953a0c1c54257d5ba50c4c9a9502f38295afe2.zip
allow masking payload fields
Diffstat (limited to 'client')
-rwxr-xr-xclient/gentoostats-send8
-rw-r--r--client/gentoostats/payload.py83
-rw-r--r--client/payload.cfg29
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