예제 #1
0
    def fechar_artefato(self):
        arquivos_js = LinhaDeComando.executar_com_output(
            'find . -name "*.js"').split(".js\n")
        arquivos_js.pop()

        for js in arquivos_js:
            comando_js = "java -jar %s --js %s.js --js_output_file %s_min.js" % (
                self.__CAMINHO_CLOSURE_COMPILER, js, js)
            Log.imprime(
                "INICIANDO O PROCESSO DE MINIFICACAO DO ARQUIVO " + js + ".js",
                "INICIANDO O PROCESSO DE MINIFICACAO DO ARQUIVO " + js +
                ".js.")

            Log.imprime("EXECUTANDO O COMANDO: " + comando_js)
            LinhaDeComando.executar(comando_js)
            Log.imprime("COMANDO EXECUTADO COM SUCESSO.",
                        "ARQUIVO " + js + ".js MINIFICADO COM SUCESSO.")

            arquivo_antigo = Arquivo(js + ".js")
            Log.imprime("EXCLUINDO O ARQUIVO ORIGINAL",
                        "EXCLUINDO O ARQUIVO ORIGINAL.")
            arquivo_antigo.excluir()

            arquivo_novo = Arquivo(js + "_min.js")
            Log.imprime("RENOMEANDO O ARQUIVO MINIFICADO",
                        "RENOMEADO O ARQUIVO MINIFICADO")
            arquivo_novo.renomear(js + ".js")
    def criar_backup(self, prd=False):
        if prd:
            conteudo_arquivo = "BACKUP DATABASE " + self.NOME_BANCO + " TO DISK = '" + self.CAMINHO_ARQUIVO_BACKUP + \
                               self.NOME_BANCO + "-devops.bak' with format, compression ;"
            comando = "sqlcmd -S " + self.SERVIDOR_PORTA + " -U " + self.USUARIO_BANCO + \
                      " -P " + self.SENHA_BANCO + " -i comandoCriarBackup.sql -o log_comandoCriarBackup.txt"
        else:
            conteudo_arquivo = "BACKUP DATABASE " + self.NOME_BANCO_STG + " TO DISK = '" + self.CAMINHO_ARQUIVO_BACKUP \
                               + self.NOME_BANCO_STG + "-devops.bak' with format, compression ;"
            comando = "sqlcmd -S " + self.SERVIDOR_PORTA_STG + " -U DEV_INFG_Jenkins -P 95QlyafTZ2s8 -i " \
                                                               "comandoCriarBackup.sql -o log_comandoCriarBackup.txt"

        with open("comandoCriarBackup.sql", "w") as arq:
            arq.write(conteudo_arquivo)
        LinhaDeComando.executar(comando)

        with open("log_comandoCriarBackup.txt", "r") as arq:
            if "successfully" in arq.read():
                Log.imprime("SUCESSO - CRIACAO DO BACKUP",
                            "SUCESSO - CRIACAO DO BACKUP")
            else:
                Log.imprime("FALHA - CRIACAO DO BACKUP.\n" + arq.read(),
                            "FALHA - CRIACAO DO BACKUP",
                            classe=BancoDados)
                exit(1)
예제 #3
0
 def fechar_artefato(self):
     # Metodo que fecha um novo artefato construido com o Gradle
     Log.imprime("INICIANDO PROCESSO DE FECHAMENTO DO ARTEFATO",
                 "INICIANDO PROCESSO DE FECHAMENTO DO ARTEFATO")
     LinhaDeComando.executar("gradle build")
     Log.imprime("ARTEFATO GERADO COM SUCESSO",
                 "ARTEFATO GERADO COM SUCESSO")
    def habiltar_usuario_aplicacao_acesso_banco_dados(self):

        with open("comandoHabiltarUsuarioAplicacaoAcessoBancoDados.sql",
                  "w") as arq:
            arq.write("alter login " + self.USUARIO_APLICAO_ACESSO_BANCO[0] +
                      " enable;")

        LinhaDeComando.executar(
            "sqlcmd -S " + self.SERVIDOR_PORTA + " -U " + self.USUARIO_BANCO +
            " -P " + self.SENHA_BANCO +
            " -i comandoHabiltarUsuarioAplicacaoAcessoBancoDados.sql "
            "-o log_comandoHabiltarUsuarioAplicacaoAcessoBancoDados.txt")

        tamanho_arquivo_log = stat(
            "log_comandoHabiltarUsuarioAplicacaoAcessoBancoDados.txt").st_size

        if tamanho_arquivo_log == 0:
            Log.imprime(
                "SUCESSO - AO HABILITAR USUARIO DA APLICACAO COM ACESSO COM O BANCO DE DADOS",
                "SUCESSO - AO HABILITAR USUARIO DA APLICACAO COM ACESSO COM O BANCO DE DADOS"
            )
        else:
            with open(
                    "log_comandoHabiltarUsuarioAplicacaoAcessoBancoDados.txt",
                    "r") as arq:
                Log.imprime(
                    "FALHA - AO HABILITAR USUARIO DA APLICACAO COM ACESSO COM O BANCO DE DADOS\n"
                    + arq.read(),
                    "FALHA - AO HABILITAR USUARIO DA APLICACAO COM ACESSO COM O BANCO DE DADOS",
                    classe=BancoDados)
            exit(1)
