I have no idea which one of the existing pypi modules is best for these,
and given that we're using just two escape codes, I think it makes sense
not to bother with a more capable third-party module just for two magic
strings.
Once the actual config-parsing code start raising these exceptions
instead of directly calling sys.exit(), the user experience would
deteriorate due to raw exception traces. There's little value in the
trace itself, so just wrap the whole config loading with pretty error
formatting.
We still do not point to a specific place where that error is defined
(such as a line/column in a given JSON file) because that information is
already lost by the time we perform these checks.
Also, these checks are largely open-coded ad-hoc stuff. Some required
items are not covered, raising KeyError instead. We should get a formal
schema for these...
with this feature, spacing is checked with respect to eqpt library
instead of hard coded values in equipment +
mode selection is based on the minspacing instead of a coef or margin on baudrate value
some sanity check are introduced:
- request spacing must be greater than min spacing
- tsp baudrate must be smaller than min spacing
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
add colors on messages to highlight them
add messages explaining program steps
update readme and excel user guide with latest fetures
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
- indicate when a mode is selected if the selected path does not pass
+ some reformatting of columns
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
tx_osnr was impacting automatic mode selection feature : this commit solves the error
+ add a novel version of the excel example with an empty mode cases
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
- output file of -o option in path_requests_run.py was not correctly
handled in case of path indirection eg ../../bar.foo
- fiber constraint is not correctly handled in case of several parrallel directions
of same fiber name. remove if from the set of constraint till problem is not solved
- loose_list was not correctly indexed in request.py. assume the first element attribute (except
of the transceiver) applies for the whole list. This will need further corrections
- handle the case when path.snr is none in the optimization of mode process
small fix: correct wrong numbering of request in json and csv
output when -o is used ; correct example files
signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
- this version handles special cases: if no baudrate satisfies the spacing
, if no mode satisfies the OSNR threshold from transponders
- template of service corrected wih the novel path_bandwidth
- some ideas TODO added for testing
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
- adding cost in every config files including tests files,
- correcting wrong usage reactions (if value is not correct)
- correction of orthograph
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
- correction of json to csv function
- small correction on disjunction format to avoid double (double crash the program)
- adding time stamp to measure perf
- demands with all the same disjunction can be aggregated
- a new set of disjunction list is created to avoid inconsistancy
with the aggregated request-ids
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
adding the counting feature on standard output
adding tsp nb in csv + small bug fixes
small fixes to improve stdout and csv printing
small bug fixes on service aggregation and automatic correction of names
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
if mode is not given, the program automatically choses the first mode of the tsp
that has the highest bitrate and baudrate
- propagation for each loop on baudrate, no proppag in the loop on the mode
(same propoagation applies for identical baudrate)
- starts with the highest baudrate
- Make power and nb-channel optional fields
- power uses defaulf power in SI
- nb channel computed based on min max frequency and spacing
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
- add bitrate in the json service file and enable to support both with and without bitrate
- change mode to optional
- add an aggregation function that groups identical demands (except for id and bitrate)
TODO : check which mode can satisfy the request or how many transponders -> going towards
dimensionning
- Correcting some bug on loose parameter: hop-type attribute was forced to be always 'loose'
-> now reads the excel entry
- service sheets checks on header if field names are corrects, but any order is
now feasible.
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
correct loose or strict constraint in the new function correct_route_list
correct test to find the name with existing uids
remove the \u2192 char that was not well supported with excel reading
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
- normal way is usually to apply the design optical power for all channels.
This change uses the default power (same power as used for design) but enables to
force an arbitrary power if needed. TODO : introduce spectral power density
to apply power depending on baudrate.
- definition of min max frequency and spacing define the nb of channels:
uses min max frequencies and spacing to determine nb-channels. It is possible
to force a different spacing for the request. TODO: check that the value is
consistant with baudrate and min max values.
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
- create some test to check that produced paths are really disjoint
- add some TODOs on optical power for requests computation
First check of disjunction feature added to tests
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
- select the first path that is satisfying disjunction
not finished:
- constraints on nodes not taken into account
- modification on the build network not added
- not clean, need some refactoring
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
- Implementing a conflict table for path disjoint choices
- adding disjunction in the parser and json (read and write)
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
- adding a test to check that transponder types and modes are part of the eqpt library
- adding a formating on numeical value input for path request ids
- automatically printing the results into a csv file in addition to the json file
and with the saime name+.csv
- printing results in a more pretty way for demo
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
- typos corrections
- explanations on cable id, create_eqt_sheet.py, dimensionning
- adding updates in user guide
- harmonisation of naming _eqpt instead of eqt in create_eqt_sheet.py
- improving standard output, removing pi ref power print on standard output
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>