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