Pārlūkot izejas kodu

DC - Bug fix by enabling file handling

Steve L. Nyemba 7 gadi atpakaļ
vecāks
revīzija
c93f7d9cae
5 mainītis faili ar 52 papildinājumiem un 20 dzēšanām
  1. 4 13
      config.json
  2. 35 7
      src/data-collector.py
  3. BIN
      src/monitor.pyc
  4. BIN
      src/utils/agents/actor.pyc
  5. 13 0
      src/utils/params.py

+ 4 - 13
config.json

@@ -1,15 +1,6 @@
 {
-	"virtual-env":{
-		"class":"Sandbox",
-		"config":{
-			"3-launchpad":{"requirements":"/Users/steve/Documents/git/repair-file/required.txt","sandbox":"/Users/steve/Documents/git/sandbox"}
-		}
-	},
-	"processes":{
-		"class":"DetailProcess",
-		"config":{
-			"system":["postgresql","couchdb","httpd"]
-			}
-	}
-	
+	"key":"nyemba@gmail.com",
+	"id":"maori",
+	"apps":"chrome,preview,itunes",
+	"folders":"/Users/steve/tmp"
 }

+ 35 - 7
src/data-collector.py

@@ -1,10 +1,19 @@
-"""
+h="""
 	This is a data-collector client, that is intended to perform data-collection operations and submit them to an endpoint
 	@required:
 		- key	application/service key
 		- id	node identifier
+	usage :
+		python data-collector.py --path config.json
+	The configuration file is structured as JSON object as follows :
+	{
+		id: node identifier
+		key: customer's identification key
+		apps:"app_1,app_2,...",
+		folders:"path_1,path_2, ..."
+	}
 """
-from utils.params import PARAMS as SYS_ARGS
+from utils.params import PARAMS as SYS_ARGS, Logger
 import requests
 import pickle
 import json
@@ -29,16 +38,24 @@ class Collector(Thread) :
 		headers = {"key":SYS_ARGS["key"],"id":SYS_ARGS["id"]} #,"scope":json.dumps(scope)}
 		headers['content-type'] = 'application/json'
 		try:
+			Logger.log(subject='Collector',object='api',action='request',value=ENDPOINT)
 			url 	= "/".join([ENDPOINT,"init/collector"])
-			r	= requests.post(url,headers=headers,data=json.dumps(SYS_ARGS))			
+			data = {}
+			for id in SYS_ARGS :
+				if id not in ['id','key'] :
+					data[id] = SYS_ARGS[id]
+			
+			r	= requests.post(url,headers=headers,data=json.dumps(data))			
 			r 	= json.loads(r.text)
 			
 			self.monitor = pickle.loads(r[0])
 			self.monitor.lock = RLock()
 			#:w
 			#self.monitor.set('lock',RLock())
+			Logger.log(subject='Collector',object='api',action='load',value='')
 		except Exception,e:
-			print e.message
+			
+			Logger.log(subject='Collector',object='api',action='error',value=str(e))
 			self.monitor = None
 
 	def run(self):
@@ -47,7 +64,7 @@ class Collector(Thread) :
 		"""
 		#self.monitor.start()
 		
-		
+		Logger.log(subject='Collector',object='monitor',action='start',value='')
 		thread = Thread(target=self.monitor.run)
 		thread.start()
 		# print self.monitor.config['store']
@@ -62,6 +79,17 @@ class Collector(Thread) :
 		# 	except Exception,e:
 		# 		print e
 
-if __name__ == '__main__' :
+if __name__ == '__main__' and 'path' in SYS_ARGS:
+	#
+	#
+	
+	path = SYS_ARGS['path']
+	f = open(path)
+	p = json.loads(f.read())
+	f.close()
+	Logger.init('data-collector')
+	SYS_ARGS = dict(SYS_ARGS,** p)
 	thread = Collector()
-	thread.start()
+	thread.start()
+else:
+	print (h)

BIN
src/monitor.pyc


BIN
src/utils/agents/actor.pyc


+ 13 - 0
src/utils/params.py

@@ -16,4 +16,17 @@ if len(sys.argv) > 1:
 					PARAMS[key] = ('/'+value).replace('//','/')
 		
 		i += 2
+
+import logging		
+import json
+from datetime import datetime
+class Logger :
+	@staticmethod
+	def init(filename):
+		name = "-".join([filename,datetime.now().strftime('%d-%m-%Y')])+".log"
+		logging.basicConfig(filename=name,level=logging.INFO,format="%(message)s")
+	@staticmethod
+	def log(**args) :
+		args['date'] = datetime.now().strftime('%d-%m-%Y %M:%H:%S')
+		logging.info(json.dumps(args))