From 8ec8bd1f290527af8ea089d8331f4d52ab13aafb Mon Sep 17 00:00:00 2001 From: vanzhiganov Date: Mon, 14 Dec 2015 05:02:08 +0300 Subject: [PATCH] container status report --- cloud_node_statistics.py | 19 +++++++++++++++++++ lxc/__init__.py | 4 ++-- node/__init__.py | 21 +++++++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 cloud_node_statistics.py diff --git a/cloud_node_statistics.py b/cloud_node_statistics.py new file mode 100644 index 0000000..9d9854c --- /dev/null +++ b/cloud_node_statistics.py @@ -0,0 +1,19 @@ +# coding: utf-8 + +import requests +import config +import ConfigParser +import lxc +import node + +clslxc = lxc.lxc() +clsnode = node.NodeClient() + +containers = clslxc.list() + +for container in containers: + # print container + info = clslxc.info(container) + info['container_id'] = info['name'] + print clsnode.report_container_status(info['container_id'], info) + # print info diff --git a/lxc/__init__.py b/lxc/__init__.py index f79b743..b774a20 100644 --- a/lxc/__init__.py +++ b/lxc/__init__.py @@ -78,7 +78,7 @@ class lxc(): else: path = "" - cmd = ['lxc-ls', path] + cmd = ['/usr/bin/lxc-ls', path] out = subprocess.check_output(cmd).splitlines() # print out return out @@ -145,7 +145,7 @@ class lxc(): if not self.exists(name): raise ContainerNotExists("The container (%s) does not exist!" % name) - cmd = ['lxc-info', '-n', name, "-H"] + cmd = ['/usr/bin/lxc-info', '-n', name, "-H"] out = subprocess.check_output(cmd).splitlines() clean = [] info = {} diff --git a/node/__init__.py b/node/__init__.py index 23bfce1..471d44b 100644 --- a/node/__init__.py +++ b/node/__init__.py @@ -1,3 +1,4 @@ +# coding: utf-8 import config import os @@ -22,6 +23,26 @@ class NodeClient(): response = requests.get('http://%s/server_api/task_status_update?node_id=%s&node_secret=%s&task_id=%s&status=%s' % (config.server, config.node_id, config.node_secret, task_id, status)) return response.json() + def report_container_status(self, container_id, statistics): + data = { + 'node_id': config.node_id, + 'node_secret': config.node_secret, + 'status': json.dumps(statistics) + } + + print statistics + # for i in statistics: + # data[i] = statistics[i] + + response = requests.post( + 'http://%s/server_api/report/container_status' % config.server, + data=data + ) + if response.status_code == 200: + return response.json() + # print response.text + return False + def __container_config_create(container_id, link, ipv4, ipv6): cfg = []