update network in taskworker
This commit is contained in:
parent
782baee617
commit
567955c777
|
@ -9,7 +9,7 @@
|
|||
ovs-vsctl --if-exists del-port $Bridge $5
|
||||
cnt=$(ovs-vsctl list-ports ${Bridge} | wc -l)
|
||||
if [ "$cnt" = "1" ]; then
|
||||
greport=$(ovs-vsctl list-ports $(Bridge) | grep "^gre-[[:digit:]][[:digit:]]*-[[:digit:]][[:digit:]]*\.[[:digit:]][[:digit:]]*\.[[:digit:]][[:digit:]]*\.[[:digit:]][[:digit:]]*$" | wc -l)
|
||||
greport=$(ovs-vsctl list-ports ${Bridge} | grep "gre" | wc -l)
|
||||
if [ "$greport" = "1" ]; then
|
||||
ovs-vsctl del-br $Bridge
|
||||
fi
|
||||
|
|
|
@ -37,7 +37,8 @@ class Task():
|
|||
# priority the bigger the better
|
||||
# self.priority the smaller the better
|
||||
self.priority = int(time.time()) / 60 / 60 - priority
|
||||
self.network = None
|
||||
self.task_base_ip = None
|
||||
self.ips = None
|
||||
self.max_size = max_size
|
||||
|
||||
for i in range(self.vnode_nums):
|
||||
|
@ -175,18 +176,18 @@ class TaskMgr(threading.Thread):
|
|||
return [True, ""]
|
||||
|
||||
@net_lock
|
||||
def acquire_task_net(self, task):
|
||||
self.logger.info("[acquire_task_net] user(%s) task(%s) net(%s)"%(task.taskinfo.username, task.taskinfo.taskid, str(task.network)))
|
||||
if task.network == None:
|
||||
task.network = self.free_nets.pop(0)
|
||||
return task.network
|
||||
def acquire_task_ips(self, task):
|
||||
self.logger.info("[acquire_task_ips] user(%s) task(%s) net(%s)"%(task.taskinfo.username, task.taskinfo.taskid, str(task.task_base_ip)))
|
||||
if task.task_base_ip == None:
|
||||
task.task_base_ip = self.free_nets.pop(0)
|
||||
return task.task_base_ip
|
||||
|
||||
@net_lock
|
||||
def release_task_net(self,task):
|
||||
self.logger.info("[release_task_net] user(%s) task(%s) net(%s)"%(task.taskinfo.username, task.taskinfo.taskid, str(task.network)))
|
||||
if task.network == None:
|
||||
def release_task_ips(self,task):
|
||||
self.logger.info("[release_task_ips] user(%s) task(%s) net(%s)"%(task.taskinfo.username, task.taskinfo.taskid, str(task.task_base_ip)))
|
||||
if task.task_base_ip == None:
|
||||
return
|
||||
self.free_nets.append(task.network)
|
||||
self.free_nets.append(task.task_base_ip)
|
||||
self.logger.error('[release task_net] %s'%str(e))
|
||||
|
||||
def setup_tasknet(self, task, workers=None):
|
||||
|
@ -194,9 +195,9 @@ class TaskMgr(threading.Thread):
|
|||
username = task.taskinfo.username
|
||||
brname = "docklet-batch-%s-%s"%(username, taskid)
|
||||
gwname = "Batch-%s-%s"%(username, taskid)
|
||||
if task.network == None:
|
||||
return [False, "task.network is None!"]
|
||||
gatewayip = int_to_ip(self.base_ip + task.network + 1)
|
||||
if task.task_base_ip == None:
|
||||
return [False, "task.task_base_ip is None!"]
|
||||
gatewayip = int_to_ip(self.base_ip + task.task_base_ip + 1)
|
||||
gatewayipcidr += "/" + str(32-self.task_cidr)
|
||||
netcontrol.new_bridge(brname)
|
||||
netcontrol.setup_gw(brname,gwname,gatewayipcidr,0,0)
|
||||
|
@ -218,6 +219,9 @@ class TaskMgr(threading.Thread):
|
|||
# properties for transactio
|
||||
|
||||
self.acquire_task_net(task)
|
||||
#task.ips = []
|
||||
#for i in
|
||||
#need to create hosts
|
||||
[success, gwip] = self.setup_tasknet(task,[w[1] for w in vnodes_workers])
|
||||
if not success:
|
||||
return [False, gwip]
|
||||
|
@ -242,7 +246,7 @@ class TaskMgr(threading.Thread):
|
|||
#if not username in self.user_containers.keys():
|
||||
#self.user_containers[username] = []
|
||||
#self.user_containers[username].append(container_name)
|
||||
ipaddr = int_to_ip(self.base_ip + task.network + vid%task.max_size + 2)
|
||||
ipaddr = int_to_ip(self.base_ip + task.task_base_ip + vid%task.max_size + 2)
|
||||
brname = "docklet-batch-%s-%s"%(username, taskid)
|
||||
networkinfo = Network(ipaddr=ipaddr, gateway=gwip, masterip=self.masterip, brname=brname)
|
||||
vnode.network = networkinfo
|
||||
|
|
|
@ -39,7 +39,8 @@ def stop_task():
|
|||
def stop_vnode():
|
||||
channel = grpc.insecure_channel('localhost:50051')
|
||||
stub = rpc_pb2_grpc.WorkerStub(channel)
|
||||
vnodeinfo = rpc_pb2.VNodeInfo(taskid="test",username="root",vnodeid=1)
|
||||
network = rpc_pb2.Network(brname="batch-root-test")
|
||||
vnodeinfo = rpc_pb2.VNodeInfo(taskid="test",username="root",vnodeid=1,vnode=rpc_pb2.VNode(network=network))
|
||||
|
||||
response = stub.stop_vnode(vnodeinfo)
|
||||
print("Batch client received: " + str(response.status)+" "+response.message)
|
||||
|
@ -58,8 +59,8 @@ def start_task():
|
|||
|
||||
if __name__ == '__main__':
|
||||
#for i in range(10):
|
||||
#run()
|
||||
run()
|
||||
#start_task()
|
||||
stop_vnode()
|
||||
#stop_vnode()
|
||||
#time.sleep(4)
|
||||
#stop_task()
|
||||
|
|
|
@ -19,6 +19,7 @@ from utils import imagemgr,etcdlib,gputools
|
|||
from utils.lvmtool import sys_run
|
||||
from worker import ossmounter
|
||||
from protos import rpc_pb2, rpc_pb2_grpc
|
||||
from utils.nettools import netcontrol
|
||||
|
||||
_ONE_DAY_IN_SECONDS = 60 * 60 * 24
|
||||
MAX_RUNNING_TIME = _ONE_DAY_IN_SECONDS
|
||||
|
@ -171,6 +172,7 @@ class TaskWorker(rpc_pb2_grpc.WorkerServicer):
|
|||
ipaddr = request.vnode.network.ipaddr
|
||||
gateway = request.vnode.network.gateway
|
||||
brname = request.vnode.network.brname
|
||||
masterip = request.vnode.network.masterip
|
||||
|
||||
#create container
|
||||
[success, msg] = self.create_container(taskid, vnodeid, username, image, lxcname, instance_type, ipaddr, gateway, brname)
|
||||
|
@ -195,6 +197,8 @@ class TaskWorker(rpc_pb2_grpc.WorkerServicer):
|
|||
|
||||
logger.info('start container %s success' % lxcname)
|
||||
|
||||
netcontrol.setup_gre(brname, masterip)
|
||||
|
||||
#add GPU
|
||||
[success, msg] = self.add_gpu_device(lxcname,gpu_need)
|
||||
if not success:
|
||||
|
@ -206,6 +210,7 @@ class TaskWorker(rpc_pb2_grpc.WorkerServicer):
|
|||
return rpc_pb2.Reply(status=rpc_pb2.Reply.ACCEPTED,message="")
|
||||
|
||||
def start_task(self, request, context):
|
||||
logger.info('start task with config: ' + str(request))
|
||||
taskid = request.taskid
|
||||
username = request.username
|
||||
vnodeid = request.vnodeid
|
||||
|
@ -228,6 +233,7 @@ class TaskWorker(rpc_pb2_grpc.WorkerServicer):
|
|||
return rpc_pb2.Reply(status=rpc_pb2.Reply.ACCEPTED,message="")
|
||||
|
||||
def stop_task(self, request, context):
|
||||
logger.info('stop task with config: ' + str(request))
|
||||
taskid = request.taskid
|
||||
username = request.username
|
||||
vnodeid = request.vnodeid
|
||||
|
@ -238,9 +244,11 @@ class TaskWorker(rpc_pb2_grpc.WorkerServicer):
|
|||
|
||||
# stop and remove container
|
||||
def stop_vnode(self, request, context):
|
||||
logger.info('stop vnode with config: ' + str(request))
|
||||
taskid = request.taskid
|
||||
username = request.username
|
||||
vnodeid = request.vnodeid
|
||||
brname = request.vnode.network.brname
|
||||
mount_list = request.vnode.mount
|
||||
lxcname = '%s-batch-%s-%s' % (username,taskid,str(vnodeid))
|
||||
|
||||
|
@ -257,6 +265,10 @@ class TaskWorker(rpc_pb2_grpc.WorkerServicer):
|
|||
else:
|
||||
logger.error("delete container %s failed" % lxcname)
|
||||
|
||||
#del ovs bridge
|
||||
if brname is not None:
|
||||
netcontrol.del_bridge(brname)
|
||||
|
||||
#release gpu
|
||||
self.release_gpu_device(lxcname)
|
||||
|
||||
|
|
Loading…
Reference in New Issue