예제 #5
0
    def fechar_artefato(self):
        arquivos_css = LinhaDeComando.executar_com_output(
            'find . -name "*.css"').split(".css\n")
        arquivos_css.pop()

        for css in arquivos_css:
            comando_css = "csso %s.css --output %s_min.css" % (css, css)
            Log.imprime(
                "INICIANDO O PROCESSO DE MINIFICACAO DO ARQUIVO " + css +
                ".css", "INICIANDO O PROCESSO DE MINIFICACAO DO ARQUIVO " +
                css + ".css.")

            Log.imprime("EXECUTANDO O COMANDO: " + comando_css)
            LinhaDeComando.executar(comando_css)
            Log.imprime("COMANDO EXECUTADO COM SUCESSO.",
                        "ARQUIVO " + css + ".css MINIFICADO COM SUCESSO.")

            arquivo_antigo = Arquivo(css + ".css")
            Log.imprime("EXCLUINDO O ARQUIVO ORIGINAL",
                        "EXCLUINDO O ARQUIVO ORIGINAL.")
            arquivo_antigo.excluir()

            arquivo_novo = Arquivo(css + "_min.css")
            Log.imprime("RENOMEANDO O ARQUIVO MINIFICADO",
                        "RENOMEADO O ARQUIVO MINIFICADO")
            arquivo_novo.renomear(css + ".css")
    def remover_snapshot(self):

        nome_snapshot = self.NOME_BANCO + "_SNAPSHOT"
        with open("comandoRemoverSnapshot.sql", "w") as arq:
            arq.write("DROP DATABASE " + nome_snapshot + ";")

        LinhaDeComando.executar(
            "sqlcmd -S " + self.SERVIDOR_PORTA + " -U " + self.USUARIO_BANCO +
            " -P " + self.SENHA_BANCO +
            " -i comandoRemoverSnapshot.sql -o log_comandoRemoverSnapshot.txt")

        try:
            pymssql.connect(host=self.SERVIDOR_PORTA,
                            user=self.USUARIO_BANCO,
                            password=self.SENHA_BANCO,
                            database=nome_snapshot)
            with open("log_comandoRemoverSnapshot.txt", "r") as arq:
                Log.imprime("FALHA - NA REMOCAO DO SNAPSHOT\n" + arq.read(),
                            "FALHA - NA REMOCAO DO SNAPSHOT",
                            classe=BancoDados)
            exit(1)
        except:
            mensagem_sucesso = "SUCESSO --  REMOVIDO -- " + nome_snapshot
            Log.imprime(mensagem_sucesso, mensagem_sucesso, classe=BancoDados)

            email = Email()
            email.enviar_email(mensagem_sucesso, DESTINATARIOS_EMAIL,
                               mensagem_sucesso)
    def colocar_banco_dados_offline(self):
        comando_set_offline = "alter database " + self.NOME_BANCO_STG + " set offline with rollback immediate"

        with open("comandoSetOffLine.sql", "w") as arq:
            arq.write(comando_set_offline)

        LinhaDeComando.executar(
            "sqlcmd -S " + self.SERVIDOR_PORTA_STG +
            " -U  DEV_INFG_Jenkins -P 95QlyafTZ2s8 -i comandoSetOffLine.sql "
            "-o log_comandoSetOffLine.txt")
        sleep(2)
        tamanho_arquivo_log = stat("log_comandoSetOffLine.txt").st_size

        with open("log_comandoSetOffLine.txt", "r") as arq:
            if "Estimated rollback completion: 100%." in arq.read():
                Log.imprime("SUCESSO - COLOCAR O BANCO DE STG OFFLINE",
                            "SUCESSO - COLOCAR O BANCO DE STG OFFLINE")
            elif tamanho_arquivo_log == 0:
                Log.imprime("SUCESSO - COLOCAR O BANCO DE STG OFFLINE",
                            "SUCESSO - COLOCAR O BANCO DE STG OFFLINE")
            else:
                Log.imprime("FALHA - COLOCAR O BANCO DE STG OFFLINE\n" +
                            arq.read(),
                            "FALHA - COLOCAR O BANCO DE STG OFFLINE",
                            classe=BancoDados)
                exit(1)
    def criar_snapshot(self):

        self.__matar_todas_conexoes_no_banco_dados()

        caminho_snapshot = getenv(
            "CAMINHO_GRAVAR_SNAPSHOT") + self.NOME_BANCO + "_snapshot.ss"

        comando = "CREATE DATABASE " + self.NOME_BANCO + "_SNAPSHOT  ON (  NAME = '" + self.NOME_BANCO + \
                  "_DATA', FILENAME ='" + caminho_snapshot + "') AS SNAPSHOT OF " + \
                  self.NOME_BANCO + " ;"
        with open("comandoCriarSnapshot.sql", "w") as arq:
            arq.write(comando)

        LinhaDeComando.executar(
            "sqlcmd -S " + self.SERVIDOR_PORTA + " -U " + self.USUARIO_BANCO +
            " -P " + self.SENHA_BANCO +
            " -i comandoCriarSnapshot.sql -o log_comandoCriarSnapshot.txt")

        if not self.__snapshot_foi_criado_com_sucesso():
            self.habiltar_usuario_aplicacao_acesso_banco_dados()
            Log.imprime(
                "FALHA - JA EXISTE UM SNAPSHOT CRIADO PARA ESSE BANCO\n",
                "FALHA - JA EXISTE UM SNAPSHOT CRIADO PARA ESSE BANCO\n"
                "PRIMEIRO DEVE SER EXECUTADO O PASSO DE VALIDACAO DEPLOY",
                classe=BancoDados)
            exit(1)
