Giter Site home page Giter Site logo

ufrgs-hyman / meican Goto Github PK

View Code? Open in Web Editor NEW
10.0 8.0 8.0 21.44 MB

Web application for the management of Dynamic Circuits Networks (DCNs)

License: Other

PHP 52.99% JavaScript 36.08% CSS 9.89% Batchfile 0.03% HTML 0.89% Dockerfile 0.07% Shell 0.06%
dcn nsi network-management network-monitoring dynamic-circuits-networks

meican's People

Contributors

alanvelasques avatar diegopittol avatar eduardoperetto avatar fanesello avatar italovalcy avatar jjsantanna avatar labianchin avatar leonardolauryel avatar lucasleipnitz avatar mqgmaster avatar narcisofilho avatar rafaelhribeiro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

meican's Issues

Colisão de nomes de variáveis nos javascripts

Os javascripts foram desenvolvidos de maneira puramente procedural, basicamente declarando funções e variáveis globais. O problema é com vários nomes (de variáveis e funções) no mesmo escopo (global) podem ocorrer nomes iguais e trazer bugs para o sistema, além de ser um prática não muito boa de engenharia de software.

Solução: usar design paterns de javascripts. Um artigo com algumas idéias foi enviado em 31 de março de 2012. https://javascriptweblog.wordpress.com/2010/12/07/namespacing-in-javascript/

Authorization workflow

  • I was not able to view the authorization workflow that you mentioned
    at GLIF, is it under some option that I ("superguest") cannot see?

Improve Meican GUI

Aprimoramento da interface gráfica do sistema – Finalizar o design e implantação de uma versão aprimorada da interface gráfica do sistema MEICAN.

Policies is a better name than Workflows

In DCN and NSI community, the rules for usage control of network resources are generally referenced by AUP or Acceptable Usage Policies.

My suggestion is change the menu name from Workflows to Policies.

"Network Engineer" role

  • It would be great if there was a "Network Engineer" role that could
    view the complete path (explicit route object) of the circuit through
    the next work. It would also be really nice if an engineer could
    specify the hop-by-hop path in a specific network (for example in
    his/her domain) if the detailed topology information was available.

Paginação nas Listas

Caros,

Observei que a lista de reservas históricas aparece em uma lista contínua. Seria bom realizar paginação. Esse seria o principal caso, mas vale para as outras tabelas também.

Sds,
Fausto

Circuit Alternative Paths

Suporte a caminhos alternativos – Permitirá que o usuário possa especificar dispositivos específicos por onde um circuito dinâmico deverá passar.

End-Point Wizard

Incorporação de um assistente para determinação de pontos finais – Permitirá que usuários possam determinar mais rapidamente quais pontos finais são mais adequados de acordo com suas localizações geográficas.

Fetch de modelos cria uma instância para row encontrada

Ao fazer um fetch de um modelo qualquer, o resultado será um array de instâncias do modelo. O problema é que para cada item (row) encontrado na tabela, um objeto deverá ser instânciado, gerando overhead. Além disso, há informação redundante, já que cada instância carrega os atributos da tabela. Como o sistema já faz muitas queries, isso pode eventualmente gerar um overflow da memória.

Solução:

Remover os atributos do construtor dos modelos.
Ao invés de o resultado do fetch ser um array de objetos, pode ser um array de array (com os campos e valores do fetch).

ACL

O ACL é uma implementação realmente complexa. É conectado a várias classes do sistema. O que torna uma parte crítica. Até hoje surgem bugs no ACL. Não há testes automáticos, então sempre que se mexe em algo no ACL, bugs novos podem surgir, que talvez demorem para serem detectados.
Outro grande problema é a atualização da arvore do ACL. Sempre que um registro é inserido no banco, a árvore precisa ser atualizada. Isso gera um absurdo de mais de 1000 queries SQL!!

Dificuldade de mudança nos schemas do banco de dados

Sempre que uma modificação é feita no banco de dados, toda a equipe de desenvolvimento e o servidor em produção precisa atualizar manualmente o seu banco de dados.

Solução: implementar scripts para automatizar o processo. Pode-se olhar o recurso de migrations do Ruby on Rails.

Não é robusto em caso de falhas nos webservices

