def rm_containers(): cids = request.get_json()['cids'] if not all(len(cid) >= 7 for cid in cids): abort(400, 'must given at least 7 chars for container_id') version_dict = {} for cid in cids: container = Container.get_by_container_id(cid) if not container: continue version_dict.setdefault((container.version, container.host), []).append(container) task_ids, watch_keys = [], [] for (version, host), containers in version_dict.iteritems(): cids = [c.id for c in containers] task = Task.create(TASK_REMOVE, version, host, {'container_ids': cids}) all_host_cids = [c.id for c in Container.get_multi_by_host(host) if c and c.version_id == version.id] need_to_delete_image = set(cids) == set(all_host_cids) remove_containers.apply_async( args=(task.id, cids, need_to_delete_image), task_id='task:%d' % task.id ) task_ids.append(task.id) watch_keys.append(task.result_key) return {'tasks': task_ids, 'watch_keys': watch_keys}
def rm_containers(): cids = request.get_json()['cids'] if not all(len(cid) >= 7 for cid in cids): abort(400, 'must given at least 7 chars for container_id') version_dict = {} for cid in cids: container = Container.get_by_container_id(cid) if not container: continue version_dict.setdefault((container.version, container.host), []).append(container) ts, watch_keys = [], [] for (version, host), containers in version_dict.iteritems(): cids = [c.id for c in containers] task = Task.create(consts.TASK_REMOVE, version, host, {'container_ids': cids}) all_host_cids = [c.id for c in Container.get_multi_by_host(host) if c and c.version_id == version.id] need_to_delete_image = set(cids) == set(all_host_cids) remove_containers.apply_async( args=(task.id, cids, need_to_delete_image), task_id='task:%d' % task.id ) ts.append(task.id) watch_keys.append(task.result_key) return {'r': 0, 'msg': 'ok', 'tasks': ts, 'watch_keys': watch_keys}
def offline_version(group_name, pod_name, appname): data = request.get_json() group, pod, application, version = validate_instance(group_name, pod_name, appname, data["version"]) d = {} ts, keys = [], [] for container in version.containers.all(): d.setdefault(container.host, []).append(container) for host, containers in d.iteritems(): cids = [c.id for c in containers] task_props = {"container_ids": cids} task = Task.create(consts.TASK_REMOVE, version, host, task_props) remove_containers.apply_async(args=(task.id, cids, True), task_id="task:%d" % task.id) ts.append(task.id) keys.append(task.result_key) return {"r": 0, "msg": "ok", "tasks": ts, "watch_keys": keys}
def rm_containers(): cids = request.get_json()["cids"] version_dict = {} ts, watch_keys = [], [] for cid in cids: container = Container.get_by_container_id(cid) if not container: continue version_dict.setdefault((container.version, container.host), []).append(container) for (version, host), containers in version_dict.iteritems(): cids = [c.id for c in containers] task_props = {"container_ids": cids} task = Task.create(consts.TASK_REMOVE, version, host, task_props) remove_containers.apply_async(args=(task.id, cids, False), task_id="task:%d" % task.id) ts.append(task.id) watch_keys.append(task.result_key) return {"r": 0, "msg": "ok", "tasks": ts, "watch_keys": watch_keys}
def offline_version(group_name, pod_name, appname): data = request.get_json() group, pod, application, version = validate_instance(group_name, pod_name, appname, data['version']) d = {} ts, keys = [], [] for container in version.containers.all(): d.setdefault(container.host, []).append(container) for host, containers in d.iteritems(): cids = [c.id for c in containers] task_props = {'container_ids': cids} task = Task.create(consts.TASK_REMOVE, version, host, task_props) remove_containers.apply_async( args=(task.id, cids, True), task_id='task:%d' % task.id ) ts.append(task.id) keys.append(task.result_key) return {'r': 0, 'msg': 'ok', 'tasks': ts, 'watch_keys': keys}
def rm_containers(group_name, pod_name, appname): data = request.get_json() group, pod, application, version = validate_instance(group_name, pod_name, appname, data['version']) host = Host.get_by_name(data['host']) # 直接拿前ncontainer个吧, 反正他们都等价的 containers = host.get_containers_by_version(version)[:int(data['ncontainer'])] try: cids = [c.id for c in containers] task_props = {'container_ids': cids} task = Task.create(code.TASK_REMOVE, version, host, task_props) remove_containers.apply_async( args=(task.id, cids, False), task_id='task:%d' % task.id ) return {'r': 0, 'msg': 'ok', 'task': task.id, 'watch_key': task.result_key} except Exception, e: logger.exception(e) return {'r': 1, 'msg': str(e), 'task': None, 'watch_key': None}
def offline_version(): data = request.get_json() pod, _, version = _get_instances(**data) d = {} for container in version.containers.all(): d.setdefault(container.host, []).append(container) task_ids, watch_keys = [], [] for host, containers in d.iteritems(): cids = [c.id for c in containers] task = Task.create(TASK_REMOVE, version, host, {'container_ids': cids}) remove_containers.apply_async( args=(task.id, cids, True), task_id='task:%d' % task.id ) task_ids.append(task.id) watch_keys.append(task.result_key) return {'tasks': task_ids, 'watch_keys': watch_keys}
def rm_containers(): cids = request.get_json()['cids'] version_dict = {} ts, watch_keys = [], [] for cid in cids: container = Container.get_by_container_id(cid) if not container: continue version_dict.setdefault((container.version, container.host), []).append(container) for (version, host), containers in version_dict.iteritems(): cids = [c.id for c in containers] task_props = {'container_ids': cids} task = Task.create(consts.TASK_REMOVE, version, host, task_props) remove_containers.apply_async( args=(task.id, cids, False), task_id='task:%d' % task.id ) ts.append(task.id) watch_keys.append(task.result_key) return {'r': 0, 'msg': 'ok', 'tasks': ts, 'watch_keys': watch_keys}
def clean_app(app_name): app = App.get_by_name(app_name) if not app: print 'app %s not found' % app_name return containers = app.list_containers(limit=None) version_dict = {} for c in containers: if not c: continue version_dict.setdefault((c.version, c.host), []).append(c) for (version, host), cs in version_dict.iteritems(): cids = [c.id for c in cs] task_props = {'container_ids': cids} task = Task.create(TASK_REMOVE, version, host, task_props) remove_containers.apply_async(args=(task.id, cids, False), task_id='task:%s' % task.id) print task print 'done, waiting...'
def clean_app(app_name): app = App.get_by_name(app_name) if not app: print 'app %s not found' % app_name return containers = app.list_containers(limit=None) version_dict = {} for c in containers: if not c: continue version_dict.setdefault((c.version, c.host), []).append(c) for (version, host), cs in version_dict.iteritems(): cids = [c.id for c in cs] task_props = {'container_ids': cids} task = Task.create(TASK_REMOVE, version, host, task_props) remove_containers.apply_async( args=(task.id, cids, False), task_id='task:%s' % task.id ) print task print 'done, waiting...'
def rm_containers(): cids = request.get_json()['cids'] if not all(len(cid) >= 7 for cid in cids): raise EruAbortException(consts.HTTP_BAD_REQUEST, 'must given at least 7 chars for container_id') version_dict = {} ts, watch_keys = [], [] for cid in cids: container = Container.get_by_container_id(cid) if not container: continue version_dict.setdefault((container.version, container.host), []).append(container) for (version, host), containers in version_dict.iteritems(): cids = [c.id for c in containers] task_props = {'container_ids': cids} task = Task.create(consts.TASK_REMOVE, version, host, task_props) remove_containers.apply_async( args=(task.id, cids, False), task_id='task:%d' % task.id ) ts.append(task.id) watch_keys.append(task.result_key) return {'r': 0, 'msg': 'ok', 'tasks': ts, 'watch_keys': watch_keys}