Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
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'))
Ejemplo n.º 4
0
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'))