예제 #9
0
    def limpar_pasta_compartilhada(self):
        # Metodo responsavel por limpar o caminho de compartilhamento

        Log.imprime("INICIANDO LIMPEZA DO CAMINHO DE COMPARTILHAMENTO " +
                    self.caminho_compartilhamento)

        # Copia um arquivo .bat para o caminho de compartilhamento
        LinhaDeComando.executar("copy " + path.dirname(__file__) +
                                "\\..\\..\\batch\\apagarConteudo.bat" + " " +
                                self.caminho_compartilhamento)

        # Usa o comando net use para executar o .bat no caminho de compartilhamento
        LinhaDeComando.executar("net use i: " + self.caminho_compartilhamento)

        LinhaDeComando.executar("i: && call apagarConteudo.bat " +
                                self.pastas_nao_apagar + " && c:")

        LinhaDeComando.executar("net use i: /delete /yes")

        # Apaga o proprio arquivo .bat para nao deixar resquicios do processo de limpeza no servidor
        LinhaDeComando.executar(
            "del " +
            path.join(self.caminho_compartilhamento, "apagarConteudo.bat"))

        Log.imprime(
            "LIMPEZA DO CAMINHO DE COMPARTILHAMENTO REALIZADA COM SUCESSO")
예제 #10
0
 def fechar_artefato(self):
     comando = self.__caminho_msbuild + " build.xml"
     Log.imprime("INICIANDO PROCESSO DE FECHAMENTO DO ARTEFATO",
                 "INICIANDO PROCESSO DE FECHAMENTO DO ARTEFATO.")
     LinhaDeComando.executar(comando)
     Log.imprime("ARTEFATO GERADO COM SUCESSO.",
                 "ARTEFATO GERADO COM SUCESSO.")
예제 #11
0
 def fechar_artefato(self):
     # Metodo responsavel por fechar um novo artefato
     comando_build = "mvn clean package"
     Log.imprime("INICIANDO PROCESSO DE FECHAMENTO DO ARTEFATO",
                 "INICIANDO PROCESSO DE FECHAMENTO DO ARTEFATO.")
     LinhaDeComando.executar(comando_build)
     Log.imprime("ARTEFATO GERADO COM SUCESSO.",
                 "ARTEFATO GERADO COM SUCESSO.")
예제 #12
0
    def executa_scanner_sonar(self):
        comando = "mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Pcoverage-per-test"
        Log.imprime("GERANDO RELATORIO DE COBERTURA",
                    "GERANDO RELATORIO DE COBERTURA")
        LinhaDeComando.executar(comando)

        comando = "mvn sonar:sonar"
        LinhaDeComando.executar(comando)
        Log.imprime("SUCESSO NA EXECUCAO DO SONAR",
                    "SUCESSO NA EXECUCAO DO SONAR")
예제 #13
0
    def executa_testes(self, out=sys.stdout):
        comando = "%s/bin/grails -Dgrails.work.dir=target test-app -coverage --non-interactive --plain-output " \
                  "--stacktrace" % self.GRAILS_HOME
        Log.imprime("INICIANDO TESTES DO GRAILS", "INICIANDO TESTES DO GRAILS")
        LinhaDeComando.executar(comando)
        Log.imprime("TESTES ENCERRADOS COM SUCESSO.",
                    "TESTES ENCERRADOS COM SUCESSO")

        comando = "%s/bin/grails compile --non-interactive --plain-output" % self.GRAILS_HOME
        Log.imprime("COMPILANDO CLASSES PARA O SONAR",
                    "COMPILANDO CLASSES PARA O SONAR")
        LinhaDeComando.executar(comando)
예제 #14
0
    def fechar_artefato(self, out=sys.stdout):
        comando_clean = "%s/bin/grails clean" % self.GRAILS_HOME
        Log.imprime("INICIANDO PROCESSO DE CLEAN",
                    "INICIANDO PROCESSO DE FECHAMENTO DO ARTEFATO.")
        LinhaDeComando.executar(comando_clean)
        Log.imprime("PROCESSO DE CLEAN ENCERRADO COM SUCESSO")

        comando_deploy = "%s/bin/grails war --verbose" % self.GRAILS_HOME
        Log.imprime("INICIANDO PROCESSO DE FECHAMENTO DO WAR")
        LinhaDeComando.executar(comando_deploy)
        Log.imprime("ARTEFATO GERADO COM SUCESSO",
                    "ARTEFATO GERADO COM SUCESSO.")
예제 #15
0
    def executa_testes(self):
        comando_dos = 'C: && cd C:\\tibco\\designer\\5.8\\bin && validateproject.exe -a "%s" -project "%s\\%s" > "%s"' \
                      % (self.__ALIAS_PROPERTIES, WORKING_DIRECTORY, NOME_PROJETO, self.__LOG_VALIDACAO)
        Log.imprime("INICIANDO OS TESTES DO TIBCO", "INICIANDO OS TESTES DO TIBCO.")
        LinhaDeComando.executar(comando_dos)
        Log.imprime("TESTES ENCERRADOS.", "TESTES ENCERRADOS")
        comando_dos = 'findstr /n /c:"%s" "%s"' % (self.__TEXTO_VERICAR_FALHA_VALIDACAO, self.__LOG_VALIDACAO)
        dos_return_code = LinhaDeComando.executar(comando_dos, True)
        if not dos_return_code == 0:
            LinhaDeComando.lancar_erro("O servico nao passou na validacao")
            Log.imprime("SERVICO NAO PASSOU NA VALIDACAO.", "SERVICO NAO PASSOU NA VALIDACAO.", classe=Tibco)

        Log.imprime("TESTES ENCERRADOS COM SUCESSO.", "TESTES ENCERRADOS COM SUCESSO.")
예제 #16
0
    def fechar_artefato(self):
        archive_utilizado = "/eAI/Deploy/%s.archive" % NOME_PROJETO
        diretorio_build_ear = '%s\\%s.ear' % (WORKING_DIRECTORY, NOME_PROJETO)
        mensagem = "##### INICIANDO O BUILD DO SERVICO (TRA - BUILDER) #####\n" \
                   "##### ARCHIVE: %s #####\n" \
                   "##### DIR. BUILD EAR: %s #####\n" \
                   "##### DIR. APLICACAO: %s\\%s #####\n" \
                   "##### DIR. alias.properties: %s #####" % \
                   (archive_utilizado, diretorio_build_ear, WORKING_DIRECTORY, NOME_PROJETO, self.__ALIAS_PROPERTIES)
        Log.imprime(mensagem, mensagem)

        comando_dos = 'buildear -o "%s" -p "%s\\%s" -a "%s" -ear "%s" -x' % (
            diretorio_build_ear, WORKING_DIRECTORY, NOME_PROJETO, self.__ALIAS_PROPERTIES, archive_utilizado)
        Log.imprime("EXECUTANDO O COMANDO: " + str(comando_dos))
        LinhaDeComando.executar(comando_dos)
        Log.imprime("ARTEFATO GERADO COM SUCESSO.", "ARTEFATO GERADO COM SUCESSO.")
    def criar_tabelas_necessarias_para_flyway(self):

        if self.eh_um_banco_de_dados_novo():

            nome_banco_de_dados = "jtds:sqlserver://" + self.SERVIDOR_PORTA + "/" + self.NOME_BANCO
            comando = "-user="******" -password="******" -url=jdbc:" + \
                      nome_banco_de_dados + " -table="
            LinhaDeComando.executar("flyway baseline " + comando +
                                    "schema_migrate")
            Log.imprime(
                "TABELA MIGRATE CRIADA COM SUCESSO -" + self.NOME_BANCO,
                "TABELA MIGRATE CRIADA COM SUCESSO -" + self.NOME_BANCO)

            if self.AMBIENTE_SVN != "PRD_TRUNK":
                LinhaDeComando.executar("flyway baseline " + comando +
                                        "schema_branch")
                Log.imprime("TABELA BRANCH CRIADA COM SUCESSO",
                            "TABELA BRANCH CRIADA COM SUCESSO")
            return True
예제 #18
0
    def executa_scanner_sonar(self):
        arq_prop = ArquivoProperties("sonar-msbuild.properties")
        project_key = arq_prop.obter_valor_chave("project_key")
        project_name = arq_prop.obter_valor_chave("project_name")
        project_version = arq_prop.obter_valor_chave("project_version")
        project_branch = arq_prop.obter_valor_chave("project_branch")
        if project_branch:
            comando = "%s begin /k:\"%s\" /n:\"%s\" /v:\"%s\" /d:sonar.branch=%s" % (
                self.__scanner, project_key, project_name, project_version,
                project_branch)
        else:
            comando = "%s begin /k:\"%s\" /n:\"%s\" /v:\"%s\"" % (
                self.__scanner, project_key, project_name, project_version)
        Log.imprime("PREPARANDO SCANNER MSBUILD DO SONAR",
                    "PREPARANDO SCANNER MSBUILD DO SONAR")
        LinhaDeComando.executar(comando)

        comando = "\"%s\" build.xml" % self.__caminho_msbuild
        Log.imprime("REALIZANDO REBUILD DA APLICACAO PARA O SONAR",
                    "REALIZANDO REBUILD DA APLICACAO PARA O SONAR")
        LinhaDeComando.executar(comando)

        comando = "%s end" % self.__scanner
        Log.imprime("FINALIZANDO SCANNER MSBUILD DO SONAR",
                    "FINALIZANDO SCANNER MSBUILD DO SONAR")
        LinhaDeComando.executar(comando)
    def realizar_failback_no_banco_dados(self):

        self.__matar_todas_conexoes_no_banco_dados()

        comando = "RESTORE DATABASE " + self.NOME_BANCO + " FROM DATABASE_SNAPSHOT = '" + self.NOME_BANCO + \
                  "_SNAPSHOT';"

        with open("comandoFailBack.sql", "w") as arq:
            arq.write(comando)

        LinhaDeComando.executar(
            "sqlcmd -S " + self.SERVIDOR_PORTA + " -U " + self.USUARIO_BANCO +
            " -P " + self.SENHA_BANCO +
            " -i comandoFailBack.sql -o log_comandoFailBack.txt")

        with open("log_comandoFailBack.txt", "r") as arq:
            Log.imprime("REALIZANDO O FAILBACK\n" + arq.read(),
                        "REALIZANDO O FAILBACK")

        self.habiltar_usuario_aplicacao_acesso_banco_dados()
        """info_banco_dados = InformacoesBancoDados(NOME_BANCO)
        versao_failback = info_banco_dados.obter_revision_deploy_prd_failback()
        ultima_versao_producao = obter_versao("INFOSQL:1433","INFG_Jenkins", NOME_BANCO ,"ANavpzv2CcfEMtcagaIY")

        if versao_failback == ultima_versao_producao:
            print("#################################################")
            print("## DEPLOY REALIZADO COM SUCESSO ##")
            print("## VERSAO PRD FAILBACK...: " + versao_failback + " ##")
            print("## VERSAO PRD ATUAL .....: " + ultima_versao_producao + " ##")
            print("#################################################")
        else:
            print("#################################################")
            print("## FALHA NO DEPLOY ##")
            print("## VERSAO PRD FAILBACK...: " + versao_failback + " ##")
            print("## VERSAO PRD ATUAL .....: " + ultima_versao_producao + " ##")
            print("#################################################")
            exit(1)"""

        self.remover_snapshot()
    def __matar_todas_conexoes_no_banco_dados(self):

        with open(
                path.dirname(__file__) +
                "\\..\\..\\sql\\comandoMatarTodasConexoesTemplate.sql",
                "r") as arq:
            arquivo_alterado = arq.read()

        arquivo_alterado = arquivo_alterado.replace(
            "<LOGIN>", self.USUARIO_APLICAO_ACESSO_BANCO[0])
        arquivo_alterado = arquivo_alterado.replace("<BASE DE DADOS>",
                                                    self.NOME_BANCO)

        with open("comandoMatarTodasConexoes.sql", "w") as arq:
            arq.write(arquivo_alterado)

        LinhaDeComando.executar("sqlcmd -S " + self.SERVIDOR_PORTA + " -U " +
                                self.USUARIO_BANCO + " -P " +
                                self.SENHA_BANCO +
                                " -i comandoMatarTodasConexoes.sql "
                                "-o log_comandoMatarTodasConexoes.txt")

        tamanho_arquivo_log = stat("log_comandoMatarTodasConexoes.txt").st_size

        if tamanho_arquivo_log == 0:
            Log.imprime(
                "SUCESSO - FORAM CANCELADAS TODAS CONEXOES COM O BANCO DE DADOS",
                "SUCESSO - FORAM CANCELADAS TODAS CONEXOES COM O BANCO DE DADOS"
            )
        else:
            with open("log_comandoMatarTodasConexoes.txt", "r") as arq:
                Log.imprime(
                    "FALHA - AO CANCELAR AS CONEXOES DE ACESSO COM O BANCO DE DADOS\n"
                    + arq.read(),
                    "FALHA - AO CANCELAR AS CONEXOES DE ACESSO COM O BANCO DE DADOS",
                    classe=BancoDados)
            exit(1)
    def executar_script_sql_no_banco_dados(self):
        self.criar_tabelas_necessarias_para_flyway()

        schema = "schema_migrate"

        if self.AMBIENTE_SVN == "STG_BRANCH":
            schema = "schema_branch"

        numero_scripts_sql = len(listdir(self.PASTA_SCRIPT_SQL))

        if numero_scripts_sql > 1:
            nome_banco_de_dados = "jtds:sqlserver://" + self.SERVIDOR_PORTA + "/" + self.NOME_BANCO
            caminho_sql = "filesystem:" + WORKING_DIRECTORY + "/" + self.PASTA_SCRIPT_SQL
            comando = "-user="******" -password="******" -url=jdbc:" + \
                      nome_banco_de_dados + " -locations=" + caminho_sql + " -table=" + schema
            LinhaDeComando.executar("flyway migrate " + comando)
            sleep(2)
            Log.imprime("COMANDO EXECUATDO FLYWAY..:" + comando)
            LinhaDeComando.executar("flyway validate " + comando)
        else:
            Log.imprime(
                "NAO FOI ENCONTRADO NENHUM SCRIPT SQL PARA SER EXECUTADO",
                "NAO FOI ENCONTRADO NENHUM SCRIPT SQL PARA SER EXECUTADO")
            return "NENJUM_SQL_NA_PASTA"
    def restaurar_banco_dados_com_ultima_versao_stg(self):

        nome_banco_logico = getenv("NOME_BANCO_LOGICO")
        caminho_mdf_ldf = getenv("CAMINHO_MDF_LDF") + "{0}'"

        if not self.possui_backup():
            self.criar_backup()

        self.colocar_banco_dados_offline()

        comando_restaurar_backup = "restore database " + self.NOME_BANCO_STG + " from disk ='" + \
                                   self.CAMINHO_ARQUIVO_BACKUP + self.NOME_BANCO_STG + \
                                   "-devops.bak' with replace,stats, move '" + nome_banco_logico + "_data' to '" + \
                                   caminho_mdf_ldf.format(self.NOME_BANCO_STG + ".mdf") + ", move '" + \
                                   nome_banco_logico + "_log' to '" + caminho_mdf_ldf.format(self.NOME_BANCO_STG +
                                                                                             "_log.ldf")

        with open("comandoRestaurarBackup.sql", "w") as arq:
            arq.write(comando_restaurar_backup)

        LinhaDeComando.executar(
            "sqlcmd -S " + self.SERVIDOR_PORTA_STG +
            " -U DEV_INFG_Jenkins -P 95QlyafTZ2s8 -i comandoRestaurarBackup.sql "
            "-o log_comandoRestaurarBackup.txt")

        falha_processo_restaurar_backup = False

        with open("log_comandoRestaurarBackup.txt", "r") as arq:
            if "processed" in arq.read():
                Log.imprime(
                    "SUCESSO - BACKUP RESTAURADO -" + self.NOME_BANCO_STG,
                    "SUCESSO - BACKUP RESTAURADO - " + self.NOME_BANCO_STG)
            else:
                falha_processo_restaurar_backup = True
                Log.imprime("FALHA - NO RESTORE DO BACKUP\n" + arq.read(),
                            "FALHA - NO RESTORE DO BACKUP",
                            classe=BancoDados)

        sleep(5)

        comando_set_online = "alter database " + self.NOME_BANCO_STG + " set online"
        with open("comandoSetOnLine.sql", "w") as arq:
            arq.write(comando_set_online)

        LinhaDeComando.executar(
            "sqlcmd -S " + self.SERVIDOR_PORTA_STG +
            " -U DEV_INFG_Jenkins -P 95QlyafTZ2s8 -i comandoSetOnLine.sql "
            "-o log_comandoSetOnLine.txt")

        tamanho_arquivo_log = stat("log_comandoSetOnLine.txt").st_size

        if tamanho_arquivo_log == 0:
            Log.imprime("SUCESSO - VOLTAR O BANCO DE STG ONLINE",
                        "SUCESSO - VOLTAR O BANCO DE STG ONLINE")
        else:
            with open("log_comandoSetOnLine.txt", "r") as arq:
                Log.imprime("FALHA - VOLTAR O BANCO DE STG ONLINE\n" +
                            arq.read(),
                            "FALHA - VOLTAR O BANCO DE STG ONLINE",
                            classe=BancoDados)
            falha_processo_restaurar_backup = True

        if falha_processo_restaurar_backup:
            exit(1)
    def restaurar_banco_dados_stg_com_ultima_versao_prd(self):
        nome_banco_logico = getenv("NOME_BANCO_LOGICO")
        caminho_mdf_ldf = getenv("CAMINHO_MDF_LDF") + self.NOME_BANCO_STG

        self.criar_backup(prd=True)

        self.colocar_banco_dados_offline()

        falha_processo_restaurar_backup = False

        comando_restaurar_backup = "restore database " + self.NOME_BANCO_STG + " from disk ='" + \
                                   self.CAMINHO_ARQUIVO_BACKUP + self.NOME_BANCO + \
                                   "-devops.bak' with replace,stats, move '" + nome_banco_logico + "_data' to '" + \
                                   caminho_mdf_ldf + ".mdf', move '" + nome_banco_logico + "_log' to '" + \
                                   caminho_mdf_ldf + "_log.ldf'"
        with open("comandoRestaurarBackup.sql", "w") as arq:
            arq.write(comando_restaurar_backup)

        LinhaDeComando.executar(
            "sqlcmd -S " + self.SERVIDOR_PORTA_STG +
            " -U DEV_INFG_Jenkins -P 95QlyafTZ2s8 -i comandoRestaurarBackup.sql "
            "-o log_comandoRestaurarBackup.txt")

        with open("log_comandoRestaurarBackup.txt", "r") as arq:
            if "processed" in arq.read():
                Log.imprime("SUCESSO - BACKUP RESTAURADO - " + self.NOME_BANCO,
                            "SUCESSO - BACKUP RESTAURADO - " + self.NOME_BANCO)
            else:
                falha_processo_restaurar_backup = True
                Log.imprime("FALHA - NO RESTORE DO BACKUP\n" + arq.read(),
                            "FALHA - NO RESTORE DO BACKUP",
                            classe=BancoDados)
        sleep(5)

        comando_set_online = "alter database " + self.NOME_BANCO_STG + " set online"
        with open("comandoSetOnLine.sql", "w") as arq:
            arq.write(comando_set_online)

        LinhaDeComando.executar(
            "sqlcmd -S " + self.SERVIDOR_PORTA_STG +
            " -U DEV_INFG_Jenkins -P 95QlyafTZ2s8 -i comandoSetOnLine.sql "
            "-o log_comandoSetOnLine.txt")

        tamanho_arquivo_log = stat("log_comandoSetOnLine.txt").st_size

        if tamanho_arquivo_log == 0:
            Log.imprime("SUCESSO - VOLTAR O BANCO DE STG ONLINE",
                        "SUCESSO - VOLTAR O BANCO DE STG ONLINE")
        else:
            with open("log_comandoSetOnLine.txt", "r") as arq:
                Log.imprime("FALHA - VOLTAR O BANCO DE STG ONLINE\n" +
                            arq.read(),
                            "FALHA - VOLTAR O BANCO DE STG ONLINE",
                            classe=BancoDados)
            falha_processo_restaurar_backup = True

        comando_renomear_logical_names = "ALTER DATABASE " + self.NOME_BANCO_STG + " MODIFY FILE (NAME=N'" + \
                                         self.NOME_BANCO + "_data', NEWNAME=N'" + self.NOME_BANCO_STG + \
                                         "_data')\nGO\nALTER DATABASE " + self.NOME_BANCO_STG + \
                                         " MODIFY FILE (NAME=N'" + self.NOME_BANCO + "_log', NEWNAME=N'" + \
                                         self.NOME_BANCO_STG + "_log')\nGO\nALTER DATABASE " + self.NOME_BANCO_STG + \
                                         " set recovery simple;\nGO"

        with open("comandoRenomearLogicalNames.sql", "w") as arq:
            arq.write(comando_renomear_logical_names)

        LinhaDeComando.executar(
            "sqlcmd -S " + self.SERVIDOR_PORTA_STG +
            " -U DEV_INFG_Jenkins -P 95QlyafTZ2s8 -i comandoRenomearLogicalNames.sql "
            "-o log_comandoRenomearLogicalNames.txt")

        with open("log_comandoRenomearLogicalNames.txt", "r") as arq:
            if "has been set" in arq.read():
                Log.imprime(
                    "SUCESSO - LOGICAL NAMES RENOMEAROS - " + self.NOME_BANCO,
                    "SUCESSO - LOGICAL NAMES RENOMEAROS - " + self.NOME_BANCO)
            else:
                falha_processo_restaurar_backup = True
                Log.imprime("FALHA - AO RENOMEAR LOGICAL NAMES\n" + arq.read(),
                            "FALHA - AO RENOMEAR LOGICAL NAMES",
                            classe=BancoDados)

        comando_trocar_usuarios = "USE " + self.NOME_BANCO_STG + "\nGO\n"
        for usuario in self.USUARIO_APLICAO_ACESSO_BANCO:
            comando_trocar_usuarios += "exec sp_dropuser " + usuario + " ;\n"
        comando_trocar_usuarios += "exec sp_grantdbaccess DEV_" + self.USUARIO_APLICAO_ACESSO_BANCO[0] + \
                                   ";\nexec sp_grantdbaccess DEV_INFG_Jenkins;\n" \
                                   "exec sp_addrolemember 'db_owner', 'DEV_" + self.USUARIO_APLICAO_ACESSO_BANCO[0]\
                                   + "';\nexec sp_addrolemember 'db_owner', 'DEV_INFG_Jenkins';\n" \
                                     "exec sp_changedbowner 'sa';\nalter login DEV_" +\
                                   self.USUARIO_APLICAO_ACESSO_BANCO[0] + " enable;\nalter login DEV_" + \
                                   self.USUARIO_APLICAO_ACESSO_BANCO[0] + " with default_database = " + \
                                   self.NOME_BANCO_STG + ";"

        with open("comandoTrocarUsuarioPrdParaStg.sql", "w") as arq:
            arq.write(comando_trocar_usuarios)

        LinhaDeComando.executar(
            "sqlcmd -S " + self.SERVIDOR_PORTA_STG +
            " -U DEV_INFG_Jenkins -P 95QlyafTZ2s8 -i comandoTrocarUsuarioPrdParaStg.sql "
            "-o log_comandoTrocarUsuarioPrdParaStg.txt")

        with open("log_comandoTrocarUsuarioPrdParaStg.txt", "r") as arq:
            if "Changed database context to '" + self.NOME_BANCO_STG + "'." in arq.read(
            ):
                Log.imprime(
                    "SUCESSO - USUARIOS TROCADOS DE PRD PARA STG - " +
                    self.NOME_BANCO,
                    "SUCESSO - USUARIOS TROCADOS DE PRD PARA STG - " +
                    self.NOME_BANCO)
            else:
                falha_processo_restaurar_backup = True
                Log.imprime("FALHA - AO TROCAR OS USUARIOS PRD PARA STG\n" +
                            arq.read(),
                            "FALHA - AO TROCAR OS USUARIOS PRD PARA STG",
                            classe=BancoDados)

        if falha_processo_restaurar_backup:
            exit(1)

        self.criar_backup(prd=False)

        remove(self.CAMINHO_ARQUIVO_BACKUP + self.NOME_BANCO + ".bak")
예제 #24
0
 def executa_scanner_sonar(self):
     LinhaDeComando.executar(SONNAR_SCANNER)
     Log.imprime("SUCESSO NA EXECUCAO DO SONAR",
                 "SUCESSO NA EXECUCAO DO SONAR")
예제 #25
0
 def faz_deploy_nexus(self):
     comando = "%s/bin/grails maven-deploy" % self.GRAILS_HOME
     Log.imprime("INICIANDO DEPLOY NO NEXUS", "INICIANDO DEPLOY NO NEXUS")
     LinhaDeComando.executar(comando)
     Log.imprime("DEPLOY NO NEXUS EXECUTADO COM SUCESSO",
                 "DEPLOY NO NEXUS EXECUTADO COM SUCESSO.")
예제 #26
0
 def teste_executar_comando_sem_exit_code_com_sucesso(self):
     comando = "echo Teste passou"
     valor_esperado = 0
     valor_obtido = LinhaDeComando.executar(comando)
     self.assertEqual(valor_obtido, valor_esperado)
# coding=utf-8
from os import getenv
from time import sleep

from python.assistentes.linha_de_comando import LinhaDeComando
from python.assistentes.log import Log

ACAO = getenv("ACAO")
SERVIDOR = getenv("SERVIDOR")
SERVICO = getenv("SERVICO")

comando = "sc \\\\%s start %s" % (SERVIDOR, SERVICO)
if ACAO == "STOP":
    comando = "sc \\\\%s stop %s" % (SERVIDOR, SERVICO)

retorno = LinhaDeComando.executar(comando, retornar_exit_code=True)
if retorno == 0:
    sleep(10)
    retorno = LinhaDeComando.executar(comando, retornar_exit_code=True)

# 1062 -> retorno ao tentar parar um servico parado
# 1056 -> retorno ao tentar iniciar um servico iniciado
if retorno == 1062 or retorno == 1056:
    Log.imprime("Acao %s executada com sucesso" % ACAO, "Acao %s executada com sucesso" % ACAO)
else:
    Log.imprime("Nao foi possivel executar a acao %s" % ACAO, "Nao foi possivel executar a acao %s" % ACAO,
                script="start_stop_service.py", mensagem_de_erro=True)
    exit(1)
예제 #28
0
WORKING_DIRECTORY = getenv("WORKING_DIRECTORY")
DIRETORIO_SOAPUI = getenv("DIR_SOAPUI")

mensagem = "XML DE TESTES: %s" % XML_PROJETO + \
           "\nTEST SUIT: %s" % TEST_SUIT + \
           "\nENDPOINT TESTES: %s" % ENDPOINT_TESTES
