コード例 #1
0
ファイル: dockermanager.py プロジェクト: pombredanne/kunai-1
 def get_images():
     response.content_type = 'application/json'
     if self.con is None:
         return json.dumps(None)
     imgs = get_json('/images/json', local_socket='/var/run/docker.sock')
     r = [lower_dict(d) for d in imgs]
     return json.dumps(r)
コード例 #2
0
ファイル: dockermanager.py プロジェクト: pombredanne/kunai-1
 def load_containers(self):
     if not self.con:
         return
     try:
         conts = get_json('/containers/json', local_socket='/var/run/docker.sock')
     except request_errors, exp:
         self.connect()
         return
コード例 #3
0
ファイル: dockermanager.py プロジェクト: pombredanne/kunai-1
 def load_images(self):
     if not self.con:
         return
     try:
         self.images = get_json('/images/json', local_socket='/var/run/docker.sock')
     except request_errors, exp:
         self.connect()
         return
コード例 #4
0
ファイル: dockermanager.py プロジェクト: pombredanne/kunai-1
 def get_images(_id):
     response.content_type = 'application/json'
     if self.con is None:
         return json.dumps(None)
     imgs = get_json('/images/json', local_socket='/var/run/docker.sock')            
     for d in imgs:
         if d['Id'] == _id:
             return json.dumps(lower_dict(d))
     return json.dumps(None)
コード例 #5
0
ファイル: dockermanager.py プロジェクト: pombredanne/kunai-1
 def connect(self):
     if not self.con:
         try:
             self.con = get_json('/version', local_socket='/var/run/docker.sock')
         except request_errors, exp: # cannot connect
             self.con = None
             logger.debug('Cannot connect to docker')
             return
         # Version return something like this:
         #{
         #    "ApiVersion":"1.12",
         #    "Version":"0.2.2",
         #    "GitCommit":"5a2a5cc+CHANGES",
         #    "GoVersion":"go1.0.3"
         #        }
         if self.con == '':
             self.con = None
             logger.debug('Cannot connect to docker')
コード例 #6
0
ファイル: dockermanager.py プロジェクト: pombredanne/kunai-1
 def do_loop(self):
     self.connect()
     self.load_containers()
     self.load_images()        
     while True:
         self.connect()
         if not self.con:
             time.sleep(1) # do not hammer the connexion
             continue
         now = int(time.time())
         try:
             evts = get_json("/events", local_socket='/var/run/docker.sock', params={'until':now, 'since':now - 1}, multi=True)
         except Exception, exp:
             logger.debug('cannot get docker events: %s' % exp)
             time.sleep(1)
             continue
         logger.debug("GET docker events %s" % evts)
         # docker an return one or more dict
         if isinstance(evts, dict):
             evts = [evts]
         # now manage events and lock on it
         #evts = self.con.events() # can lock here
         for ev in evts:
             evdata = ev
             _id = evdata["id"]
             status = evdata["status"]
             if status in ("die", "stop"):
                 if _id in self.containers:
                     logger.debug('removing a container %s' % _id)
                     del self.containers[_id]
                     # stats will be cleaned on the next computation
                 else:
                     logger.debug('Asking to remove an unknow container? %s' % _id)
             elif status == 'start':
                 self.load_container(_id)
             else:
                 logger.debug('UNKNOWN EVENT IN DOCKER %s' % status)
         time.sleep(1)
コード例 #7
0
ファイル: dockermanager.py プロジェクト: pombredanne/kunai-1
 def load_container(self, _id):
     try:
         inspect = get_json('/containers/%s/json' % _id, local_socket='/var/run/docker.sock')
     except request_errors, exp:
         self.connect()
         return
コード例 #8
0
ファイル: __init__.py プロジェクト: carriercomm/kunai
def get_kunai_json(uri):
    local_socket = get_local_socket()
    return get_json(uri, local_socket)