Loading src/webui/grafana_db_slc_grps_psql.json +4 −4 Original line number Diff line number Diff line Loading @@ -126,14 +126,14 @@ { "datasource": { "type": "postgres", "uid": "yTIXTo14z" "uid": "questdb-slc-grp" }, "format": "table", "group": [], "hide": false, "metricColumn": "none", "rawQuery": true, "rawSql": "SELECT timestamp as \"time\", slice_uuid, slice_group, slice_color, slice_availability, slice_capacity, slice_capacity_center\nFROM slice_groups\nWHERE $__timeFilter(timestamp);", "rawSql": "SELECT timestamp as \"time\", slice_uuid, slice_group, slice_color, slice_availability, slice_capacity, slice_capacity_center, is_deleted\nFROM tfs_slice_groups\nWHERE $__timeFilter(timestamp) AND is_deleted <> 'true';", "refId": "A", "select": [ [ Loading @@ -145,7 +145,7 @@ } ] ], "table": "slice_groups", "table": "tfs_slice_groups", "timeColumn": "timestamp", "where": [] } Loading @@ -163,7 +163,7 @@ "list": [] }, "time": { "from": "now-5m", "from": "now-30m", "to": "now" }, "timepicker": {}, Loading src/webui/service/load_gen/forms.py +6 −6 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ from wtforms.validators import DataRequired, NumberRange class LoadGenStartForm(FlaskForm): num_requests = IntegerField('Num Requests', default=100, validators=[DataRequired(), NumberRange(min=0)]) num_generated = IntegerField('Num Generated', render_kw={'readonly': True}) num_generated = IntegerField('Num Generated', default=0, render_kw={'readonly': True}) request_type_service_l2nm = BooleanField('Service L2NM', default=False) request_type_service_l3nm = BooleanField('Service L3NM', default=False) Loading @@ -27,17 +27,17 @@ class LoadGenStartForm(FlaskForm): request_type_slice_l2nm = BooleanField('Slice L2NM', default=True) request_type_slice_l3nm = BooleanField('Slice L3NM', default=False) offered_load = FloatField('Offered Load [Erlang]', default=50, validators=[NumberRange(min=1.e-12)]) holding_time = FloatField('Holding Time [seconds]', default=10, validators=[NumberRange(min=1.e-12)]) inter_arrival_time = FloatField('Inter Arrival Time[seconds]', default=0, validators=[NumberRange(min=1.e-12)]) offered_load = FloatField('Offered Load [Erlang]', default=50, validators=[NumberRange(min=0.0)]) holding_time = FloatField('Holding Time [seconds]', default=10, validators=[NumberRange(min=0.0)]) inter_arrival_time = FloatField('Inter Arrival Time[seconds]', default=0, validators=[NumberRange(min=0.0)]) do_teardown = BooleanField('Do Teardown', default=True) record_to_dlt = BooleanField('Record to DLT', default=False) dlt_domain_id = StringField('DLT Domain Id', default='') infinite_loop = BooleanField('Infinite Loop', render_kw={'readonly': True}) running = BooleanField('Running', render_kw={'readonly': True}) infinite_loop = BooleanField('Infinite Loop', default=False, render_kw={'readonly': True}) running = BooleanField('Running', default=False, render_kw={'readonly': True}) submit = SubmitField('Start') Loading src/webui/service/load_gen/routes.py +23 −16 Original line number Diff line number Diff line Loading @@ -20,6 +20,14 @@ from .forms import LoadGenStartForm, LoadGenStopForm load_gen = Blueprint('load_gen', __name__, url_prefix='/load_gen') def make_read_only(field, readonly : bool) -> None: if not hasattr(field, 'render_kw'): field.render_kw = dict(readonly=readonly) elif field.render_kw is None: field.render_kw = dict(readonly=readonly) else: field.render_kw['readonly'] = readonly @load_gen.route('home', methods=['GET', 'POST']) def home(): load_gen_client = LoadGeneratorClient() Loading Loading @@ -61,7 +69,7 @@ def home(): load_gen_client.connect() load_gen_client.Stop(Empty()) load_gen_client.close() flash('Load Generator Stoped.', 'success') flash('Load Generator Stopped.', 'success') except Exception as e: # pylint: disable=broad-except flash('Problem stopping Load Generator. {:s}'.format(str(e)), 'danger') Loading @@ -88,19 +96,18 @@ def home(): form_start.request_type_slice_l2nm .default = RequestTypeEnum.REQUESTTYPE_SLICE_L2NM in request_types form_start.request_type_slice_l3nm .default = RequestTypeEnum.REQUESTTYPE_SLICE_L3NM in request_types form_start.num_requests .render_kw['readonly'] = status.running form_start.offered_load .render_kw['readonly'] = status.running form_start.holding_time .render_kw['readonly'] = status.running form_start.inter_arrival_time.render_kw['readonly'] = status.running form_start.do_teardown .render_kw['readonly'] = status.running form_start.record_to_dlt .render_kw['readonly'] = status.running form_start.dlt_domain_id .render_kw['readonly'] = status.running form_start.request_type_service_l2nm.render_kw['readonly'] = status.running form_start.request_type_service_l3nm.render_kw['readonly'] = status.running form_start.request_type_service_mw .render_kw['readonly'] = status.running form_start.request_type_service_tapi.render_kw['readonly'] = status.running form_start.request_type_slice_l2nm .render_kw['readonly'] = status.running form_start.request_type_slice_l3nm .render_kw['readonly'] = status.running make_read_only(form_start.num_requests , status.running) make_read_only(form_start.offered_load , status.running) make_read_only(form_start.holding_time , status.running) make_read_only(form_start.inter_arrival_time , status.running) make_read_only(form_start.do_teardown , status.running) make_read_only(form_start.record_to_dlt , status.running) make_read_only(form_start.dlt_domain_id , status.running) make_read_only(form_start.request_type_service_l2nm, status.running) make_read_only(form_start.request_type_service_l3nm, status.running) make_read_only(form_start.request_type_service_mw , status.running) make_read_only(form_start.request_type_service_tapi, status.running) make_read_only(form_start.request_type_slice_l2nm , status.running) make_read_only(form_start.request_type_slice_l3nm , status.running) return render_template('load_gen/home.html', form_start=form_start, form_stop=form_stop) return render_template('load_gen/home.html', form_start=form_start, form_stop=form_stop, is_running=status.running) src/webui/service/templates/load_gen/home.html +21 −15 Original line number Diff line number Diff line Loading @@ -21,7 +21,9 @@ <br /> <form id="load_gen_start" method="POST"> {% if not is_running %} {{ form_start.hidden_tag() }} {% endif %} <fieldset> <div class="row mb-3"> {{ form_start.num_requests.label(class="col-sm-2 col-form-label") }} Loading Loading @@ -56,12 +58,14 @@ <div class="row mb-3"> <div class="col-sm-2 col-form-label">Service Types:</div> <div class="col-sm-10"> {{ form_start.request_type_slice_l2nm }} {{ form_start.request_type_slice_l2nm .label(class="col-sm-3 col-form-label") }} {{ form_start.request_type_slice_l3nm }} {{ form_start.request_type_slice_l3nm .label(class="col-sm-3 col-form-label") }} <br/> {{ form_start.request_type_service_l2nm }} {{ form_start.request_type_service_l2nm.label(class="col-sm-3 col-form-label") }} {{ form_start.request_type_service_l3nm }} {{ form_start.request_type_service_l3nm.label(class="col-sm-3 col-form-label") }} <br/> {{ form_start.request_type_service_mw }} {{ form_start.request_type_service_mw .label(class="col-sm-3 col-form-label") }} {{ form_start.request_type_service_tapi }} {{ form_start.request_type_service_tapi.label(class="col-sm-3 col-form-label") }} {{ form_start.request_type_slice_l2nm }} {{ form_start.request_type_slice_l2nm .label(class="col-sm-3 col-form-label") }} {{ form_start.request_type_slice_l3nm }} {{ form_start.request_type_slice_l3nm .label(class="col-sm-3 col-form-label") }} </div> </div> <br /> Loading Loading @@ -112,18 +116,17 @@ <br /> <div class="row mb-3"> {{ form_start.do_teardown(class="form-control") }} {{ form_start.do_teardown.label(class="col-sm-2 col-form-label") }} <div class="col-sm-10"> {{ form_start.do_teardown }} {{ form_start.do_teardown.label(class="col-sm-3 col-form-label") }}<br/> </div> <br /> <div class="row mb-3"> {{ form_start.record_to_dlt(class="form-control") }} {{ form_start.record_to_dlt.label(class="col-sm-2 col-form-label") }} </div> <br /> <div class="row mb-3"> {{ form_start.dlt_domain_id.label(class="col-sm-2 col-form-label") }} <div class="col-sm-2 col-form-label">DLT Settings:</div> <div class="col-sm-10"> {{ form_start.record_to_dlt }} {{ form_start.record_to_dlt.label(class="col-sm-3 col-form-label") }} <br/> {{ form_start.dlt_domain_id.label(class="col-sm-2 col-form-label") }} {% if form_start.dlt_domain_id.errors %} {{ form_start.dlt_domain_id(class="form-control is-invalid") }} <div class="invalid-feedback"> Loading @@ -137,21 +140,23 @@ <br /> <div class="row mb-3"> {{ form_start.infinite_loop(class="form-control") }} {{ form_start.infinite_loop.label(class="col-sm-2 col-form-label") }} <div class="col-sm-2 col-form-label">Status:</div> <div class="col-sm-10"> {{ form_start.infinite_loop }} {{ form_start.infinite_loop.label(class="col-sm-3 col-form-label") }} {{ form_start.running }} {{ form_start.running.label(class="col-sm-3 col-form-label") }} </div> <br /> <div class="row mb-3"> {{ form_start.running(class="form-control") }} {{ form_start.running.label(class="col-sm-2 col-form-label") }} </div> <br /> {% if not is_running %} <div class="d-grid gap-2 d-md-flex justify-content-md-start"> {{ form_start.submit(class="btn btn-primary") }} </div> {% endif %} </fieldset> </form> {% if is_running %} <form id="load_gen_stop" method="POST"> {{ form_stop.hidden_tag() }} <fieldset> Loading @@ -160,5 +165,6 @@ </div> </fieldset> </form> {% endif %} {% endblock %} Loading
src/webui/grafana_db_slc_grps_psql.json +4 −4 Original line number Diff line number Diff line Loading @@ -126,14 +126,14 @@ { "datasource": { "type": "postgres", "uid": "yTIXTo14z" "uid": "questdb-slc-grp" }, "format": "table", "group": [], "hide": false, "metricColumn": "none", "rawQuery": true, "rawSql": "SELECT timestamp as \"time\", slice_uuid, slice_group, slice_color, slice_availability, slice_capacity, slice_capacity_center\nFROM slice_groups\nWHERE $__timeFilter(timestamp);", "rawSql": "SELECT timestamp as \"time\", slice_uuid, slice_group, slice_color, slice_availability, slice_capacity, slice_capacity_center, is_deleted\nFROM tfs_slice_groups\nWHERE $__timeFilter(timestamp) AND is_deleted <> 'true';", "refId": "A", "select": [ [ Loading @@ -145,7 +145,7 @@ } ] ], "table": "slice_groups", "table": "tfs_slice_groups", "timeColumn": "timestamp", "where": [] } Loading @@ -163,7 +163,7 @@ "list": [] }, "time": { "from": "now-5m", "from": "now-30m", "to": "now" }, "timepicker": {}, Loading
src/webui/service/load_gen/forms.py +6 −6 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ from wtforms.validators import DataRequired, NumberRange class LoadGenStartForm(FlaskForm): num_requests = IntegerField('Num Requests', default=100, validators=[DataRequired(), NumberRange(min=0)]) num_generated = IntegerField('Num Generated', render_kw={'readonly': True}) num_generated = IntegerField('Num Generated', default=0, render_kw={'readonly': True}) request_type_service_l2nm = BooleanField('Service L2NM', default=False) request_type_service_l3nm = BooleanField('Service L3NM', default=False) Loading @@ -27,17 +27,17 @@ class LoadGenStartForm(FlaskForm): request_type_slice_l2nm = BooleanField('Slice L2NM', default=True) request_type_slice_l3nm = BooleanField('Slice L3NM', default=False) offered_load = FloatField('Offered Load [Erlang]', default=50, validators=[NumberRange(min=1.e-12)]) holding_time = FloatField('Holding Time [seconds]', default=10, validators=[NumberRange(min=1.e-12)]) inter_arrival_time = FloatField('Inter Arrival Time[seconds]', default=0, validators=[NumberRange(min=1.e-12)]) offered_load = FloatField('Offered Load [Erlang]', default=50, validators=[NumberRange(min=0.0)]) holding_time = FloatField('Holding Time [seconds]', default=10, validators=[NumberRange(min=0.0)]) inter_arrival_time = FloatField('Inter Arrival Time[seconds]', default=0, validators=[NumberRange(min=0.0)]) do_teardown = BooleanField('Do Teardown', default=True) record_to_dlt = BooleanField('Record to DLT', default=False) dlt_domain_id = StringField('DLT Domain Id', default='') infinite_loop = BooleanField('Infinite Loop', render_kw={'readonly': True}) running = BooleanField('Running', render_kw={'readonly': True}) infinite_loop = BooleanField('Infinite Loop', default=False, render_kw={'readonly': True}) running = BooleanField('Running', default=False, render_kw={'readonly': True}) submit = SubmitField('Start') Loading
src/webui/service/load_gen/routes.py +23 −16 Original line number Diff line number Diff line Loading @@ -20,6 +20,14 @@ from .forms import LoadGenStartForm, LoadGenStopForm load_gen = Blueprint('load_gen', __name__, url_prefix='/load_gen') def make_read_only(field, readonly : bool) -> None: if not hasattr(field, 'render_kw'): field.render_kw = dict(readonly=readonly) elif field.render_kw is None: field.render_kw = dict(readonly=readonly) else: field.render_kw['readonly'] = readonly @load_gen.route('home', methods=['GET', 'POST']) def home(): load_gen_client = LoadGeneratorClient() Loading Loading @@ -61,7 +69,7 @@ def home(): load_gen_client.connect() load_gen_client.Stop(Empty()) load_gen_client.close() flash('Load Generator Stoped.', 'success') flash('Load Generator Stopped.', 'success') except Exception as e: # pylint: disable=broad-except flash('Problem stopping Load Generator. {:s}'.format(str(e)), 'danger') Loading @@ -88,19 +96,18 @@ def home(): form_start.request_type_slice_l2nm .default = RequestTypeEnum.REQUESTTYPE_SLICE_L2NM in request_types form_start.request_type_slice_l3nm .default = RequestTypeEnum.REQUESTTYPE_SLICE_L3NM in request_types form_start.num_requests .render_kw['readonly'] = status.running form_start.offered_load .render_kw['readonly'] = status.running form_start.holding_time .render_kw['readonly'] = status.running form_start.inter_arrival_time.render_kw['readonly'] = status.running form_start.do_teardown .render_kw['readonly'] = status.running form_start.record_to_dlt .render_kw['readonly'] = status.running form_start.dlt_domain_id .render_kw['readonly'] = status.running form_start.request_type_service_l2nm.render_kw['readonly'] = status.running form_start.request_type_service_l3nm.render_kw['readonly'] = status.running form_start.request_type_service_mw .render_kw['readonly'] = status.running form_start.request_type_service_tapi.render_kw['readonly'] = status.running form_start.request_type_slice_l2nm .render_kw['readonly'] = status.running form_start.request_type_slice_l3nm .render_kw['readonly'] = status.running make_read_only(form_start.num_requests , status.running) make_read_only(form_start.offered_load , status.running) make_read_only(form_start.holding_time , status.running) make_read_only(form_start.inter_arrival_time , status.running) make_read_only(form_start.do_teardown , status.running) make_read_only(form_start.record_to_dlt , status.running) make_read_only(form_start.dlt_domain_id , status.running) make_read_only(form_start.request_type_service_l2nm, status.running) make_read_only(form_start.request_type_service_l3nm, status.running) make_read_only(form_start.request_type_service_mw , status.running) make_read_only(form_start.request_type_service_tapi, status.running) make_read_only(form_start.request_type_slice_l2nm , status.running) make_read_only(form_start.request_type_slice_l3nm , status.running) return render_template('load_gen/home.html', form_start=form_start, form_stop=form_stop) return render_template('load_gen/home.html', form_start=form_start, form_stop=form_stop, is_running=status.running)
src/webui/service/templates/load_gen/home.html +21 −15 Original line number Diff line number Diff line Loading @@ -21,7 +21,9 @@ <br /> <form id="load_gen_start" method="POST"> {% if not is_running %} {{ form_start.hidden_tag() }} {% endif %} <fieldset> <div class="row mb-3"> {{ form_start.num_requests.label(class="col-sm-2 col-form-label") }} Loading Loading @@ -56,12 +58,14 @@ <div class="row mb-3"> <div class="col-sm-2 col-form-label">Service Types:</div> <div class="col-sm-10"> {{ form_start.request_type_slice_l2nm }} {{ form_start.request_type_slice_l2nm .label(class="col-sm-3 col-form-label") }} {{ form_start.request_type_slice_l3nm }} {{ form_start.request_type_slice_l3nm .label(class="col-sm-3 col-form-label") }} <br/> {{ form_start.request_type_service_l2nm }} {{ form_start.request_type_service_l2nm.label(class="col-sm-3 col-form-label") }} {{ form_start.request_type_service_l3nm }} {{ form_start.request_type_service_l3nm.label(class="col-sm-3 col-form-label") }} <br/> {{ form_start.request_type_service_mw }} {{ form_start.request_type_service_mw .label(class="col-sm-3 col-form-label") }} {{ form_start.request_type_service_tapi }} {{ form_start.request_type_service_tapi.label(class="col-sm-3 col-form-label") }} {{ form_start.request_type_slice_l2nm }} {{ form_start.request_type_slice_l2nm .label(class="col-sm-3 col-form-label") }} {{ form_start.request_type_slice_l3nm }} {{ form_start.request_type_slice_l3nm .label(class="col-sm-3 col-form-label") }} </div> </div> <br /> Loading Loading @@ -112,18 +116,17 @@ <br /> <div class="row mb-3"> {{ form_start.do_teardown(class="form-control") }} {{ form_start.do_teardown.label(class="col-sm-2 col-form-label") }} <div class="col-sm-10"> {{ form_start.do_teardown }} {{ form_start.do_teardown.label(class="col-sm-3 col-form-label") }}<br/> </div> <br /> <div class="row mb-3"> {{ form_start.record_to_dlt(class="form-control") }} {{ form_start.record_to_dlt.label(class="col-sm-2 col-form-label") }} </div> <br /> <div class="row mb-3"> {{ form_start.dlt_domain_id.label(class="col-sm-2 col-form-label") }} <div class="col-sm-2 col-form-label">DLT Settings:</div> <div class="col-sm-10"> {{ form_start.record_to_dlt }} {{ form_start.record_to_dlt.label(class="col-sm-3 col-form-label") }} <br/> {{ form_start.dlt_domain_id.label(class="col-sm-2 col-form-label") }} {% if form_start.dlt_domain_id.errors %} {{ form_start.dlt_domain_id(class="form-control is-invalid") }} <div class="invalid-feedback"> Loading @@ -137,21 +140,23 @@ <br /> <div class="row mb-3"> {{ form_start.infinite_loop(class="form-control") }} {{ form_start.infinite_loop.label(class="col-sm-2 col-form-label") }} <div class="col-sm-2 col-form-label">Status:</div> <div class="col-sm-10"> {{ form_start.infinite_loop }} {{ form_start.infinite_loop.label(class="col-sm-3 col-form-label") }} {{ form_start.running }} {{ form_start.running.label(class="col-sm-3 col-form-label") }} </div> <br /> <div class="row mb-3"> {{ form_start.running(class="form-control") }} {{ form_start.running.label(class="col-sm-2 col-form-label") }} </div> <br /> {% if not is_running %} <div class="d-grid gap-2 d-md-flex justify-content-md-start"> {{ form_start.submit(class="btn btn-primary") }} </div> {% endif %} </fieldset> </form> {% if is_running %} <form id="load_gen_stop" method="POST"> {{ form_stop.hidden_tag() }} <fieldset> Loading @@ -160,5 +165,6 @@ </div> </fieldset> </form> {% endif %} {% endblock %}