def get(self): project_id = self.get_argument('project_id', '') if not project_id: images = mongo_helper.get_projects() self.write(json.dumps(images)) else: info = mongo_helper.get_project_info(project_id) self.write(json.dumps(info))
def post(self): project_id = self.get_argument('project_id', '') if not id: self.write('{status:false}') else: info = mongo_helper.get_project_info(project_id) #arch = info['arch'] arch = { "id": "5aa12bcd-f905-6a32-91fe-4c5bd9440839", "title": "MyDockerCluster1", "containerCount": 6, "containers": [ { "id": "23742bbf-0b6c-7c71-61b2-c8b8a9f0dc58", "tags": [ ], "imageType": "vophoto-test.chinacloudapp.cn:5000/mongo:latest", "serviceName": "catalog_mongo", "portMap": [":27017"], "name":"catalog_mongo", "args": "-v /mnt/catalog:/data/db", "node":["vophoto-demo-db"], "x": 113, "y": 204 }, { "id": "33742bbf-0b6c-7c71-61b2-c8b8a9f0dc58", "tags": [ ], "imageType": "vophoto-test.chinacloudapp.cn:5000/mongo:latest", "serviceName": "inventory_mongo", "portMap": [":27017"], "name":"inventory_mongo", "args": "-v /mnt/inventory:/data/db", "node":["vophoto-demo-db"], "x": 113, "y": 204 }, { "id": "02f0063c-1697-0099-1df5-dd70ce5d56e1", "tags": [ ], "imageType": "vophoto-test.chinacloudapp.cn:5000/wangtt03/catalog:1.0.0", "serviceName": "catalog", "name": "catalog", "args": "", "portMap": [ ":8801" ], "node":[], "x": 178, "y": 474 }, { "id": "bf68af36-41dc-a4bc-42e6-d026e6bb7f9d", "tags": [ ], "imageType": "vophoto-test.chinacloudapp.cn:5000/wangtt03/inventory:1.0.8", "serviceName": "inventory", "name": "inventory", "args": "", "portMap": [ ":8802" ], "node":[], "x": 268, "y": 310 }, { "id": "1f68af36-41dc-a4bc-42e6-d026e6bb7f9d", "tags": [ ], "imageType": "vophoto-test.chinacloudapp.cn:5000/wangtt03/order:1.0.0", "serviceName": "buy", "args": "", "name": "buy", "portMap": [ ":8803" ], "node":[], "x": 268, "y": 310 }, { "id": "ec90427e-4739-42c9-bbf6-1a1399e0656c", "tags": [ ], "imageType": "vophoto-test.chinacloudapp.cn:5000/wangtt03/petstore:1.0.0", "serviceName": "petstore", "args": "", "name": "petstore", "portMap": [ ":8080" ], "node":[], "x": 224, "y": 420 } ], "linkCount": 1, "links": [ { "from": "02f0063c-1697-0099-1df5-dd70ce5d56e1", "to": "23742bbf-0b6c-7c71-61b2-c8b8a9f0dc58" } ] } # pull images nodes = arch['containers'] for node in nodes: logger.debug('pulling image: ' + node['imageType']) utils.run_command(config.config['demo_server'], 'sudo docker -H tcp://0.0.0.0:2376 pull ' + node['imageType']) #stop running containers running = utils.list_cluster_containers() for cont in nodes: image_name = cont['imageType'][0:cont['imageType'].rfind(':')] version = cont['imageType'][cont['imageType'].rfind(':') + 1:] need_restart = True for n in running: name = n['Image'][0:n['Image'].rfind(':')] ver = n['Image'][n['Image'].rfind(':') + 1:] if image_name == name and version == ver: need_restart = False break elif image_name == name and version != ver: utils.stop_container(config.config['demo_server'], n['Id']) if need_restart: args = '-d' if cont['name'] != '': args = args + ' --name ' + cont['name'] if len(cont['portMap']) > 0: args = args + ' ' + ' '.join(['-p %s' % n for n in cont['portMap']]) if cont['serviceName'] != '': args = args + ' -e SERVICE_NAME=' + cont['serviceName'] if cont['args'] != '': args = args + ' ' + cont['args'] if len(cont['node']) > 0: args = args + ' ' + ' '.join(['-e constraint:node==%s' % n for n in cont['node']]) utils.start_container(config.config['demo_server'], cont['imageType'], args) self.write(json.dumps(info))