blob: 7b2dcf5e43dc4772ef35be601b0b3fe45dfc7a49 [file] [log] [blame]
% Copyright 2020 ArctosLabs Scandinavia AB
%
% Licensed under the Apache License, Version 2.0 (the "License");
% you may not use this file except in compliance with the License.
% You may obtain a copy of the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS,
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
% implied.
% See the License for the specific language governing permissions and
% limitations under the License.
{%- macro vim_accounts(vim_accounts) -%}
enum Vims = {
{%- for vim in vim_accounts %}
{{vim}}{% if loop.nextitem is defined%},{% endif %}
{%- endfor -%}
}; % The vim-accounts
{%- endmacro -%}
{%- macro variables_vnf(ns_desc) -%}
{%- for vnf in ns_desc -%}
{%- if vnf.vim_account %}
Vims: VNF{{vnf.vnf_id}} = {{vnf.vim_account}};
{%- else %}
var Vims: VNF{{vnf.vnf_id}};
{%- endif -%}
{% endfor -%}
{%- endmacro -%}
{%- macro trp_link_latency(trp_link_latency) -%}
array[Vims, Vims] of int: trp_link_latency = [
{%- for row in trp_link_latency -%}
|
{%- for col in row -%}
{{col}},
{%- endfor %}
{% endfor -%}
|]; % Transport link latency between data centers
{%- endmacro -%}
{%- macro trp_link_jitter(trp_link_jitter) -%}
array[Vims, Vims] of int: trp_link_jitter = [
{%- for row in trp_link_jitter -%}
|
{%- for col in row -%}
{{col}},
{%- endfor %}
{% endfor -%}
|]; % Transport link jitter between data centers
{%- endmacro -%}
{%- macro trp_link_price_list(trp_link_price_list) -%}
array[Vims, Vims] of int: trp_link_price_list = [
{%- for row in trp_link_price_list -%}
|
{%- for col in row -%}
{{col}},
{%- endfor %}
{% endfor -%}
|]; % Transport link price list
{%- endmacro -%}
{%- macro vnf_price_list_per_vim(ns_desc) -%}
{%- for vnf in ns_desc -%}
array[Vims] of int: vim_price_list_{{vnf.vnf_id}} = [
{%- for price in vnf.vnf_price_per_vim -%}
{{price}}{% if loop.nextitem is defined%},{% endif %}
{%- endfor -%}
];
{% endfor %}
{%- endmacro -%}
{%- macro vld_constraints(vld_desc) -%}
{%- for cp in vld_desc -%}
{%- if 'latency' in cp.keys()%}
constraint trp_link_latency[VNF{{cp.cp_refs[0]}}, VNF{{cp.cp_refs[1]}}] <= {{cp.latency}};
{% endif -%}
{% endfor -%}
{%- for cp in vld_desc -%}
{%- if 'jitter' in cp.keys()%}
constraint trp_link_jitter[VNF{{cp.cp_refs[0]}}, VNF{{cp.cp_refs[1]}}] <= {{cp.jitter}};
{% endif -%}
{% endfor -%}
{%- endmacro -%}
{% macro transport_cost(vld_desc) -%}
var int: used_transport_cost =
{%- if not vld_desc -%}
0;
{% else %}
{%- for cp in vld_desc -%}
trp_link_price_list[VNF{{cp.cp_refs[0]}}, VNF{{cp.cp_refs[1]}}]{% if loop.nextitem is defined %}+{% else %};{% endif %}
{% endfor -%}
{% endif -%}
{%- endmacro -%}
{%- macro used_vim_cost(ns_desc) -%}
var int: used_vim_cost =
{%- for vnf in ns_desc -%}
vim_price_list_{{vnf.vnf_id}}[VNF{{vnf.vnf_id}}]{% if loop.nextitem is defined %}+{% else %};{% endif %}
{% endfor -%}
{%- endmacro -%}