Skip to content
Snippets Groups Projects
Commit ff7c68fe authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

WebUI component:

- Added fields in load generator tab to filter src/dst candidate device and endpoint
parent 60b09656
No related branches found
No related tags found
2 merge requests!142Release TeraFlowSDN 2.1,!96Load Generator: filter candidate src/dst devices and endpoints
...@@ -21,6 +21,8 @@ DEFAULT_AVAILABILITY = '0.0..99.9999' ...@@ -21,6 +21,8 @@ DEFAULT_AVAILABILITY = '0.0..99.9999'
DEFAULT_CAPACITY_GBPS = '0.1..100.00' #'10, 40, 50, 100, 400' DEFAULT_CAPACITY_GBPS = '0.1..100.00' #'10, 40, 50, 100, 400'
DEFAULT_E2E_LATENCY_MS = '5.0..100.00' DEFAULT_E2E_LATENCY_MS = '5.0..100.00'
DEFAULT_REGEX = r'.+'
class LoadGenForm(FlaskForm): class LoadGenForm(FlaskForm):
num_requests = IntegerField('Num Requests', default=100, validators=[DataRequired(), NumberRange(min=0)]) num_requests = IntegerField('Num Requests', default=100, validators=[DataRequired(), NumberRange(min=0)])
num_generated = IntegerField('Num Generated', default=0, render_kw={'readonly': True}) num_generated = IntegerField('Num Generated', default=0, render_kw={'readonly': True})
...@@ -33,6 +35,9 @@ class LoadGenForm(FlaskForm): ...@@ -33,6 +35,9 @@ class LoadGenForm(FlaskForm):
request_type_slice_l2nm = BooleanField('Slice L2NM', default=True) request_type_slice_l2nm = BooleanField('Slice L2NM', default=True)
request_type_slice_l3nm = BooleanField('Slice L3NM', default=False) request_type_slice_l3nm = BooleanField('Slice L3NM', default=False)
device_regex = StringField('Device selector [regex]', default=DEFAULT_REGEX)
endpoint_regex = StringField('Endpoint selector [regex]', default=DEFAULT_REGEX)
offered_load = FloatField('Offered Load [Erlang]', default=50, validators=[NumberRange(min=0.0)]) 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)]) 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)]) inter_arrival_time = FloatField('Inter Arrival Time [seconds]', default=0, validators=[NumberRange(min=0.0)])
......
...@@ -62,27 +62,29 @@ def home(): ...@@ -62,27 +62,29 @@ def home():
_e2e_latency_ms = list_scalar_range__grpc_to_str(status.parameters.e2e_latency_ms) _e2e_latency_ms = list_scalar_range__grpc_to_str(status.parameters.e2e_latency_ms)
form = LoadGenForm() form = LoadGenForm()
set_properties(form.num_requests , status.parameters.num_requests , readonly=status.running) set_properties(form.num_requests , status.parameters.num_requests , readonly=status.running)
set_properties(form.offered_load , _offered_load , readonly=status.running) set_properties(form.device_regex , status.parameters.device_regex , readonly=status.running)
set_properties(form.holding_time , _holding_time , readonly=status.running) set_properties(form.endpoint_regex , status.parameters.endpoint_regex, readonly=status.running)
set_properties(form.inter_arrival_time , _inter_arrival_time , readonly=status.running) set_properties(form.offered_load , _offered_load , readonly=status.running)
set_properties(form.availability , _availability , readonly=status.running) set_properties(form.holding_time , _holding_time , readonly=status.running)
set_properties(form.capacity_gbps , _capacity_gbps , readonly=status.running) set_properties(form.inter_arrival_time , _inter_arrival_time , readonly=status.running)
set_properties(form.e2e_latency_ms , _e2e_latency_ms , readonly=status.running) set_properties(form.availability , _availability , readonly=status.running)
set_properties(form.max_workers , status.parameters.max_workers , readonly=status.running) set_properties(form.capacity_gbps , _capacity_gbps , readonly=status.running)
set_properties(form.do_teardown , status.parameters.do_teardown , disabled=status.running) set_properties(form.e2e_latency_ms , _e2e_latency_ms , readonly=status.running)
set_properties(form.record_to_dlt , status.parameters.record_to_dlt, disabled=status.running) set_properties(form.max_workers , status.parameters.max_workers , readonly=status.running)
set_properties(form.dlt_domain_id , status.parameters.dlt_domain_id, readonly=status.running) set_properties(form.do_teardown , status.parameters.do_teardown , disabled=status.running)
set_properties(form.request_type_service_l2nm, _request_type_service_l2nm , disabled=status.running) set_properties(form.record_to_dlt , status.parameters.record_to_dlt , disabled=status.running)
set_properties(form.request_type_service_l3nm, _request_type_service_l3nm , disabled=status.running) set_properties(form.dlt_domain_id , status.parameters.dlt_domain_id , readonly=status.running)
set_properties(form.request_type_service_mw , _request_type_service_mw , disabled=status.running) set_properties(form.request_type_service_l2nm, _request_type_service_l2nm , disabled=status.running)
set_properties(form.request_type_service_tapi, _request_type_service_tapi , disabled=status.running) set_properties(form.request_type_service_l3nm, _request_type_service_l3nm , disabled=status.running)
set_properties(form.request_type_slice_l2nm , _request_type_slice_l2nm , disabled=status.running) set_properties(form.request_type_service_mw , _request_type_service_mw , disabled=status.running)
set_properties(form.request_type_slice_l3nm , _request_type_slice_l3nm , disabled=status.running) set_properties(form.request_type_service_tapi, _request_type_service_tapi , disabled=status.running)
set_properties(form.num_generated , status.num_generated , disabled=True) set_properties(form.request_type_slice_l2nm , _request_type_slice_l2nm , disabled=status.running)
set_properties(form.num_released , status.num_released , disabled=True) set_properties(form.request_type_slice_l3nm , _request_type_slice_l3nm , disabled=status.running)
set_properties(form.infinite_loop , status.infinite_loop , disabled=True) set_properties(form.num_generated , status.num_generated , disabled=True)
set_properties(form.running , status.running , disabled=True) set_properties(form.num_released , status.num_released , disabled=True)
set_properties(form.infinite_loop , status.infinite_loop , disabled=True)
set_properties(form.running , status.running , disabled=True)
form.submit.label.text = 'Stop' if status.running else 'Start' form.submit.label.text = 'Stop' if status.running else 'Start'
form_action = url_for('load_gen.stop') if status.running else url_for('load_gen.start') form_action = url_for('load_gen.stop') if status.running else url_for('load_gen.start')
...@@ -99,6 +101,8 @@ def start(): ...@@ -99,6 +101,8 @@ def start():
load_gen_params = Parameters() load_gen_params = Parameters()
load_gen_params.num_requests = form.num_requests.data load_gen_params.num_requests = form.num_requests.data
load_gen_params.device_regex = form.device_regex.data
load_gen_params.endpoint_regex = form.endpoint_regex.data
load_gen_params.offered_load = form.offered_load.data load_gen_params.offered_load = form.offered_load.data
load_gen_params.holding_time = form.holding_time.data load_gen_params.holding_time = form.holding_time.data
load_gen_params.inter_arrival_time = form.inter_arrival_time.data load_gen_params.inter_arrival_time = form.inter_arrival_time.data
......
...@@ -83,6 +83,36 @@ ...@@ -83,6 +83,36 @@
</div> </div>
<br /> <br />
<div class="row mb-3">
{{ form.device_regex.label(class="col-sm-2 col-form-label") }}
<div class="col-sm-10">
{% if form.device_regex.errors %}
{{ form.device_regex(class="form-control is-invalid") }}
<div class="invalid-feedback">
{% for error in form.device_regex.errors %}<span>{{ error }}</span>{% endfor %}
</div>
{% else %}
{{ form.device_regex(class="form-control") }}
{% endif %}
</div>
</div>
<br />
<div class="row mb-3">
{{ form.endpoint_regex.label(class="col-sm-2 col-form-label") }}
<div class="col-sm-10">
{% if form.endpoint_regex.errors %}
{{ form.endpoint_regex(class="form-control is-invalid") }}
<div class="invalid-feedback">
{% for error in form.endpoint_regex.errors %}<span>{{ error }}</span>{% endfor %}
</div>
{% else %}
{{ form.endpoint_regex(class="form-control") }}
{% endif %}
</div>
</div>
<br />
<div class="row mb-3"> <div class="row mb-3">
{{ form.offered_load.label(class="col-sm-2 col-form-label") }} {{ form.offered_load.label(class="col-sm-2 col-form-label") }}
<div class="col-sm-10"> <div class="col-sm-10">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment