public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gentoostats:master commit in: client/bin/, client/
@ 2011-05-01  9:51 Vikraman Choudhury
  0 siblings, 0 replies; 4+ messages in thread
From: Vikraman Choudhury @ 2011-05-01  9:51 UTC (permalink / raw
  To: gentoo-commits

commit:     40c723a7581cda09900368747bc705614c7a90eb
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Sun May  1 09:50:22 2011 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Sun May  1 09:50:22 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=40c723a7

fixed code style

---
 client/bin/client     |   24 ++++++++++++------------
 client/environment.py |   18 +++++++++---------
 client/packages.py    |   10 +++++-----
 client/useflags.py    |    8 ++++----
 4 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/client/bin/client b/client/bin/client
index 26edcb4..7d649d1 100755
--- a/client/bin/client
+++ b/client/bin/client
@@ -4,20 +4,20 @@ from packages import Packages
 from useflags import UseFlags
 from environment import Environment
 
-def main ():
-  p = Packages ()
-  u = UseFlags ()
-  for cpv in p.getInstalledCPVs ():
+def main():
+  p = Packages()
+  u = UseFlags()
+  for cpv in p.getInstalledCPVs():
     print cpv,
-    for x in u.getUseFlags (cpv):
+    for x in u.getUseFlags(cpv):
       print x,
     print
-  e = Environment ()
-  print e.getVar ('CFLAGS')
-  print e.getVar ('CXXFLAGS')
-  print e.getVar ('LDFLAGS')
-  print e.getVar ('CHOST')
-  print e.getVar ('FEATURES')
+  e = Environment()
+  print e.getVar('CFLAGS')
+  print e.getVar('CXXFLAGS')
+  print e.getVar('LDFLAGS')
+  print e.getVar('CHOST')
+  print e.getVar('FEATURES')
 
 if __name__ == "__main__":
-  main ()
+  main()

diff --git a/client/environment.py b/client/environment.py
index 5300bef..074c2d1 100644
--- a/client/environment.py
+++ b/client/environment.py
@@ -1,19 +1,19 @@
 
 import logging
-from subprocess import *
+import subprocess
 
-class Environment:
+class Environment(object):
 
-  def __init__ (self):
+  def __init__(self):
     try:
-      p = Popen (['emerge', '--info'], stdout=PIPE)
-      self.out = p.stdout.readlines ()
+      p = subprocess.Popen(['emerge', '--info'], stdout=subprocess.PIPE)
+      self.out = p.stdout.readlines()
     except OSError, e:
-      fatal ('Cannot run emerge --info')
+      fatal('Cannot run emerge --info')
       raise e
 
-  def getVar (self, myvar):
+  def getVar(self, myvar):
     for line in self.out:
-      if line.startswith (myvar):
-	return line.strip ()
+      if line.startswith(myvar):
+	return line.strip()
     return ''

diff --git a/client/packages.py b/client/packages.py
index 5d41061..4e2bdcd 100644
--- a/client/packages.py
+++ b/client/packages.py
@@ -2,11 +2,11 @@
 import logging
 from dbapi import VARDB
 
-class Packages:
-  def getInstalledCPs (self):
-    installed_cps = sorted (VARDB.cp_all ())
+class Packages(object):
+  def getInstalledCPs(self):
+    installed_cps = sorted(VARDB.cp_all())
     return installed_cps
 
-  def getInstalledCPVs (self):
-    installed_cpvs = sorted (VARDB.cpv_all ())
+  def getInstalledCPVs(self):
+    installed_cpvs = sorted(VARDB.cpv_all())
     return installed_cpvs

diff --git a/client/useflags.py b/client/useflags.py
index 40f453c..1dbda1e 100644
--- a/client/useflags.py
+++ b/client/useflags.py
@@ -1,7 +1,7 @@
 
-from gentoolkit.flag import *
+from gentoolkit import flag
 
-class UseFlags:
+class UseFlags(object):
 
-  def getUseFlags (self, cpv):
-    return get_flags (cpv, True)[1]
+  def getUseFlags(self, cpv):
+    return flag.get_flags(cpv, True)[1]



^ permalink raw reply related	[flat|nested] 4+ messages in thread
* [gentoo-commits] proj/gentoostats:master commit in: client/bin/, client/
@ 2011-06-05  8:40 Vikraman Choudhury
  0 siblings, 0 replies; 4+ messages in thread
From: Vikraman Choudhury @ 2011-06-05  8:40 UTC (permalink / raw
  To: gentoo-commits

commit:     e5ff4157b6470cd665ab8d6f46a108e2714bdf1a
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Sat Jun  4 18:22:09 2011 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Sat Jun  4 18:22:09 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=e5ff4157

rewrote client, added more fields

---
 client/environment.py          |   47 ++++++++++++++++++++++++++++++++++++-
 client/metadata.py             |   45 ++++++++++++++++++++++++++++++++++++
 client/packages.py             |    1 +
 client/payload.py              |   49 ++++++++++++++++++++++++++++++++++++++++
 client/{bin/client => send.py} |   29 +++++------------------
 client/useflags.py             |    8 ------
 6 files changed, 146 insertions(+), 33 deletions(-)

diff --git a/client/environment.py b/client/environment.py
index 07b942e..f03a76c 100644
--- a/client/environment.py
+++ b/client/environment.py
@@ -1,9 +1,52 @@
 
 import logging
+import os
+import platform
 import portage
+from _emerge.actions import relative_profile_path
 
 class Environment(object):
 
+  def __init__(self):
+    self.portdir = portage.settings['PORTDIR']
+
   def getVar(self, myvar):
-    ret = portage.settings[myvar]
-    return ret
+    return portage.settings[myvar]
+
+  def getPlatform(self):
+    return platform.platform(aliased=1)
+
+  def getLastSync(self):
+    lastsync = None
+    try:
+      lastsync = portage.grabfile(os.path.join(self.portdir, 'metadata', 'timestamp.chk'))
+    except portage.exception.PortageException:
+      pass
+    if lastsync is None:
+      return 'Unknown'
+    return lastsync[0]
+  
+  def getProfile(self):
+    profilever = None
+    profile = portage.settings.profile_path
+    if profile:
+      profilever = relative_profile_path(self.portdir, profile)
+      if profilever is None:
+	try:
+	  for parent in portage.grabfile(os.path.join(profile, 'parent')):
+	    profilever = relative_profile_path(self.portdir,os.path.join(profile, parent))
+	    if profilever is not None:
+	      break
+	except portage.exception.PortageException:
+	  pass
+
+	if profilever is None:
+	  try:
+	    profilever = '!' + os.readlink(profile)
+	  except (OSError):
+	    pass
+
+    if profilever is None:
+      profilever = 'Unknown'
+
+    return profilever

diff --git a/client/metadata.py b/client/metadata.py
new file mode 100644
index 0000000..0b6a751
--- /dev/null
+++ b/client/metadata.py
@@ -0,0 +1,45 @@
+
+import portage
+from dbapi import VARDB
+from gentoolkit.enalyze.lib import FlagAnalyzer
+from gentoolkit.enalyze.lib import KeywordAnalyser
+
+class Metadata(object):
+
+  def __init__(self, cpv):
+    self.repo, self.counter, self.build_time, self.size = VARDB.aux_get(cpv,['repository','COUNTER','BUILD_TIME','SIZE'])
+
+    system_use = portage.settings['USE'].split()
+    fa = FlagAnalyzer(system=system_use)
+    self.flags = fa.analyse_cpv(cpv)
+
+    arch = portage.settings['ARCH']
+    accept_keywords = portage.settings['ACCEPT_KEYWORDS'].split()
+    ka = KeywordAnalyser(arch=arch,accept_keywords=accept_keywords)
+    self.keyword = ka.get_inst_keyword_cpv(cpv)
+
+  def getPlusFlags(self):
+    return list(self.flags[0])
+
+  def getMinusFlags(self):
+    return list(self.flags[1])
+
+  def getUnsetFlags(self):
+    return list(self.flags[2])
+
+  def getKeyword(self):
+    return self.keyword
+
+  def getRepoName(self):
+    if self.repo:
+      return self.repo
+    return 'Unknown'
+
+  def getCounter(self):
+    return self.counter
+
+  def getBuildTime(self):
+    return self.build_time
+
+  def getSize(self):
+    return self.size

diff --git a/client/packages.py b/client/packages.py
index 73cdfc5..7f9ca35 100644
--- a/client/packages.py
+++ b/client/packages.py
@@ -1,5 +1,6 @@
 
 import logging
+import portage
 from dbapi import VARDB
 
 class Packages(object):

diff --git a/client/payload.py b/client/payload.py
new file mode 100644
index 0000000..b888af9
--- /dev/null
+++ b/client/payload.py
@@ -0,0 +1,49 @@
+
+import pprint
+from environment import Environment
+from packages import Packages
+from metadata import Metadata
+
+class Payload(object):
+
+  def __init__(self):
+    self.payload = dict()
+    self.payload['PROTOCOL'] = 1
+    self.update()
+
+  def update(self):
+
+    env = Environment()
+    self.payload['PLATFORM'] = env.getPlatform()
+    self.payload['LASTSYNC'] = env.getLastSync()
+    self.payload['PROFILE'] = env.getProfile()
+
+    for var in ['ARCH','CFLAGS','CXXFLAGS','FFLAGS','LDFLAGS','MAKEOPTS']:
+      self.payload[var] = env.getVar(var)
+
+    for var in ['ACCEPT_KEYWORDS','LANG','GENTOO_MIRRORS','SYNC','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
+
+  def get(self):
+    return self.payload
+
+  def dump(self,human=False):
+    if human:
+      pprint.pprint(self.payload)
+    else:
+      print self.payload

diff --git a/client/bin/client b/client/send.py
similarity index 63%
rename from client/bin/client
rename to client/send.py
index f920250..8bf2bd2 100755
--- a/client/bin/client
+++ b/client/send.py
@@ -1,8 +1,6 @@
 #!/usr/bin/env python
 
-from packages import Packages
-from useflags import UseFlags
-from environment import Environment
+from payload import Payload
 import json
 import urllib, httplib
 
@@ -14,24 +12,6 @@ def getAuthInfo():
       }
   return auth_info
 
-def getPostData():
-  p = Packages()
-  u = UseFlags()
-  e = Environment()
-
-  post_data = {}
-  post_data['PROTOCOL'] = 1
-  post_data['AUTH'] = getAuthInfo()
-  for key in ('CFLAGS', 'CXXFLAGS', 'LDFLAGS', 'CHOST', 'FEATURES'):
-    post_data[key] = e.getVar(key)
-
-  packages = {}
-  for cpv in p.getInstalledCPVs(sort=True):
-    packages[cpv] = u.getUseFlags(cpv)
-  post_data['PACKAGES'] = packages
-
-  return post_data
-
 def serialize(object, human=False):
   if human:
     indent = 2
@@ -42,8 +22,11 @@ def serialize(object, human=False):
   return json.JSONEncoder(indent=indent, sort_keys=sort_keys).encode(object)
 
 def main():
-  post_body = serialize(getPostData(), human=True)
-  print post_body
+  pl = Payload()
+  pl.dump(human=True)
+  post_data = pl.get()
+  post_data['AUTH'] = getAuthInfo()
+  post_body = serialize(post_data,human=True)
   post_headers = {"Content-type": "application/json"}
   myuuid = getAuthInfo()['UUID']
   conn = httplib.HTTPConnection("127.0.0.1:8080")

diff --git a/client/useflags.py b/client/useflags.py
deleted file mode 100644
index 84a8dcf..0000000
--- a/client/useflags.py
+++ /dev/null
@@ -1,8 +0,0 @@
-
-#TODO: Remove gentoolkit dependency
-from gentoolkit import flag
-
-class UseFlags(object):
-
-  def getUseFlags(self, cpv):
-    return flag.get_flags(cpv, True)[1]



^ permalink raw reply related	[flat|nested] 4+ messages in thread
* [gentoo-commits] proj/gentoostats:master commit in: client/bin/, client/
@ 2011-05-02 14:32 Vikraman Choudhury
  0 siblings, 0 replies; 4+ messages in thread
From: Vikraman Choudhury @ 2011-05-02 14:32 UTC (permalink / raw
  To: gentoo-commits

commit:     5b654c655741caf0c032ad7626f69849b59a2c25
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Mon May  2 14:31:46 2011 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Mon May  2 14:31:46 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=5b654c65

Use portage.settings instead of forking to emerge --info

---
 client/bin/client     |    7 ++-----
 client/environment.py |   16 +++-------------
 2 files changed, 5 insertions(+), 18 deletions(-)

diff --git a/client/bin/client b/client/bin/client
index 7d649d1..c41de84 100755
--- a/client/bin/client
+++ b/client/bin/client
@@ -13,11 +13,8 @@ def main():
       print x,
     print
   e = Environment()
-  print e.getVar('CFLAGS')
-  print e.getVar('CXXFLAGS')
-  print e.getVar('LDFLAGS')
-  print e.getVar('CHOST')
-  print e.getVar('FEATURES')
+  for var in ('CFLAGS', 'CXXFLAGS', 'LDFLAGS', 'CHOST', 'FEATURES'):
+    print e.getVar(var)
 
 if __name__ == "__main__":
   main()

diff --git a/client/environment.py b/client/environment.py
index 074c2d1..07b942e 100644
--- a/client/environment.py
+++ b/client/environment.py
@@ -1,19 +1,9 @@
 
 import logging
-import subprocess
+import portage
 
 class Environment(object):
 
-  def __init__(self):
-    try:
-      p = subprocess.Popen(['emerge', '--info'], stdout=subprocess.PIPE)
-      self.out = p.stdout.readlines()
-    except OSError, e:
-      fatal('Cannot run emerge --info')
-      raise e
-
   def getVar(self, myvar):
-    for line in self.out:
-      if line.startswith(myvar):
-	return line.strip()
-    return ''
+    ret = portage.settings[myvar]
+    return ret



^ permalink raw reply related	[flat|nested] 4+ messages in thread
* [gentoo-commits] proj/gentoostats:master commit in: client/bin/, client/
@ 2011-04-30  4:24 Vikraman Choudhury
  0 siblings, 0 replies; 4+ messages in thread
From: Vikraman Choudhury @ 2011-04-30  4:24 UTC (permalink / raw
  To: gentoo-commits

commit:     510345d1c7882c321f72b6d9e57966581cdafd3f
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Sat Apr 30 04:23:44 2011 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Sat Apr 30 04:23:44 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=510345d1

added use flags

---
 client/bin/client  |    9 +++++++--
 client/useflags.py |    7 +++++++
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/client/bin/client b/client/bin/client
index bdc16c7..0720466 100755
--- a/client/bin/client
+++ b/client/bin/client
@@ -1,11 +1,16 @@
 #!/usr/bin/env python
 
 from packages import Packages
+from useflags import UseFlags
 
 def main ():
   p = Packages ()
-  for cp in p.getInstalledCPs ():
-    print cp
+  u = UseFlags ()
+  for cpv in p.getInstalledCPVs ():
+    print cpv,
+    for x in u.getUseFlags (cpv):
+      print x,
+    print
 
 if __name__ == "__main__":
   main ()

diff --git a/client/useflags.py b/client/useflags.py
new file mode 100644
index 0000000..40f453c
--- /dev/null
+++ b/client/useflags.py
@@ -0,0 +1,7 @@
+
+from gentoolkit.flag import *
+
+class UseFlags:
+
+  def getUseFlags (self, cpv):
+    return get_flags (cpv, True)[1]



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-06-05  8:41 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-01  9:51 [gentoo-commits] proj/gentoostats:master commit in: client/bin/, client/ Vikraman Choudhury
  -- strict thread matches above, loose matches on Subject: below --
2011-06-05  8:40 Vikraman Choudhury
2011-05-02 14:32 Vikraman Choudhury
2011-04-30  4:24 Vikraman Choudhury

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox