Exemplo n.º 1
0
def planejar_sincronizacao(servidor_acesso, arquivo_inventario, ocultar_progresso):
    configurar_vmm(servidor_acesso, ocultar_progresso)
    inventario_local = obter_inventario_local(
        servidor_acesso, arquivo_inventario, ocultar_progresso)

    adquirir_lock(servidor_acesso,
                  inventario_local.agrupamento,
                  inventario_local.nuvem, ocultar_progresso)

    conteudo_arquivo = None
    plano_execucao = obter_plano_execucao(
        servidor_acesso, inventario_local, ocultar_progresso)

    if not plano_execucao.is_vazio():
        imprimir_acao_corrente(
            f'Gerando arquivo {PlanoExecucao.ARQUIVO_PLANO_EXECUCAO}',
            ocultar_progresso)
        status, conteudo_arquivo = plano_execucao.gerar_arquivo()
        validar_retorno_operacao_sem_lock(
            status, conteudo_arquivo, ocultar_progresso)

    liberar_lock(servidor_acesso, inventario_local.agrupamento,
                 inventario_local.nuvem, ocultar_progresso)

    if conteudo_arquivo:
        print(f'\nAlterações a serem realizadas:\n{conteudo_arquivo}')
    else:
        PlanoExecucao.excluir_arquivo()
        print(
            '\nNenhuma diferença encontrada entre o inventário local e o remoto.')
Exemplo n.º 2
0
def validar_conexao(servidor_acesso, ocultar_progresso):
    imprimir_acao_corrente('Validando conexão com o VMM', ocultar_progresso)
    cmd = Comando('testar_conexao', servidor_vmm=servidor_acesso.servidor_vmm)
    status, msg = cmd.executar(servidor_acesso)

    if status and not 'True' in msg:
        status = False
    validar_retorno_operacao_sem_lock(status, msg, ocultar_progresso)
Exemplo n.º 3
0
def configurar_vmm(servidor_acesso, ocultar_progresso):
    imprimir_acao_corrente('Configurando VMM', ocultar_progresso)
    cmd = Comando('configurar_vmm', servidor_vmm=servidor_acesso.servidor_vmm,
                  campos_customizados=[CAMPO_AGRUPAMENTO, CAMPO_ID,
                                       CAMPO_IMAGEM, CAMPO_REGIAO,
                                       CAMPO_REDE_PRINCIPAL])
    status, msg = cmd.executar(servidor_acesso)

    validar_retorno_operacao_sem_lock(status, msg, ocultar_progresso)
Exemplo n.º 4
0
def executar_sincronizacao(servidor_acesso, arquivo_plano_execucao,
                           pular_confirmacao, arquivo_inventario,
                           ocultar_progresso):
    configurar_vmm(servidor_acesso, ocultar_progresso)

    # Obtendo plano de execução
    #
    # Caso de ter informado o plano de execução
    adquiriu_lock = False
    if arquivo_plano_execucao or os.path.isfile(PlanoExecucao.ARQUIVO_PLANO_EXECUCAO):
        imprimir_acao_corrente(
            'Carregando plano de execução', ocultar_progresso)
        status, plano_execucao = PlanoExecucao.carregar_plano_execucao(
            arquivo_plano_execucao or PlanoExecucao.ARQUIVO_PLANO_EXECUCAO)
        validar_retorno_operacao_sem_lock(
            status, plano_execucao, ocultar_progresso)
    # Caso de ter informado o arquivo de inventário
    elif arquivo_inventario:
        print('AVISO: plano de execução será calculado à partir do inventário.',
              flush=True)
        inventario_local = obter_inventario_local(
            servidor_acesso, arquivo_inventario, ocultar_progresso)

        adquirir_lock(servidor_acesso, inventario_local.agrupamento,
                      inventario_local.nuvem, ocultar_progresso)
        adquiriu_lock = True

        plano_execucao = obter_plano_execucao(
            servidor_acesso, inventario_local, ocultar_progresso)
    # Se não informou nem o plano nem o inventário, então informar erro
    else:
        finalizar_com_erro(
            'É necessário informar o plano de execução ou o arquivo de inventário.')

    if not adquiriu_lock:
        adquirir_lock(servidor_acesso, plano_execucao.agrupamento,
                      plano_execucao.nuvem, ocultar_progresso)

    if plano_execucao.is_vazio():
        liberar_lock(servidor_acesso, plano_execucao.agrupamento,
                     plano_execucao.nuvem, ocultar_progresso)
        print(
            '\nPlano de execução vazio: nada a alterar.')
    else:
        # Exibindo confirmação
        if not pular_confirmacao:
            print('\nAs seguintes operações serão executadas:')
            plano_execucao.imprimir_acoes()
            confirmar_acao_usuario_com_lock(
                servidor_acesso, plano_execucao.agrupamento, plano_execucao.nuvem)

        plano_execucao.executar(servidor_acesso, ocultar_progresso)

        liberar_lock(servidor_acesso, plano_execucao.agrupamento,
                     plano_execucao.nuvem, ocultar_progresso)
        plano_execucao.imprimir_resultado_execucao()
Exemplo n.º 5
0
def listar_opcoes(servidor_acesso, ocultar_progresso):
    imprimir_acao_corrente('Listando opções', ocultar_progresso)
    cmd = Comando('listar_opcoes', servidor_vmm=servidor_acesso.servidor_vmm)
    status, opcoes = cmd.executar(servidor_acesso)

    validar_retorno_operacao_sem_lock(status, opcoes, ocultar_progresso)
    regioes = re.search(r'regioes: ([0-9]{1,})', opcoes).group(1)
    str_regioes = '\n'.join(string.ascii_uppercase[0:int(regioes)])
    opcoes = opcoes.replace(f'regioes: {regioes}', str_regioes)
    print('\n' + opcoes)
Exemplo n.º 6
0
def obter_inventario_local(servidor_acesso, arquivo_inventario, ocultar_progresso,
                           filtro_nome_vm=None, filtro_dados_completos=True):
    imprimir_acao_corrente('Obtendo inventário local', ocultar_progresso)

    parser_local = ParserLocal(arquivo_inventario)
    status, inventario_local = parser_local.get_inventario(
        servidor_acesso, filtro_nome_vm, filtro_dados_completos)
    validar_retorno_operacao_sem_lock(
        status, inventario_local, ocultar_progresso)

    return inventario_local
Exemplo n.º 7
0
def imprimir_json_inventario(servidor_acesso, arquivo_inventario,
                             nome_vm, dados_completos, ocultar_progresso):
    configurar_vmm(servidor_acesso, ocultar_progresso)
    inventario_local = obter_inventario_local(
        servidor_acesso, arquivo_inventario, ocultar_progresso,
        filtro_nome_vm=nome_vm, filtro_dados_completos=dados_completos)

    adquirir_lock(servidor_acesso, inventario_local.agrupamento,
                  inventario_local.nuvem, ocultar_progresso)

    inventario_remoto = obter_inventario_remoto(
        servidor_acesso, inventario_local.agrupamento,
        inventario_local.nuvem, ocultar_progresso,
        filtro_nome_vm=nome_vm, filtro_dados_completos=dados_completos)

    liberar_lock(servidor_acesso, inventario_local.agrupamento,
                 inventario_local.nuvem, ocultar_progresso)

    imprimir_acao_corrente('Gerando JSON', ocultar_progresso)
    status, json_inventario = Inventario.get_json(
        inventario_local, inventario_remoto, dados_completos)
    validar_retorno_operacao_sem_lock(
        status, json_inventario, ocultar_progresso)
    print(json_inventario)