def create_host(): """为了文件, 只好不用json了""" addr = request.form.get('addr', type=str, default='') pod_name = request.form.get('pod_name', type=str, default='') if not (addr and pod_name): raise EruAbortException(consts.HTTP_BAD_REQUEST, 'need addr and pod_name') pod = Pod.get_by_name(pod_name) if not pod: raise EruAbortException(consts.HTTP_BAD_REQUEST, 'No pod found') # 存证书, 没有就算了 try: ca, cert, key = request.files['ca'], request.files['cert'], request.files['key'] save_docker_certs(addr.split(':', 1)[0], ca.read(), cert.read(), key.read()) finally: ca.close() cert.close() key.close() try: client = get_docker_client(addr, force_flush=True) info = client.info() except Exception: raise EruAbortException(consts.HTTP_BAD_REQUEST, 'Docker daemon error on host %s' % addr) if not Host.create(pod, addr, info['Name'], info['ID'], info['NCPU'], info['MemTotal']): raise EruAbortException(consts.HTTP_BAD_REQUEST) return consts.HTTP_CREATED, {'r':0, 'msg': consts.OK}
def create_host(): """为了文件, 只好不用json了""" addr = request.form.get('addr', default='') pod_name = request.form.get('pod_name', default='') if not (addr and pod_name): abort(400, 'Need addr and pod_name') pod = Pod.get_by_name(pod_name) if not pod: abort(400, 'No pod found') # 存证书, 没有就算了 if all(k in request.files for k in ['ca', 'cert', 'key']): try: ca, cert, key = request.files['ca'], request.files['cert'], request.files['key'] save_docker_certs(addr.split(':', 1)[0], ca.read(), cert.read(), key.read()) finally: ca.close() cert.close() key.close() try: client = get_docker_client(addr, force_flush=True) info = client.info() except Exception as e: abort(400, 'Docker daemon error on host %s, error: %s' % (addr, e.message)) if not Host.create(pod, addr, info['Name'], info['ID'], info['NCPU'], info['MemTotal']): abort(400, 'Host create error.') return 201, {'r':0, 'msg': consts.OK}
def create_host(): """为了文件, 只好不用json了""" addr = request.form.get('addr', default='') ip = addr.split(':', 1)[0] podname = request.form.get('podname', default='') is_public = request.form.get('is_public', default=False, type=bool) if not (addr and podname): abort(400, 'Bad addr or podname: addr="{}", podname="{}"'.format(addr, podname)) pod = Pod.get_by_name(podname) if not pod: abort(400, 'Pod {} not found'.format(podname)) # 存证书, 没有就算了 certs = ['ca', 'cert', 'key'] if all(k in request.files for k in certs): certs_contents = tuple(request.files[f].read() for f in certs) save_docker_certs(ip, *certs_contents) try: client = get_docker_client(addr, force_flush=True) info = client.info() except Exception as e: abort(400, 'Docker daemon error on host %s, error: %s' % (addr, e.message)) if not Host.create(pod, addr, info['Name'], info['ID'], info['NCPU'], info['MemTotal'], is_public=is_public): abort(400, 'Error while creating host') return 201, DEFAULT_RETURN_VALUE
def put_host_certs(id_or_name): host = _get_host(id_or_name) ca, cert, key = request.files['ca'], request.files['cert'], request.files['key'] try: save_docker_certs(host, ca.read(), cert.read(), key.read()) finally: ca.close() cert.close() key.close() return {'r': 0, 'msg': 'OK'}
def put_host_certs(id_or_name): host = _get_host(id_or_name) if not host: raise EruAbortException(consts.HTTP_NOT_FOUND, 'Host %s not found' % id_or_name) ca, cert, key = request.files['ca'], request.files['cert'], request.files['key'] try: save_docker_certs(host, ca.read(), cert.read(), key.read()) finally: ca.close() cert.close() key.close() return {'r': 0, 'msg': 'OK'}
def put_host_certs(id_or_name): host = _get_host(id_or_name) certs = ['ca', 'cert', 'key'] certs_contents = tuple(request.files[f].read() for f in certs) save_docker_certs(host.ip, *certs_contents) return DEFAULT_RETURN_VALUE