def pull_images(): try: registry_images = models.Images.objects.filter(image_type=True) nodes=models.Node.objects.filter(node_type="node") registry_node = models.Node.objects.get(node_type="registory") for i in registry_images: # print i.repository for j in nodes: repository="%s:5000/%s:latest" % (registry_node.node_ip,i.repository) if not models.Images.objects.filter(node__node_ip=j.node_ip).filter(repository=repository): docker_cli = DockerApi(j.node_ip) # print j.node_ip images = docker_cli.pull("%s:5000/%s" % (registry_node.node_ip,i.repository)) except: print traceback.format_exc()
def pull_images(): try: registry_images = models.Images.objects.filter(image_type=True) nodes = models.Node.objects.filter(node_type="node") registry_node = models.Node.objects.get(node_type="registory") for i in registry_images: # print i.repository for j in nodes: repository = "%s:5000/%s:latest" % (registry_node.node_ip, i.repository) if not models.Images.objects.filter( node__node_ip=j.node_ip).filter(repository=repository): docker_cli = DockerApi(j.node_ip) # print j.node_ip images = docker_cli.pull( "%s:5000/%s" % (registry_node.node_ip, i.repository)) except: print traceback.format_exc()
def container_create(request): user = request.user try: if request.method == 'POST' and request.POST.get( 'container') and request.POST.get('image'): container = request.POST.get('container').encode("utf-8") image = request.POST.get('image').encode("utf-8") node = request.POST.get('node').encode("utf-8") if node == "random": try: create_node = models.Node.objects.get(weight_type="True") docker_cli = DockerApi(create_node.node_ip) registry_node = models.Node.objects.get( node_type="registory") repository = "%s:5000/%s:latest" % (registry_node.node_ip, image) if not models.Images.objects.filter( repository=repository).filter( node__node_ip=create_node.node_ip): images = docker_cli.pull( "%s:5000/%s" % (registry_node.node_ip, image)) # print images cmd = "/usr/bin/sh /root/create_docker_container_use_dhcp_ip.sh %s %s:5000/%s" % ( container, registry_node.node_ip, image) # cmd ="ifconfig" # print cmd ssh_docker = paramiko.SSHClient() ssh_docker.set_missing_host_key_policy( paramiko.AutoAddPolicy()) ssh_docker.connect(create_node.node_ip, 22, "root", create_node.root_password, timeout=5) stdin, stdout, stderr = ssh_docker.exec_command(cmd) # print "#####" # stdin.write("Y") #简单交互,输入 ‘Y’ create_container_info = stdout.readlines() print create_container_info try: for info in create_container_info: # print type(info) # print info if re.search('Container_name', info): tag = 0 node_count = models.Node.objects.all().count() tag = int(create_node.weight) % node_count + 1 if tag == node_count: tag = 1 # print create_node.node_ip # print create_node.weight_type create_node.weight_type = False create_node.save() # print create_node.node_ip # print create_node.weight_type now_create_node = models.Node.objects.get( weight=tag) # print now_create_node.node_ip # print now_create_node.weight_type now_create_node.weight_type = True now_create_node.save() # print now_create_node.node_ip # print now_create_node.weight_type create_container = eval(info.strip('\n')) containers = docker_cli.containers() cont_id = '' cont_image = '' for i in containers: if i['Names'][0].encode('utf-8').replace( '/', '') == container: cont_id = i['Id'].encode('utf-8') cont_image = i['Image'].encode('utf-8') if cont_id: models.Containers.objects.create( user=user, container_name=container, container_id=cont_id, container_ip=create_container[ "Container_ip"], image=cont_image, create_time=create_container[ "Container_create"], node=create_node) except: print traceback.format_exc() except: print traceback.format_exc() else: try: create_node = models.Node.objects.get(node_ip=node) docker_cli = DockerApi(create_node.node_ip) registry_node = models.Node.objects.get( node_type="registory") repository = "%s:5000/%s:latest" % (registry_node.node_ip, image) if not models.Images.objects.filter( repository=repository).filter( node__node_ip=create_node.node_ip): images = docker_cli.pull( "%s:5000/%s" % (registry_node.node_ip, image)) # print images cmd = "/usr/bin/sh /root/create_docker_container_use_dhcp_ip.sh %s %s:5000/%s" % ( container, registry_node.node_ip, image) # cmd ="ifconfig" ssh_docker = paramiko.SSHClient() ssh_docker.set_missing_host_key_policy( paramiko.AutoAddPolicy()) ssh_docker.connect(create_node.node_ip, 22, "root", create_node.root_password, timeout=5) stdin, stdout, stderr = ssh_docker.exec_command(cmd) #stdin.write("Y") #简单交互,输入 ‘Y’ create_container_info = stdout.readlines() for info in create_container_info: if re.search('Container_name', info): create_container = eval(info.strip('\n')) containers = docker_cli.containers() cont_id = '' cont_image = '' for i in containers: if i['Names'][0].encode('utf-8').replace( '/', '') == container: cont_id = i['Id'].encode('utf-8') cont_image = i['Image'].encode('utf-8') if cont_id: models.Containers.objects.create( user=user, container_name=container, container_id=cont_id, container_ip=create_container[ "Container_ip"], image=cont_image, create_time=create_container[ "Container_create"], node=create_node) except: print traceback.format_exc() return HttpResponseRedirect(reverse('listcontainerurl')) else: nodes = models.Node.objects.filter(node_type='node') images = models.Images.objects.filter(image_type='True') return render_to_response('docker/addcontainer.html', { 'user': user, 'nodes': nodes, 'images': images }) except: print traceback.format_exc() return HttpResponseRedirect(reverse('listcontainerurl'))
def container_create(request): user = request.user try: if request.method == 'POST' and request.POST.get('container') and request.POST.get('image'): container = request.POST.get('container').encode("utf-8") image = request.POST.get('image').encode("utf-8") node = request.POST.get('node').encode("utf-8") if node == "random": try: create_node = models.Node.objects.get(weight_type="True") docker_cli = DockerApi(create_node.node_ip) registry_node = models.Node.objects.get(node_type="registory") repository="%s:5000/%s:latest" % (registry_node.node_ip,image) if not models.Images.objects.filter(repository=repository).filter(node__node_ip=create_node.node_ip): images = docker_cli.pull("%s:5000/%s" % (registry_node.node_ip,image)) # print images cmd = "/usr/bin/sh /root/create_docker_container_use_dhcp_ip.sh %s %s:5000/%s" % (container,registry_node.node_ip,image) # cmd ="ifconfig" # print cmd ssh_docker = paramiko.SSHClient() ssh_docker.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh_docker.connect(create_node.node_ip,22,"root",create_node.root_password,timeout=5) stdin, stdout, stderr = ssh_docker.exec_command(cmd) # print "#####" # stdin.write("Y") #简单交互,输入 ‘Y’ create_container_info = stdout.readlines() print create_container_info try: for info in create_container_info: # print type(info) # print info if re.search('Container_name',info): tag = 0 node_count = models.Node.objects.all().count() tag = int(create_node.weight)%node_count + 1 if tag == node_count: tag = 1 # print create_node.node_ip # print create_node.weight_type create_node.weight_type=False create_node.save() # print create_node.node_ip # print create_node.weight_type now_create_node = models.Node.objects.get(weight=tag) # print now_create_node.node_ip # print now_create_node.weight_type now_create_node.weight_type=True now_create_node.save() # print now_create_node.node_ip # print now_create_node.weight_type create_container = eval(info.strip('\n')) containers = docker_cli.containers() cont_id = '' cont_image = '' for i in containers: if i['Names'][0].encode('utf-8').replace('/','') == container: cont_id=i['Id'].encode('utf-8') cont_image = i['Image'].encode('utf-8') if cont_id: models.Containers.objects.create(user=user,container_name=container,container_id=cont_id,container_ip = create_container["Container_ip"],image=cont_image,create_time=create_container["Container_create"],node=create_node) except: print traceback.format_exc() except: print traceback.format_exc() else: try: create_node = models.Node.objects.get(node_ip=node) docker_cli = DockerApi(create_node.node_ip) registry_node = models.Node.objects.get(node_type="registory") repository="%s:5000/%s:latest" % (registry_node.node_ip,image) if not models.Images.objects.filter(repository=repository).filter(node__node_ip=create_node.node_ip): images = docker_cli.pull("%s:5000/%s" % (registry_node.node_ip,image)) # print images cmd = "/usr/bin/sh /root/create_docker_container_use_dhcp_ip.sh %s %s:5000/%s" % (container,registry_node.node_ip,image) # cmd ="ifconfig" ssh_docker = paramiko.SSHClient() ssh_docker.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh_docker.connect(create_node.node_ip,22,"root",create_node.root_password,timeout=5) stdin, stdout, stderr = ssh_docker.exec_command(cmd) #stdin.write("Y") #简单交互,输入 ‘Y’ create_container_info = stdout.readlines() for info in create_container_info: if re.search('Container_name',info): create_container = eval(info.strip('\n')) containers = docker_cli.containers() cont_id = '' cont_image = '' for i in containers: if i['Names'][0].encode('utf-8').replace('/','') == container: cont_id=i['Id'].encode('utf-8') cont_image = i['Image'].encode('utf-8') if cont_id: models.Containers.objects.create(user=user,container_name=container,container_id=cont_id,container_ip = create_container["Container_ip"],image=cont_image,create_time=create_container["Container_create"],node=create_node) except: print traceback.format_exc() return HttpResponseRedirect(reverse('listcontainerurl')) else: nodes = models.Node.objects.filter(node_type='node') images = models.Images.objects.filter(image_type='True') return render_to_response('docker/addcontainer.html',{'user':user,'nodes':nodes,'images':images}) except: print traceback.format_exc() return HttpResponseRedirect(reverse('listcontainerurl'))