Log.imprime(mensagem, mensagem)

diretorio_xml_testes = XML_PROJETO.split("/")[0]

mensagem = "REALIZANDO UPDATE PARA A ULTIMA VERSAO DO XML DE TESTES DO SVN..." \
           "\nDIRETORIO XML TESTES: %s" % diretorio_xml_testes
Log.imprime(mensagem, mensagem)

comando_update = "cd %s && svn up && cd .." % diretorio_xml_testes
LinhaDeComando.executar(comando_update)

flag_endpoint = ""
if ENDPOINT_TESTES:
    flag_endpoint = "-e %s" % ENDPOINT_TESTES

comando = "/bin/bash %s/testrunner.sh %s -s \"%s\" -j -f %s -r %s" % (
    DIRETORIO_SOAPUI, XML_PROJETO, TEST_SUIT, WORKING_DIRECTORY, flag_endpoint)

if LinhaDeComando.executar(comando, retornar_exit_code=True) is not 0:
    mensagem = "ERRO NA EXECUCAO DO TESTE" \
               "\nTestSuit = %s" % TEST_SUIT + \
               "\nENDPOINT = %s" % ENDPOINT_TESTES
    Log.imprime(
        mensagem,
        mensagem +
예제 #29
0
 def faz_deploy_nexus():
     # Metodo responsavel por fazer deploy no Nexus
     Log.imprime("INICIANDO DEPLOY NO NEXUS", "INICIANDO DEPLOY NO NEXUS")
     LinhaDeComando.executar("mvn deploy")
     Log.imprime("DEPLOY NO NEXUS EXECUTADO COM SUCESSO.",
                 "DEPLOY NO NEXUS EXECUTADO COM SUCESSO.")
예제 #30
0
 def executa_testes(self):
     # Metodo responsavel por executar os testes do Maven
     Log.imprime("INICIANDO TESTES DO MAVEN", "INICIANDO TESTES DO MAVEN")
     LinhaDeComando.executar("mvn test")
     Log.imprime("TESTES ENCERRADOS COM SUCESSO.",
                 "TESTES ENCERRADOS COM SUCESSO.")