def archiveDeploy(self, archiveName, archiveLocators, properties): try: if self.__role != "primary": raise Exception("Not a primary Swam manage node") archiveZip = str( ContainerUtils.retrieveAndConfigureArchiveFile( proxy.container, archiveName, archiveLocators, properties)) if archiveZip[-4:] != ".zip": raise Exception( "Archive must be a ZIP file containing Docker Compose project" ) logger.info("Deploying archive:" + archiveZip) project = getArchiveDeployProperty("project-name", properties, None) if not project: raise Exception( "project-name is required: Must be unique within this Docker swarm cluster" ) dir = os.path.join(self.__deploydir, archiveName, project) if os.path.isdir(dir): raise Exception("Archive is already deployed") extractZip(archiveZip, dir) composeFile = getDockerComposeFile(dir) copyContainerEnvironment() os.environ["DOCKER_HOST"] = "tcp://" + self.__manageAddr os.environ["COMPOSE_HTTP_TIMEOUT"] = "300" cmdlist = [ self.__dockerCompose, "--file", composeFile, "--project-name", project, "create", "--force-recreate" ] logger.info("Executing:" + list2str(cmdlist)) retcode = call(cmdlist) logger.info("Return code:" + str(retcode)) if retcode != 0: try: self.archiveUndeploy(archiveName, properties) except: pass finally: if os.path.isdir(dir): distutils.dir_util.remove_tree(dir) path = os.path.join(self.__deploydir, archiveName) os.rmdir(path) raise Exception("Archive deploy failed:" + archiveName) except: type, value, traceback = sys.exc_info() logger.severe("archiveDeploy error:" + ` value `) raise
def archiveDeploy(archiveName, archiveLocators): logInfo("deploying archive " + archiveName) try: elastic = getVariableValue("ELASTICSEARCH_NODE_OBJECT") except: type, value, traceback = sys.exc_info() logSevere("Unexpected error in ElasticSearch:archiveDeploy:" + ` value `) else: try: elastic.killNode() except: pass else: elastic.installPlugins(archiveName, archivesDir) elastic.startNode() ContainerUtils.retrieveAndConfigureArchiveFile(proxy.container, archiveName, archiveLocators, None) logInfo("End of deploying archive " + archiveName)
def archiveDeploy(self, archiveName, archiveLocators, properties): try: if self.__role != "primary": raise Exception("Not a primary Swam manage node") archiveZip = str(ContainerUtils.retrieveAndConfigureArchiveFile(proxy.container, archiveName, archiveLocators, properties)) if archiveZip[-4:] != ".zip": raise Exception("Archive must be a ZIP file containing Docker Compose project") logger.info("Deploying archive:" + archiveZip) project = getArchiveDeployProperty("project-name", properties, None) if not project: raise Exception("project-name is required: Must be unique within this Docker swarm cluster") dir = os.path.join(self.__deploydir, archiveName, project) if os.path.isdir(dir): raise Exception("Archive is already deployed") extractZip(archiveZip, dir) composeFile=getDockerComposeFile(dir) copyContainerEnvironment() os.environ["DOCKER_HOST"] = "tcp://" + self.__manageAddr os.environ["COMPOSE_HTTP_TIMEOUT"] = "300" cmdlist = [self.__dockerCompose, "--file", composeFile, "--project-name", project, "create", "--force-recreate"] logger.info("Executing:"+ list2str(cmdlist)) retcode = call(cmdlist) logger.info("Return code:" + str(retcode)) if retcode != 0: try: self.archiveUndeploy(archiveName, properties) except: pass finally: if os.path.isdir(dir): distutils.dir_util.remove_tree(dir) path = os.path.join(self.__deploydir, archiveName) os.rmdir(path) raise Exception("Archive deploy failed:" + archiveName) except: type, value, traceback = sys.exc_info() logger.severe("archiveDeploy error:" + `value`) raise