Giter VIP home page Giter VIP logo

nmsprime / nmsprime Goto Github PK

View Code? Open in Web Editor NEW
38.0 9.0 15.0 87.83 MB

Network Provisioning Tool and Network Management Platform

Home Page: https://www.nmsprime.com/

PHP 33.37% Shell 0.21% JavaScript 19.52% HTML 39.02% CSS 5.45% Python 0.04% CoffeeScript 0.11% Makefile 0.01% Go 0.05% Smarty 0.01% TeX 0.08% Dockerfile 0.01% Vue 0.01% Hack 0.04% Blade 1.97% SCSS 0.02% Less 0.11% Pug 0.01%
laravel cacti nagios nmsprime docsis provisioning

nmsprime's Introduction

nmsprime's People

Contributors

olebowle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nmsprime's Issues

NMS: start integration of NMS

Next Steps:

  • MPS: start / adapt customers
    One Customer with multipe Modems: let net and cluster be 0 ... this
    will skip net and cluster specific search
  • HfcCustomer: API for use with different Provisioning Systems. It should also be possible to use multi provisioning systems

DONE:

  • first focus should be on: tree table and reordering project folders
  • integrate Contract on Customer Topo View

[LAR-39] created by @schmto

Problems with migrations rollback/refresh on modules

It seems that
php artisan module:migrate-rollback MODNAME
is not able to perform without errors.

Typically you get error messages related to other Modules – e.g. if rolling back ProvBase you get errors like

PHP Fatal error: Class 'CreatePhonenumberTable' not found in /var/www/lara/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php on line 301
{"error":{"type":"Symfony\\Component\\Debug\\Exception
FatalErrorException","message":"Class 'CreatePhonenumberTable' not found","file":"\/var\/www\/lara\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Migrations\/Migrator.php","line":301}}

This is related to a class from the ProvVoip module. It seems that in this case ProvVoip has to be re rolled back first. The rollback of ProvBase is not done in this case, the eventually following seed adds data to the (still) existing tables.

The question is: Is this a general problem with laravel or is something wrong with our code? In development we can use workarounds to avoid the problem – but it should be checked before production

[LAR-41] created by @xee8ai

rpm: docsis tool build own rpm

  • has to be compiled
  • to build use fpm package

fpm -s dir -t rpm -v $version --description "$descr" $options $build_opt $exclude -n nms-base $dir_base=/var/www/ $files $dir_rpm/mysql=/var/www/admin/install/mysql

[LAR-12] created by @schmto

MTA: generic handling API

open questions:

  • should MTAs be stand alone ? no
  • MAC verification or should we trust agent remote id ? yes
  • separate table to endpoints ? YES

[LAR-4] created by @schmto

Authentication: add generic user interface

Notes from Dez. 2015:

  • fix Bug with login page (should be called also on first index page and if no user is logged in the user should be redirected)
  • add MVC to add users from GUI
  • Menu: Drop Down open Menu on mouseover
  • Menu: use Logout / Edit Profile

[LAR-15] created by @schmto

IpPool: short adaptions and fixes

  • create does not create / update DHCP Config
  • validation rules should be better
  • broadcast / route field must be required
  • validate ip min / max if addr is in network segment
  • add description field

[LAR-49] created by @schmto

Contract: short adaptions for first start

DONE

  • Start date after now / expire date required logical validator rules to validate
  • rename internet_access to network_access and add create flage to get_form_fields in ContractController (affects: migrate, seed, MVC)
  • Qos / Voip next month should contain an element called like 'no charge change'

[LAR-47] created by @schmto

Cronjob: enable L5 cron - use for QOS, NMS

TODO:

  • cron to build mta configfiles. Is MTA build while update ?

DONE:

  • enable L5 cron stuff
  • add qos change on a monthly basis QOS from contract to modem
  • push access rights to logfiles after every cron runs. Could be done in a general clean up task
  • remove NMS *kml and *svg files public/modules/hfcbase/erd/ public/modules/hfcbase/kml public/modules/hfccustomer/erd/

[LAR-48] created by @schmto

write-voip-api-to-envia

API description can be found on https://www.enviatel.de/portal/api/rest/doc

TODO from Tech Talk:

  • phonenumbermanagement -> activation date -> set auto to next day
    phonenumbermanagement -> auto fill contract infos if voip contract does not differ from contract
  • phonbook entry: for create of contract auto 'no', move phonenumermanagement
  • config for envia tarif variation
  • sipdomain ? what is this ?
  • make port number a hidden field and auto increment, add info message to modem/mta layer when adding more than 2 numbers: "only available on complex modem typs"
  • difference envia ek/vk tarif -> find api solution
  • cancel order
  • implement get_usage_csv() for CVS list with all calls. import into a new MVC

[LAR-43] created by @xee8ai

Create tables for CMTSs and IP pools for generating dhcpd.conf

For supporting more than one CMTS with automagically assigned IPs we will need count(device_type) * count(cmts) classes with several matching statemants and the same number of subnets/pools. At least until combination of groups in pools is possible…

To autogenerate the configfiles we have to store these informations in the database…

[LAR-18] created by @xee8ai

DHCP: Restart dhcp Server after Configuration got changed

  • dhcpd.service needs to get restarted after modem/endpoint/mta/cmts/ippool settings have changed (created/updated)
  • pay attention to models that call the update method through ->save() in the Observer-created method
  • add a deamon script named nmsd.php (that is started by cron job?? -> better on boot process) that generically proofs if there is a file named like the service and if so deletes this file and starts the script that restarts the service
  • so the nmsd won't get interrupted when a service needs some time to get restarted (dhcpd with a lot of entries)

[LAR-36] created by @NinoRy

contract: add contract layer

MVC: Contract: to Module ProvBase
---------------------
number:integer:unsigned,
number2:string[32],

company:string,
salutation:string,
firstname:string,
lastname:string,

street:string,
zip:string[16],
city:string,
country_id:integer:unsigned,
x: float,
y: float,

phone:string[100],
fax:string[100],
email:string,
birthday:date,

contract_start:date,
contract_end:date,

internet_access:boolean,

qos_id:integer:unsigned,
next_qos_id:integer_unsigned,

voip_id:integer:unsigned,
next_voip_id:integer:unsigned,

sepa_iban:string[34],
sepa_bic:string[11],
sepa_holder:string,
sepa_institute:string,

create_invoice:boolean,

login:string[32],
password:string[32],

description:text,

MVC: add to Modem
----------------------------------
contact:string,
street:string,
zip:string[16],
city:string,
country_id:integer:unsigned,

// should be already available
x: float,
y: float,

// ?
contract_id:integer:unsigned

[LAR-42] created by @schmto

Store number of allowed public cpe IPs in database

A common problem is the shortage of IPv4 addresses. To fight this one should be able to configure the number of public IPs assigned to CPE attached to this modem.

This can be controlled either using “lease limit x” in dhcpd class definition (one extra class per number needed) or – maybe even better – MaxCPE in config file (raise number by one in case of MTA active!).

Attention: The first option can have nasty side effects – consider a limit of one and a change of the attaced CPE: This will not come online until the lease of the former HW is deleted or outdated!

[LAR-19] created by @xee8ai

IP/DHCP: fix next server statement

to let the modem boot we know need to add the next server statement in
DHCP pool options field. This should be done on a more generic or global config concept. Ideas are welcome

[LAR-32] created by @schmto

GUI: show every relation as a new panel

  • we should add a new section for each relation in the edit blade so that there is always a new panel created
  • in split.blade we have to add dynamically a bootstrap panel if there is another content section with another list of objects of another object type

[LAR-35] created by @NinoRy

CM: Firmware update handling

this should work:

  • add sql fields firmware in table configfiles
  • upload firmware for example with laravel class Input and function file,
    see: http://laravel.com/docs/4.2/requests#files
  • save file in /tftpboot/fw/
  • if firmware field is set automatically add following text in Model
    Configfile -> text_make():
    SnmpMibObject docsDevSwFilename.0 String "fw/xyz.bin" ;
    SnmpMibObject docsDevSwAdminStatus.0 Integer 2;
    /* allowProvisioningUpgrade, more options required ? */

[LAR-5] created by @schmto

Find out deletion dependencies

When deleting an item (e.g. CMTS) all related items (e.g. IP pools) have to be deleted to.
We have to find out how this can be done generically (e.g. in class BaseModel).

This data then can be used a) to inform the user about these dependencies BEFORE deletion and b) to delete all related items AFTER deletion of main item.

[LAR-20] created by @xee8ai

general short tasks

TODO:

  • Models (BaseModel, Auth*): add default L5 Namespace. Note this requires to adapt BaseModel::get_models() function and maybe more
    DONE: This also requires to adapt BaseController: get_model_name(), get_view_name(), get_route_name() function

DONE:

  • implement float ping opportunity on modem analysis page (formular with count and timing)
  • recursive deletion of configfile belongings disabled
  • adapt all unique validations - add "deleted_at, NULL" - Note: is not added automatically (through prep_validation function in basecontroller)
  • ObserverClass for Configfiles -> build Configfiles on Update
  • show Configfiles Index page as hierachical tree structure
  • add hidden tag to get_form_fields to hide html elements
    This should be used for all relational fields
  • Validation required should be marked with on Controller
  • checkbox: default_input: make a generic concept, dont use default_input in Validation. This skip password min length checking
    rename default_input() to something like prepare_input(). Should be usefull to split in pre- and post validation functions
  • how can we use Validation logical or statements ?
  • long index page should be limited to X elements. Best solution will be to use javascrip to request next N entries
  • edit: view sectional coloring
  • edit: form-element label should be on same horizontal line like Edit fields
  • color for better reading of different sections
  • Global Define or Varibale in each Model to disable Soft deletes per Model
  • show update message as alert with formular button that executes the normal redirect (if possible) ??? TS

[LAR-46] created by @schmto

ProvMon: add Cacti

TODO

  • take care of possible missconfiguration durring add, delete, change of Modems

DONE

  • adapt cacti artisan command
  • add to cron or somehwere else

[LAR-51] created by @schmto

global config page

1) make a global config page per module
this requires first, that every stuff is in a module

2) add a global config page with stuff like:

  • isp settings (name, street, city, phone, contacts, mail..) | GlobalGlobal
  • default server stuff like DNS, .. | ProvBase
  • snmp default communitys | ProvBase, HfcBase
  • mail information (notifications) | ProvBase
  • logging level (info, debug) integer | GlobalGlobal
  • contract, modem, endpoint, mta sql start id number (auto increment) | ProvBase, ProvVoip
    NOTE: take care of seeding relations
  • Name of all Headlines for White Label products-> replace all "Das Monster" with global Config like
    headline1, headline2, Vendor Image Upload | GlobalGlobal

Adptions in:

  • ProvMon: use DNS name from global config(Modem Domain Name) | ProvBase
  • Patrick: more fields in Contract, MTA, Phone for special envia ids (LAR-10)

[LAR-10] created by @schmto

CPE/MTA: add Analysis Page

Modem: add analysis page for CPE like Modem Analyses Page
MTA: add analysis page

parse with a regular expression with
" option agent.remote-id " like
preg_match_all('/lease(.*?)}/', $string, $section);

lease 10.20.0.3 {
starts 3 2015/09/30 12:50:48;
ends 3 2015/09/30 12:52:48;
cltt 3 2015/09/30 12:50:48;
binding state active;
next binding state free;
rewind binding state free;
billing subclass "Client" c4:27:95:af:ab:db;
hardware ethernet c4:27:95:af:ab:dd;
uid "\377\225\257\253\335\000\003\000\001\304'\225\257\253\335";
option agent.circuit-id 0:1:3:e9;
option agent.remote-id c4:27:95:af:ab:db;
option agent.unknown-9 0:0:11:8b:6:1:4:1:2:3:0;
}

[LAR-45] created by @schmto

Success-Message: Shouldn't appear when nothing changed in sql

  • when nothing changes in sql the appropriate observer class won't be called
  • the success message isnt appropriate there
  • 2 possibilities:
    (1) add a new coloumn in sql with an integer that is incremented on every click to the save button -> so observerclass will be called every time
    (2) only redirect with succcess message when changes in sql were made

[LAR-37] created by @NinoRy

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.