Painel gerenciador do sistema
[editar] Objetivo
Possibilitar a usuários da implantação ou outros setores pertinentes a gestão das aplicações de clientes no servidor sem a intervenção do departamento de sistemas ou do CPD.
[editar] Atores
- Usuários do painel
- Servidores de aplicação
- CPD
[editar] Pré-requisitos
- O CPD deverá disponibilizar um usuário com permissão de administrador para que o painel possa realizar suas tarefas através de linha de comando.
- O CPD deverá padronizar o nome dos tomcats de acordo com este documento.
- O responsável pelo banco de dados padrão dos sistemas deverá nomeá-los no subversion de forma padronizada. Bancos cujo nome está fora do padrão não serão reconhecidos pelo painel.
- As versões oficiais do sistema deverão ser colocadas no subversion e nomeadas de forma padronizada. Versões com nome fora do padrão não serão reconhecidas pelo painel.
- Toda e qualquer ação executada pelo painel deverá ser registrada em um arquivo de log. Este log poderá ser consultado dentro do próprio painel em uma rotina específica.
[editar] Resultado esperado
- Utilizando a linguagem de programação python + o framework django, introduzir no departamento de P&D uma nova linguagem que permite um considerável ganho no tempo de desenvolvimento.
- Permitir o acesso e a gestão de aplicações no servidor para usuários sem conhecimento de programação ou gerencia de servidores linux.
- Sistematizar, controlar e programar a troca de versões.
[editar] Diagrama de classes
[editar] Fluxo de eventos
[editar] Fluxos principais
Fluxo 1: Usuário acessa o painel.
- Sistema exibe a tela de login conforme RN01.
Fluxo 2: Uma vez logado no painel, usuário é direcionado à tela inicial.
- Será exibida ao usuário a tela inicial do sistema com o menu montado somente com as rotinas que o mesmo possui acesso.
Fluxo 3:
[editar] Fluxos alternativos
Fluxo 1:
[editar] Fluxos de exceção
Fluxo 1:
[editar] Regras de negócio
[editar] RN01 - Tela de login
O acesso ao painel será permitido somente para usuários autenticados, fazendo com que seja exibida a tela de login sempre que um novo usuário ou um usuário não autenticado acessa-lo.
A tela de login não permitirá que usuários ainda não cadastrados se registrem no painel. Por medidas de segurança este cadastro será feito manualmente pelo departamento de sistemas ou pelo CPD. Usuários já cadastrados deverão se autenticar na tela de login através dos seguintes dados:
- e-mail: Endereço de e-mail terminado em @atsinformatica.com.br. Qualquer endereço de e-mail fora do domínio da ATS não será permitido.
- Senha: Senha gerada pelo sistema para o usuário em questão no momento de seu cadastro.
[editar] RN02 - Cadastro de usuários
Rotina onde serão cadastrados os usuários que terão permissão para logar-se no painel. Para cadastrar novos usuários serão utilizados:
- e-mail: Endereço de e-mail do usuário, que também será utilizado para logar-se no painel.
- Senha: Senha de acesso ao painel que o usuário utilizará.
- Confirmar senha: Confirmação da senha digitada no campo acima.
- Permissões: Define as permissões de acesso do usuário nas rotinas e funcionalidades do painel. As permissões do usuário serão dadas/revogadas marcando/desmarcando os campos abaixo:
- Cadastro de usuários: Garante acesso total à rotina de cadastro de usuários.
- Configurações: Garante acesso total à rotina de configurações.
- Agendamento de troca de versão: Garante acesso à rotina de agendamento de troca de versões. Com este campo marcado o acesso do usuário será somente de consulta. Para especificar as ações que podem ser executadas por usuários que tem acesso a rotina em questão, devem ser marcados os campos abaixo:
- Resulth WEB Start/Business/ERP: Permite ao usuário fazer agendamento de troca de versão para os sistemas Start, Business e ERP.
- Resulth WEB Telefonia: Permite ao usuário fazer agendamento de troca de versão para os sistemas de Telefonia.
- Resulth WEB OS: Permite ao usuário fazer agendamento de troca de versão para os sistemas de Ordem de Serviço.
- Agendamento de tarefas: Garante acesso à rotina de agendamento de tarefas. Com este campo marcado o acesso do usuário será somente de consulta. Para especificar as ações que podem ser executadas por usuários que tem acesso à rotina em questão, devem ser marcados os campos abaixo:
- Parar, iniciar e reinicar tomcat: Garante ao usuário permissão para parar, iniciar e reiniciar tomcats.
- Deletar índices do lucene: Garante ao usuário permissão para deletar índices do lucene. Esta opção poderá ser marcada somente se a opção anterior estiver marcada.
- Consultar status do servidor: Permite ao usuário acesso à rotina de consulta de status do servidor.
- Ativo: Determina se o cadastro do usuário está ativo. Caso não esteja, o mesmo não poderá logar-se no painel.
Após 30 dias de inatividade, os usuários deverão ser automaticamente marcados como inativos.
[editar] RN03 - Configurações
Rotina onde deverão ser inseridas informações sobre como o painel se conectará com os servidores de aplicação. Algumas informações serão inseridas no sistema através de um mestre-detalhe para cada servidor, e outras serão gerais para todos os servidores.
Mestre-detalhe
- Endereço do servidor: Campo onde deverá ser informado o endereço do servidor, exemplo: resulthweb.com.
- Porta (SSH): Campo onde deverá ser informada a porta para conexão via SSH com o servidor.
- Usuário: Campo onde deverá ser informado um usuário já cadastrado no servidor com acessos administrativos.
- Senha: Campo onde deverá ser informada a senha do usuário do servidor.
- Tomcat7 dir: Campo onde deverá ser informado o diretório onde ficam armazenados os tomcats no servidor, exemplo: /etc.
- Tomcat7 logs dir: Campo onde deverá ser informado o diretório onde ficam armazenados os logs dos tomcats.
- Backup dir: Campo onde deverá ser informado o diretório onde ficarão armazenados os backups gerados pelo painel.
- Botão [Verificar conexão com o servidor]: Quando acionado este botão verificará se é possível conectar-se ao servidor em questão com o endereço, porta, usuário e senha fornecidos. Também será verificada a existência do diretório de backup e se o usuário/senha possuem permissão de leitura/gravação/exclusão no mesmo. Se a verificação foi bem sucedida uma mensagem com esta informação será exibida ao usuário e o botão [Adicionar] será habilitado. Caso contrário uma mensagem com a não conformidade será exibida e o botão [Adicionar] deverá permanecer desabilitado.
- Botão [Adicionar]: Quando acionado, inclui no grid o novo servidor.
- Grid: Lista os servidores já adicionados nas seguintes colunas:
- SERVIDOR (Endereço do servidor)
- PORTA
- USUÁRIO
- SENHA
- TOMCAT DIR.
- BACKUP DIR.
Gerais
- Nº de clientes por tomcat: Define a quantidade de aplicações a ser armazenada dentro de cada tomcat nos servidores.
- Caminho SVN para o banco padrão: Neste campo deverá ser informado o caminho no subversion do Java onde serão buscados os bancos de dados padrão das aplicações ERP, Telefonia, OS e etc. O nome de cada banco de dados deverá ser padronizado.
- Caminho SVN para versões: Neste campo deverá ser informado o caminho no subversion do Java onde serão buscadas as versões oficiais das aplicações. Os nomes das versões deverão ser padronizados.
- Caminho do servidor de banco de dados: Campo onde deverá ser informado o caminho do servidor onde ficarão armazenados os bancos das aplicações.
- Usuário do banco de dados: Campo onde deverá ser informado um usuário do banco com privilégios de administrador.
- Senha do banco de dados: Campo onde deverá ser informada a senha do usuário mencionado no campo acima.
- Porta do banco de dados: Campo onde deverá ser informada a porta de acesso ao banco de dados.
Será criado no subversion do Java um usuário específico para o painel, come acesso somente leitura ao banco de dados padrão e as versões oficiais.
Este usuário e senha ficarão dentro do código fonte do painel.
[editar] RN04 - Agendamento de troca de versão
Esta rotina permitirá aos usuários do painel agendar troca de versões em uma data e horário programado. Este processo ocorrerá da seguinte maneira:
- Assim que a rotina for renderizada será apresentado ao usuário somente um combobox com as seguintes opções:
- Resulth WEB Start/Business/ERP
- Resulth WEB Telefonia
- Resulth WEB OS
- À direita do combobox haverá o botão [Selecionar] que quando acionado, com base nas configurações do painel, buscará nos servidores aplicações com base na opção selecionada conforme RN06.
- A lista de aplicações existentes nos servidores será exibida em um grid (ordenado por servidor, tomcat e aplicação) com as seguintes colunas:
- SEL.: Coluna que permite marcar/desmarcar um determinado registro do grid. Por padrão todos serão selecionados. Haverá no cabeçalho do grid esta mesma opção que marca/desmarca todos os registros.
- CLIENTE: Nesta coluna serão listados os nomes das aplicações encontradas.
- TOMCAT: Nesta coluna serão listados os tomcats em que se encontram cada aplicação.
- SERVIDOR: Nesta coluna serão listados os servidores em que se encontram cada aplicação.
Uma vez que o usuário fez a filtragem da versão do sistema e teve todas as aplicações existentes listadas no grid, serão habilitados os seguintes campos:
- Data: Campo onde o usuário deverá informar a data para qual deseja agendar a troca de versão. Não será permitido informar uma data menor que a data corrente (do servidor).
- Hora: Campo onde o usuário deverá informar a hora para qual deseja agendar a troca da versão. Não serão permitidos horários entre 06:00 da manhã e 20:00 da noite.
- Salvar: Botão que quando acionado salva a o agendamento.
Quando a rotina em questão for acessada, os agendamentos já existentes serão exibidos em um grid com as seguintes colunas:
- VERSÃO: Coluna que informará se o agendamento refere-se ao Resulth WEB Start/Business/ERP, Resulth WEB Telefonia ou Resulth WEB OS.
- DATA/HORA: Colunas que informa a data e hora dos agendamentos.
- USUÁRIO: Coluna que informa o usuário responsável pelo agendamento.
- STATUS: Informa a situação atual do agendamento com as seguintes opções:
- EXECUTADO: A troca de versão foi realizada com sucesso.
- PENDENTE: A troca de versão ainda não foi executada.
- FALHOU: A troca de versão não pode ser executada por algum motivo.
- CONSULTAR/ALTERAR/EXCLUIR: Coluna que permite ao usuário visualizar, alterar ou excluir um determinado agendamento.
[editar] Troca de versão
O painel terá uma funcionalidade que de tempos em tempos verificará se há troca de versões agendadas. Caso haja uma troca de versão agendada, esta ocorrerá da seguinte maneira:
- Na data e hora do agendamento o sistema acessará cada tomcat de cada servidor parando seu serviço.
- Em seguida, o painel acessará as pastas work, temp e logs de cada tomcat em cada servidor excluindo permanentemente seu conteúdo.
- O painel acessará a pasta webapps de cada tomcat em cada servidor excluindo o arquivo .war e sua respectiva pasta de cada aplicação que foi selecionada no agendamento.
- O painel acessará o diretório onde fica as versões no SNV (informado nas configurações do painel) e copiará o arquivo .war para o diretório webapps de cada tomcat em cada servidor. Ao copiar o arquivo .war para o diretório webapps ele será renomeado com o nome de cada aplicação selecionada no agendamento.
- Em seguida o painel iniciará novamente o serviço de cada tomcat em cada servidor.
[editar] RN05 - Agendamento de tarefas
Esta rotina permitirá aos usuários do painel agendar determinadas tarefas para serem executadas no servidor em uma data e horário programado. Assim que a tela for renderizada serão exibidos para o usuário os seguintes campos e funcionalidades:
- Tarefa: Combobox onde o usuário poderá selecionar a tarefa que deseja executar. As opções serão as seguintes:
- Parar tomcat
- Iniciar tomcat
- Reiniciar tomcat
- Deletar índices do lucene (reiniciará o tomcat)
- Servidor/Tomcat: Este grid exibirá a lista de todas as aplicações existentes em todos os servidores a exemplo de como ocorre no item 2 da RN04. Nesta lista nenhuma aplicação será selecionada por padrão, o usuário deverá selecionar as versões nas quais deseja executar uma determinada tarefa.
- É obrigatório que pelo menos uma versão seja selecionada.
- Ao marcar/desmarcar uma determinada versão, todas as demais versões que fazem parte do mesmo tomcat também deverão ser marcadas/desmarcadas.
- Data: Campo onde deverá ser informada a data em que a tarefa deverá ser executada.
- Hora: Campo onde deverá ser informada a hora em que a tarefa será executada.
- Botão [Salvar]: Botão que quando acionado salva o agendamento.
[editar] Execução de tarefas
O painel terá uma funcionalidade que de tempos em tempos verificará se há tarefas agendadas. Caso haja alguma tarefa agendada, esta será executada da seguinte maneira.
- Na data e hora do agendamento o sistema acessará os tomcats selecionados em seus respectivos servidores.
- Se a tarefa agendada foi Parar tomcat o painel enviará o comando para interromper o serviço dos tomcats selecinados em seus respectivos servidores.
- Se a tarefa agendada foi Iniciar tomcat o painel enviará o comando para iniciar o serviço dos tomcats selecionados em seus respectivos servidores.
- Se a tarefa agendada foi Reiniciar tomcat o painel enviará o comando para interromper o serviço dos tomcats em seus respectivos servidores e após 60 segundos será enviado o comando para iniciar o serviço dos tomcats.
- Se a tarefa agendada foi deletar índices do lucene, o painel primeiro enviará o comando para interromper o serviço dos tomcats selecionados em seus respectivos servidores. Em seguida ele acessará o diretório /bin de cada tomcat e removerá todas as pastas cujo nome é iniciado por LuceneIdexes. Na sequencia será enviado o comando para iniciar novamente o serviço dos tomcats em questão.
[editar] RN06 - Listar versões existentes nos servidores
A listagem de versões existentes nos servidores considerará o tipo de versão selecionada (passada como parâmetro) para fazer a busca. A busca considerará os servidores adicionados nas configurações do painel e será executada nas seguintes etapas:
- O painel acessará cada servidor em seu respectivo Tomcat7 dir.
- O painel buscará os tomcats de acordo com o tipo de versão conforme segue abaixo:
- Resulth WEB Start/Business/ERP: Serão considerados somente tomcats cuja pasta tem o nome tomcat7 ou tomcat7 + identificação do tomcat, exemplo: tomcat7; tomcat7_1; tomcat7_2; tomcat7_3; tomcat7_4; tomcat7_10 e etc.
- Resulth WEB Telefonia: Serão considerados somente tomcats cuja pasta tem o nome tomcat7_telefonia ou tomcat7_telefonia + identificação do tomcat, exemplo: tomcat7_telefonia; tomcat7_telefonia_1; tomcat7_telefonia_12; tomcat7_telefonia_22 e etc.
- Resulth WEB OS: Serão considerados somente tomcats cuja pasta tem o nome tomcat7_os ou tomcat7_os + identificação do tomcat, exemplo: tomcat7_os; tomcat7_os_4; tomcat7_os_6; tomcat7_os_33 e etc.
- Em seguida o painel acessará o diretório /bin/com.ats.config de cada tomcat fazendo uma lista das aplicações existentes em todos os tomcats de todos os servidores. Cada diretório existente dentro de /bin/com.ats.config será considerado como uma aplicação. A lista de aplicações deverá conter o nome da aplicação, o tomcat e o servidor em que se encontram, exemplo:
- sorvete_salada | tomcat7 | resulthweb.com
- dmk | tomcat7 | resulthweb.com
- perdiesel | tomcat7_1 | jresulth.atsinformatica.com.br
[editar] RN07 - Consultar status do servidor
Quando acessada esta rotina exibirá o status atual do servidor. Estes dados serão exibidos em duas abas.
[editar] Sistema
Serão exibidos dados do SO e hardware do servidor como uso de memória, uso da CPU e etc. Os dados serão exibidos com uma formatação específica, a exemplo de como ocorre quando chamamos o aplicativo Galnces via linha de comando.
[editar] Aplicações
Será exibido em um iframe os mesos dados que são exibidos quando acessamos o probe de cada tomcat. Consequentemente, por se tratar de uma informação exclusiva de cada tomcat, o sistema listará os tomcats existentes em um combobox e só após o usuário selecionar o tomcat desejado será carregado seu probe.
Antes de chamar o probe, o painel simulará uma conexão com o tomcat para verificar se o mesmo está respondendo.
Caso não haja resposta, será exibida uma mensagem com a não conformidade orientando o usuário que procure o CPD.
[editar] RN08 - Validações
- Um mesmo tomcat/servidor/aplicação não poderá existir em dois agendamentos de troca de versão no mesmo dia.
- Um mesmo servidor não poderá ter agendamentos (troca de versão e/ou tarefas) cujo intervalo entre um e outro é menor que 60 minutos.
[editar] RN09 - Criação de novos links
Por hora a criação de novos links considerará que o servidor de aplicação irá trabalhar somente com um tomcat para cada tipo de sistema.
Futuramente, se necessário, esta rotina será adaptada para trabalhar com vários tomcats.
Nesta rotina serão solicitadas informações necessárias para criação de um novo link conforme segue abaixo:
- Nome da aplicação: Neste campo deverá ser informado o nome da aplicação que será crida. É importante ressaltar que este nome será utilizado também para criar o respectivo banco de dados, e portanto não serão permitidos caracteres especiais e nem espaços.
- CPF/CNPJ do cliente: Campo onde deverá ser informado o CPF/CNPJ do cliente para quem link será criado. Através desse dado o painel identificará os módulos do sistema em que o cliente em questão possui acesso.
- Versão do sistema: Combobox onde o usuário deverá selecionar para qual versão será criado o novo link. Este combobox listará somente opções compatíveis com os módulos cujo usuário possui acesso em sua senha. De modo geral as possíveis opções serão as seguintes:
- Resulth WEB Start/Business/ERP
- Resulth WEB Telefonia
- Resulth WEB OS
- Botão [Gerar link]: Iniciará o processo de criação de link. Depois que o link for criado com sucesso, uma mensagem será exibida ao usuário informando o link para acesso ao novo sistema.
[editar] Processo de criação do link
- O painel acessará o Caminho SVN para banco padrão informado nas configurações do painel copiando o banco de dados padrão referente à versão para qual o link será criado.
- O painel criará um novo banco no servidor de banco de dados com o nome informado no campo Nome da aplicação e utilizando a codificação UTF-8.
- O painel acessará o diretório /bin/com.ats.config do respectivo tomcat copiando uma pasta de uma aplicação já existente e colando-a no mesmo diretório já renomeando-a com o nome informado no campo Nome da aplicação.
- Em seguida o painel acessará a pasta da aplicação que acaba de criar e editará o arquivo application.properties informando na propriedade indexacao.pesquisa.pasta o texto LuceneIndexes + NomeDaAplicaçãoCriada, exemplo: LuceneIndexesPerdiesel.
- Ainda na pasta da nova aplicação o painel acessará o diretório spring e editará o arquivo spring-resource.xml alterando o nome do banco de dados para o novo banco criado no passo 2.
- O painel acessará o Caminho SVN para versões informado nas configurações do painel e copiará a versão correspondente com a que foi selecionada no campo Versão do sistema.
- O painel irá colar no o diretório webapps do tomcat correspondente à versão do sistema a versão copiada do SVN. Ao colar, a versão será renomeada com o nome informado no campo Nome da aplicação.
[editar] RN10 - Download de aplicações de clientes
Assim que essa rotina for acessada serão exibidas em um grid todas as aplicações, de todos os tomcats de todos os servidores. Ao clicar sobre um determinado registro no grid, o painel permitirá ao usuário fazer o download do war daquele cliente.