Se por algum motivo os webservices (Oscars, OscarsBridge, ODE, ...) falharem (ou estiverem indisponíveis), o Meican não responderá adequadamente. Sendo que o usuário obterá erros estranhos e não conseguirá identificar o motivo do erro.

Solução:

  1. implementar tela de status dos webservices, para que o usuário possa saber se algum serviço/webservice está inoperante.
  2. testar/usar o sistema com os webservices indisponíveis e melhorar a usabilidade do sistema nessas situações (informar adequadamente erros).

STP representation

MEICAN inherited the STP interpretation from OSCARS where the URN of an
STP encodes the domain/network, device and port. This logic is not applicable to
the NSI URN representation, which is only officially compose of two informations
only: network-id and local-id.

  • It is necessary a new STP representation internally at MEICAN that doesn't break
    the NSI specification and is compatible with other domains not based on
    OSCARS.
  • An initial proposal is to merge the current representation for device and port to a
    single entity called local-id.
  • The representation of this new entity on the map visualization can be done
    initially as follows:
  1. All STPs from a given network that have the same coordinate should be
    plotted on a single point in the map. And should be labeled with the
    longest unique prefix match.
  2. All STPs from a given network that don't have coordinates should be
    plotted as a single point in the map. Using the Network coordinate and
    label.
  3. In the reservation form merge the device and port fields into a single
    local-id or STP field. Defining a more intuitive name is recommended.
  4. An additional possibility for this proposal is to provide a custom parser
    configuration for the domain, to allow.

Campos são lidos diretamente do POST no controller

No controller, os campos enviados para salvar, são lidos diretamente usando Common::POST. Desse modo é necessário ler cada campo do sendo enviado. Geralmente os frameworks parseiam o POST e colocam os dados num array automaticamente, esse array é passado diretamente para o modelo para salvar. Isso evita várias linhas de código e erros de digitação, além de deixar o código mais simples e reusável.

Redirecionamento de páginas não é feito de maneira adequada

Por exemplo, ao salvar uma rede é enviado um POST para a action networks/add após salvo é mostrado a lista das redes, como na action networks/show. Porém a URL continua em networks/add. Isso acontece pois ao invés de redirecionar (por header) dentro da action (add) é chamada outra action (show) que não condiz com a action original.

Solução: trocar todas os "redirects" e implementar em javascript um mecanismo que detecte os redirects ao carregar o pjax.

Migrate Meican to OSCARS v0.6

One of the OSCARS developers had a chance to briefly look over it and
mentioned a few possible issues:

  • the wrappers for GetTopology and RefreshPath in MEICAN are no longer
    supported in OSCARS v0.6
  • in OSCARS v0.6 we added an optional message properties element to all
    the messages which contains a global transaction id and a name for the
    message originator. But it can be omitted unless you want to use it.
  • in OSCARS v0.5 we used the axis2/rampart tooling for the web services
    but in OSCARS v0.6 we use cxf. Since you are using a php client there
    may be some tweaks needed to get the messages on the wire compatible.
    Sometimes the way the namespaces are included in the messages can be
    different. Hopefully by now the WS tools are mature enough that this is
    not a big deal

User management

Better user management scalability, through the ability of a domain administrator
to add new users to that given domain, or to add/remove permission to it's
domain to existing users.

OSCARS High Availability

Auxilio num estudo sobre alta disponibilidade do OSCARS – Resultará no design de uma solução que permitirá ter uma rede DCN estável e resiliente.

Falta de paginação (em todas as telas)

Todas as telas deveriam ser paginadas. Apresentando um limite de 20 (por exemplo) itens e permitindo que o usuário troque de página. O problema é que o framework do Meican não é flexível para isso: não é fácil passar mais parametros para o controller, não há uma maneira fácil de enviar esses parametros para os modelos (de maneira genérica) para que as queries sejam geradas com instruções LIMIT e OFFSET.

Solução: implementar um mecanismo de paginação genérico para todas as telas. Preferivelmente reusar de algum framework (Rails, Yii, CakePHP, ...).

Validação das telas de cadastro

Telas de cadastro (domínios, redes, dispositivos, ...) tem muitos campos que podem parecer confusos para o usuário. Além disso, falta os validar campos. Por exemplo, campo Endereço IP e Número de portas podem ser preenchidos com texto, e que ao clicar em salvar geram um erro de SQL, que é pouco intuitivo para o usuário.

Formatação de datas é feita em várias partes do código

Aparentemente o sistema prevê que usuários possam configurar a formatação de datas de acordo com sua localidade. Há pelo menos 20 chamadas do tipo DateTime::format em que é definido um formato de data em cada uma delas.

Solução: Criar uma classe estática com as formatações de date, time, datetime, float, currency, .... em dois sentidos, formatar do banco para a tela, e da tela para o banco. Deve ser usado o formato baseado na configuração salva na sessão (conforme opção do usuário). Para formatar para a tela procurar chamar essa classe na view.

Sem especificação de testes

Toda vez que uma mudança é feita no sistema, novos testes são feitos. Porém esses testes não estão especificados e documentados em nenhum lugar.
Além disso, os testes poderiam ser automatizados.

Solução:

Especificar testes para o sistema. Testes que busquem encontrar problemas (mostrar que não funciona).
Estudar e usar teste automatizado, a melhor ferramenta para PHP é o PHP Unit

Problemas de performance

Exemplos:

  1. No meican.cipo.rnp.br a página de histório demora 4s (!!!) para carregar.
  2. Login demora muito, pois a ACL é carregado.

Funcionalidade de Log

Caros,

Observei que fica muito difícil saber qual a razão para uma reserva falhar. Seria importante ter uma funcionalidade de Logging e que isso fosse mostrado na interface para o usuário final.

Sds,
Fausto

Remove FK for domain roles

The foreign key for user domain roles is in delete cascade mode. The cascade removes permissions from current users incorrectly.

HTML table

Várias views usam extensamente tabelas onde não é necessário. Por exemplo as telas de cadastro usam tabelas para colocar os labels a direita e inputs a esquerda.

Solução: reescrever todas as telas de cadastro (pricipalmente das apps topology e aaa). Verificar onde são usadas tabelas, que deveriam ser apenas para listagens.

NSI ACKs

MEICAN is not returning correctly the acks to NSI Providers:

2016-06-29 14:35:26,586 DEBUG application play-akka.actor.default-dispatcher-4398 - Parsing SOAP ack (200) from urn:ogf:network:cipo.ufrgs.br:2014:nsa:meican2 at http://meican.cipo.rnp.br/circuits/requester: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.ogf.org/nsi/2013/12/framework/headers" xmlns:ns2="http://schemas.ogf.org/nsi/2013/12/connection/types"><SOAP-ENV:Header><ns1:nsiHeader></ns1:nsiHeader></SOAP-ENV:Header><SOAP-ENV:Body><ns2:acknowledgment/></SOAP-ENV:Body></SOAP-ENV:Envelope> 2016-06-29 14:35:26,588 WARN application play-akka.actor.default-dispatcher-4398 - Communication error with provider urn:ogf:network:cipo.ufrgs.br:2014:nsa:meican2 at http://meican.cipo.rnp.br/circuits/requester: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 256; cvc-complex-type.2.4.b: The content of element 'ns1:nsiHeader' is not complete. One of '{protocolVersion}' is expected. - org.xml.sax.SAXParseException: cvc-complex-type.2.4.b: The content of element 'ns1:nsiHeader' is not complete. One of '{protocolVersion}' is expected.

URNs Exchange among MEICAN Users

Inclusão de funcionalidade para troca de URNs entre usuários MEICAN – Permitirá que usuários MEICAN possam indicar pontos finais através de URNs diretamente, acelerando o acesso aos pontos finais (end-points).

Chamada de webservices síncrona

Quando uma página do Meican é requisita, geralmente há chamada de algum webservice na mesma requisição. O problema são com webservices que fazem modificações (por ex. criar reserva no OSCARS) em que o usuário precisa esperar muito tempo para o carregamento da página (alta latência).

Solução: Fazer chamada assíncrona: (por ex.) reserva é enviada ao Meican, Meican salva no banco de dados e retorna para o usuário. Enquanto isso, um daemon verifica que uma nova reserva foi inserida no banco, envia para o OSCARS e atualiza a situação da reserva no banco.

"I forgot my password" page doesn't work

An error occurs when trying to access "I forgot my password" page in the login page. The error has the following description:

Error processing your request. Sorry. :(
A error occurred while the Web server was processing your request.

This error has been registered. Please use the feedback option in the top menu if you want to report more informations. Thank you.

Administrator

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.