| % 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 -%} |