diff options
124 files changed, 9309 insertions, 784 deletions
@@ -47,7 +47,7 @@ coverage.xml *.log # Sphinx documentation -docs/_build/ +docs/_build/* # PyBuilder target/ @@ -58,7 +58,6 @@ target/ *~ .*.sw? -/docs_build/ /docs_output/ /releng/ @@ -2,8 +2,8 @@ Project: Testbed infrastructure (Pharos) Project Creation Date: January 8, 2015 Project Category: Integration & Testing Lifecycle State: Mature -Primary Contact: Jack Morgan (jack.morgan@intel.com) -Project Lead: Jack Morgan (jack.morgan@intel.com) +Primary Contact: Jack Morgan <jack@jento.io> +Project Lead: Jack Morgan <jack@jento.io> Jira Project Name: Testbed infrastructure project Jira Project Prefix: PHAROS Mailing list tag: [pharos] @@ -16,16 +16,14 @@ Alexandru Avadanii <Alexandru.Avadanii@enea.com> Aric Gardner <agardner@linuxfoundation.org> Fatih Degirmenci <fatih.degirmenci@ericsson.com> Guillermo Herrero <guillermo.herrero@enea.com> -Jack Morgan <jack.morgan@intel.com> -Jose Lausuch <jalausuch@suse.com> -Julien Zhang <zhang.jun3g@zte.com.cn> -Morgan Richomme <morgan.richomme@orange.com> +Jack Morgan <jack@jento.io> +Julien Zhang <julienjut@gmail.com> Parker Berberian <pberberian@iol.unh.edu> Trevor Bramwell <tbramwell@linuxfoundation.org> Trevor Cooper <trevor.cooper@intel.com> -Wenjing Chu <wenjing.chu@huawei.com> Link to TSC approval of the project: http://meetbot.opnfv.org/meetings/opnfv-meeting/ Link(s) to approval of additional committers: http://lists.opnfv.org/pipermail/opnfv-tech-discuss/2016-May/010567.html +https://lists.opnfv.org/pipermail/opnfv-tsc/2018-February/004105.html Via email, RT Ticket: 23593 diff --git a/INFO.yaml b/INFO.yaml new file mode 100644 index 00000000..d889f04c --- /dev/null +++ b/INFO.yaml @@ -0,0 +1,79 @@ +--- +project: 'Testbed infrastructure (Pharos)' +project_creation_date: 'January 8, 2015' +project_category: 'Integration & Testing' +lifecycle_state: 'Mature' +project_lead: &opnfv_pharos_ptl + name: 'Jack Morgan' + email: 'jack@jento.io' + id: 'jentoio' + company: 'none' + timezone: 'PDT(UTC-7)' +primary_contact: *opnfv_pharos_ptl +issue_tracking: + type: 'jira' + url: 'https://jira.opnfv.org/projects/PHAROS' + key: 'PHAROS' +mailing_list: + type: 'mailman2' + url: 'opnfv-tech-discuss@lists.opnfv.org' + tag: '[pharos]' +realtime_discussion: + type: irc + server: 'freenode.net' + channel: '#opnfv-pharos' +meetings: + - type: 'gotomeeting+irc' + agenda: # eg: 'https://wiki.opnfv.org/display/' + url: # eg: 'https://global.gotomeeting.com/join/819733085' + server: 'freenode.net' + channel: '#opnfv-meeting' + repeats: 'weekly' + time: # eg: '16:00 UTC' +repositories: + - 'pharos' + - 'pharos-tools' +committers: + - <<: *opnfv_pharos_ptl + - name: 'Wenjing Chu' + email: 'chu.wenjing@gmail.com' + company: 'gmail.com' + id: 'wenjing' + - name: 'Morgan Richomme' + email: 'morgan.richomme@orange.com' + company: 'orange.com' + id: 'mrichomme' + - name: 'Trevor Cooper' + email: 'trevor.cooper@intel.com' + company: 'intel.com' + id: 'trev' + - name: 'Jose Lausuch' + email: 'jalausuch@suse.com' + company: 'suse.com' + id: 'jose.lausuch' + - name: 'Fatih Degirmenci' + email: 'fdegir@gmail.com' + company: 'gmail.com' + id: 'fdegir' + - name: 'julien zhang' + email: 'julienjut@gmail.com' + company: 'gmail.com' + id: 'Julien-zte' + - name: 'Aric Gardner' + email: 'agardner@linuxfoundation.org' + company: 'linuxfoundation.org' + id: 'agardner' + - name: 'Trevor Bramwell' + email: 'tbramwell@linuxfoundation.org' + company: 'linuxfoundation.org' + id: 'bramwelt' + - name: 'Alexandru Avadanii' + email: 'Alexandru.Avadanii@enea.com' + company: 'enea.com' + id: 'AlexandruAvadanii' + - name: 'Guillermo Herrero' + email: 'guillermo.herrero@enea.com' + company: 'enea.com' + id: 'gherrero' +tsc: + approval: 'http//meetbot.opnfv.org/meetings/opnfv-meeting/' diff --git a/config/installers/apex/pod_config.yaml.j2 b/config/installers/apex/pod_config.yaml.j2 index b681215e..d4db9ef7 100644 --- a/config/installers/apex/pod_config.yaml.j2 +++ b/config/installers/apex/pod_config.yaml.j2 @@ -1,11 +1,18 @@ +############################################################################## +# Copyright (c) 2018 Red Hat Inc. and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## --- nodes: node1: mac_address: "{{ conf['nodes'][0]['remote_management']['mac_address'] }}" ipmi_ip: {{ conf['nodes'][0]['remote_management']['address'] }} - ipmi_user: {{ conf['jumphost']['remote_params']['user'] }} - ipmi_pass: {{ conf['jumphost']['remote_params']['pass'] }} - pm_type: "pxe_{{ conf['jumphost']['remote_params']['type'] }}tool" + ipmi_user: {{ conf['nodes'][0]['remote_management']['user'] }} + ipmi_pass: {{ conf['nodes'][0]['remote_management']['pass'] }} + pm_type: "pxe_{{ conf['nodes'][0]['remote_management']['type'] }}tool" cpus: {{ conf['nodes'][0]['node']['cpus'] }} memory: {{ conf['nodes'][0]['node']['memory'] }} disk: 40 @@ -15,9 +22,9 @@ nodes: node2: mac_address: "{{ conf['nodes'][1]['remote_management']['mac_address'] }}" ipmi_ip: {{ conf['nodes'][1]['remote_management']['address'] }} - ipmi_user: {{ conf['jumphost']['remote_params']['user'] }} - ipmi_pass: {{ conf['jumphost']['remote_params']['pass'] }} - pm_type: "pxe_{{ conf['jumphost']['remote_params']['type'] }}tool" + ipmi_user: {{ conf['nodes'][1]['remote_management']['user'] }} + ipmi_pass: {{ conf['nodes'][1]['remote_management']['pass'] }} + pm_type: "pxe_{{ conf['nodes'][1]['remote_management']['type'] }}tool" cpus: {{ conf['nodes'][1]['node']['cpus'] }} memory: {{ conf['nodes'][1]['node']['memory'] }} disk: 40 @@ -27,9 +34,9 @@ nodes: node3: mac_address: "{{ conf['nodes'][2]['remote_management']['mac_address'] }}" ipmi_ip: {{ conf['nodes'][2]['remote_management']['address'] }} - ipmi_user: {{ conf['jumphost']['remote_params']['user'] }} - ipmi_pass: {{ conf['jumphost']['remote_params']['pass'] }} - pm_type: "pxe_{{ conf['jumphost']['remote_params']['type'] }}tool" + ipmi_user: {{ conf['nodes'][2]['remote_management']['user'] }} + ipmi_pass: {{ conf['nodes'][2]['remote_management']['pass'] }} + pm_type: "pxe_{{ conf['nodes'][2]['remote_management']['type'] }}tool" cpus: {{ conf['nodes'][2]['node']['cpus'] }} memory: {{ conf['nodes'][2]['node']['memory'] }} disk: 40 @@ -39,9 +46,9 @@ nodes: node4: mac_address: "{{ conf['nodes'][3]['remote_management']['mac_address'] }}" ipmi_ip: {{ conf['nodes'][3]['remote_management']['address'] }} - ipmi_user: {{ conf['jumphost']['remote_params']['user'] }} - ipmi_pass: {{ conf['jumphost']['remote_params']['pass'] }} - pm_type: "pxe_{{ conf['jumphost']['remote_params']['type'] }}tool" + ipmi_user: {{ conf['nodes'][3]['remote_management']['user'] }} + ipmi_pass: {{ conf['nodes'][3]['remote_management']['pass'] }} + pm_type: "pxe_{{ conf['nodes'][3]['remote_management']['type'] }}tool" cpus: {{ conf['nodes'][3]['node']['cpus'] }} memory: {{ conf['nodes'][3]['node']['memory'] }} disk: 40 @@ -51,9 +58,9 @@ nodes: node5: mac_address: "{{ conf['nodes'][4]['remote_management']['mac_address'] }}" ipmi_ip: {{ conf['nodes'][4]['remote_management']['address'] }} - ipmi_user: {{ conf['jumphost']['remote_params']['user'] }} - ipmi_pass: {{ conf['jumphost']['remote_params']['pass'] }} - pm_type: "pxe_{{ conf['jumphost']['remote_params']['type'] }}tool" + ipmi_user: {{ conf['nodes'][4]['remote_management']['user'] }} + ipmi_pass: {{ conf['nodes'][4]['remote_management']['pass'] }} + pm_type: "pxe_{{ conf['nodes'][4]['remote_management']['type'] }}tool" cpus: {{ conf['nodes'][4]['node']['cpus'] }} memory: {{ conf['nodes'][4]['node']['memory'] }} disk: 40 diff --git a/config/installers/compass4nfv/network.yml.j2 b/config/installers/compass4nfv/network.yml.j2 index a98cc4a9..b84c201b 100644 --- a/config/installers/compass4nfv/network.yml.j2 +++ b/config/installers/compass4nfv/network.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# Copyright (c) 2018 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 diff --git a/config/installers/compass4nfv/network_ocl.yml.j2 b/config/installers/compass4nfv/network_ocl.yml.j2 index 4d1342d9..949b491d 100644 --- a/config/installers/compass4nfv/network_ocl.yml.j2 +++ b/config/installers/compass4nfv/network_ocl.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# Copyright (c) 2018 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -31,7 +31,7 @@ sys_intf_mappings: - name: storage interface: eth2 - vlan_tag: {{ conf['nodes'][0]['interfaces'][1]['vlan'] }} + vlan_tag: {{ conf['nodes'][0]['interfaces'][1]['vlan'] }} # not a good fit type: vlan role: - controller diff --git a/config/installers/compass4nfv/network_onos.yml.j2 b/config/installers/compass4nfv/network_onos.yml.j2 index 90174c85..7213e77f 100644 --- a/config/installers/compass4nfv/network_onos.yml.j2 +++ b/config/installers/compass4nfv/network_onos.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# Copyright (c) 2018 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 diff --git a/config/installers/compass4nfv/network_openo.yml.j2 b/config/installers/compass4nfv/network_openo.yml.j2 index 37b34c7f..9e3c6f09 100644 --- a/config/installers/compass4nfv/network_openo.yml.j2 +++ b/config/installers/compass4nfv/network_openo.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# Copyright (c) 2018 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 diff --git a/config/installers/compass4nfv/os-nosdn-nofeature-ha.yml.j2 b/config/installers/compass4nfv/os-nosdn-nofeature-ha.yml.j2 index 2dcf048c..3e536620 100644 --- a/config/installers/compass4nfv/os-nosdn-nofeature-ha.yml.j2 +++ b/config/installers/compass4nfv/os-nosdn-nofeature-ha.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# Copyright (c) 2018 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -10,11 +10,11 @@ --- TYPE: baremetal FLAVOR: cluster -POWER_TOOL: '{{ conf['jumphost']['remote_params']['type'] }}tool' # expects string ipmitool +POWER_TOOL: '{{ conf['jumphost']['remote_management']['type'] }}tool' # expects string ipmitool -ipmiUser: {{ conf['jumphost']['remote_params']['user'] }} -ipmiPass: {{ conf['jumphost']['remote_params']['pass'] }} -ipmiVer: '{{ conf['jumphost']['remote_params']['versions'][0] }}' +ipmiUser: {{ conf['jumphost']['remote_management']['user'] }} +ipmiPass: {{ conf['jumphost']['remote_management']['pass'] }} +ipmiVer: '{{ conf['jumphost']['remote_management']['versions'][0] }}' hosts: - name: {{ conf['nodes'][0]['name'] }} diff --git a/config/installers/compass4nfv/os-nosdn-openo-ha.yml.j2 b/config/installers/compass4nfv/os-nosdn-openo-ha.yml.j2 index 6deb19de..374f42a8 100644 --- a/config/installers/compass4nfv/os-nosdn-openo-ha.yml.j2 +++ b/config/installers/compass4nfv/os-nosdn-openo-ha.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# Copyright (c) 2018 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -10,11 +10,11 @@ --- TYPE: baremetal FLAVOR: cluster -POWER_TOOL: '{{ conf['jumphost']['remote_params']['type'] }}tool' # expects string ipmitool +POWER_TOOL: '{{ conf['jumphost']['remote_management']['type'] }}tool' # expects string ipmitool -ipmiUser: {{ conf['jumphost']['remote_params']['user'] }} -ipmiPass: {{ conf['jumphost']['remote_params']['pass'] }} -ipmiVer: '{{ conf['jumphost']['remote_params']['versions'][0] }}' +ipmiUser: {{ conf['jumphost']['remote_management']['user'] }} +ipmiPass: {{ conf['jumphost']['remote_management']['pass'] }} +ipmiVer: '{{ conf['jumphost']['remote_management']['versions'][0] }}' deploy_options: orchestrator: diff --git a/config/installers/compass4nfv/os-ocl-nofeature-ha.yml.j2 b/config/installers/compass4nfv/os-ocl-nofeature-ha.yml.j2 index d03c7e87..34063b36 100644 --- a/config/installers/compass4nfv/os-ocl-nofeature-ha.yml.j2 +++ b/config/installers/compass4nfv/os-ocl-nofeature-ha.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# Copyright (c) 2018 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -10,11 +10,11 @@ --- TYPE: baremetal FLAVOR: cluster -POWER_TOOL: '{{ conf['jumphost']['remote_params']['type'] }}tool' # expects string ipmitool +POWER_TOOL: '{{ conf['jumphost']['remote_management']['type'] }}tool' # expects string ipmitool -ipmiUser: {{ conf['jumphost']['remote_params']['user'] }} -ipmiPass: {{ conf['jumphost']['remote_params']['pass'] }} -ipmiVer: '{{ conf['jumphost']['remote_params']['versions'][0] }}' +ipmiUser: {{ conf['jumphost']['remote_management']['user'] }} +ipmiPass: {{ conf['jumphost']['remote_management']['pass'] }} +ipmiVer: '{{ conf['jumphost']['remote_management']['versions'][0] }}' hosts: - name: {{ conf['nodes'][0]['name'] }} diff --git a/config/installers/compass4nfv/os-odl_l2-moon-ha.yml.j2 b/config/installers/compass4nfv/os-odl_l2-moon-ha.yml.j2 index d3d8aa1d..249c3052 100644 --- a/config/installers/compass4nfv/os-odl_l2-moon-ha.yml.j2 +++ b/config/installers/compass4nfv/os-odl_l2-moon-ha.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# Copyright (c) 2018 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -9,11 +9,11 @@ --- TYPE: baremetal FLAVOR: cluster -POWER_TOOL: '{{ conf['jumphost']['remote_params']['type'] }}tool' # expects string ipmitool +POWER_TOOL: '{{ conf['jumphost']['remote_management']['type'] }}tool' # expects string ipmitool -ipmiUser: {{ conf['jumphost']['remote_params']['user'] }} -ipmiPass: {{ conf['jumphost']['remote_params']['pass'] }} -ipmiVer: '{{ conf['jumphost']['remote_params']['versions'][0] }}' +ipmiUser: {{ conf['jumphost']['remote_management']['user'] }} +ipmiPass: {{ conf['jumphost']['remote_management']['pass'] }} +ipmiVer: '{{ conf['jumphost']['remote_management']['versions'][0] }}' hosts: - name: {{ conf['nodes'][0]['name'] }} diff --git a/config/installers/compass4nfv/os-odl_l2-nofeature-ha.yml.j2 b/config/installers/compass4nfv/os-odl_l2-nofeature-ha.yml.j2 index 1ba947a5..884bb23a 100644 --- a/config/installers/compass4nfv/os-odl_l2-nofeature-ha.yml.j2 +++ b/config/installers/compass4nfv/os-odl_l2-nofeature-ha.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# Copyright (c) 2018 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -10,11 +10,11 @@ --- TYPE: baremetal FLAVOR: cluster -POWER_TOOL: '{{ conf['jumphost']['remote_params']['type'] }}tool' # expects string ipmitool +POWER_TOOL: '{{ conf['jumphost']['remote_management']['type'] }}tool' # expects string ipmitool -ipmiUser: {{ conf['jumphost']['remote_params']['user'] }} -ipmiPass: {{ conf['jumphost']['remote_params']['pass'] }} -ipmiVer: '{{ conf['jumphost']['remote_params']['versions'][0] }}' +ipmiUser: {{ conf['jumphost']['remote_management']['user'] }} +ipmiPass: {{ conf['jumphost']['remote_management']['pass'] }} +ipmiVer: '{{ conf['jumphost']['remote_management']['versions'][0] }}' hosts: - name: {{ conf['nodes'][0]['name'] }} diff --git a/config/installers/compass4nfv/os-odl_l3-nofeature-ha.yml.j2 b/config/installers/compass4nfv/os-odl_l3-nofeature-ha.yml.j2 index d81769c4..cb36a970 100644 --- a/config/installers/compass4nfv/os-odl_l3-nofeature-ha.yml.j2 +++ b/config/installers/compass4nfv/os-odl_l3-nofeature-ha.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# Copyright (c) 2018 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -9,11 +9,11 @@ --- TYPE: baremetal FLAVOR: cluster -POWER_TOOL: '{{ conf['jumphost']['remote_params']['type'] }}tool' # expects string ipmitool +POWER_TOOL: '{{ conf['jumphost']['remote_management']['type'] }}tool' # expects string ipmitool -ipmiUser: {{ conf['jumphost']['remote_params']['user'] }} -ipmiPass: {{ conf['jumphost']['remote_params']['pass'] }} -ipmiVer: '{{ conf['jumphost']['remote_params']['versions'][0] }}' +ipmiUser: {{ conf['jumphost']['remote_management']['user'] }} +ipmiPass: {{ conf['jumphost']['remote_management']['pass'] }} +ipmiVer: '{{ conf['jumphost']['remote_management']['versions'][0] }}' odl_l3_agent: "Enable" diff --git a/config/installers/compass4nfv/os-onos-nofeature-ha.yml.j2 b/config/installers/compass4nfv/os-onos-nofeature-ha.yml.j2 index 8c731a5b..241cfd32 100644 --- a/config/installers/compass4nfv/os-onos-nofeature-ha.yml.j2 +++ b/config/installers/compass4nfv/os-onos-nofeature-ha.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# Copyright (c) 2018 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -9,11 +9,11 @@ --- TYPE: baremetal FLAVOR: cluster -POWER_TOOL: '{{ conf['jumphost']['remote_params']['type'] }}tool' # expects string ipmitool +POWER_TOOL: '{{ conf['jumphost']['remote_management']['type'] }}tool' # expects string ipmitool -ipmiUser: {{ conf['jumphost']['remote_params']['user'] }} -ipmiPass: {{ conf['jumphost']['remote_params']['pass'] }} -ipmiVer: '{{ conf['jumphost']['remote_params']['versions'][0] }}' +ipmiUser: {{ conf['jumphost']['remote_management']['user'] }} +ipmiPass: {{ conf['jumphost']['remote_management']['pass'] }} +ipmiVer: '{{ conf['jumphost']['remote_management']['versions'][0] }}' hosts: - name: {{ conf['nodes'][0]['name'] }} diff --git a/config/installers/compass4nfv/os-onos-sfc-ha.yml.j2 b/config/installers/compass4nfv/os-onos-sfc-ha.yml.j2 index bbc4723d..dba5fe18 100644 --- a/config/installers/compass4nfv/os-onos-sfc-ha.yml.j2 +++ b/config/installers/compass4nfv/os-onos-sfc-ha.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# Copyright (c) 2018 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -9,11 +9,11 @@ --- TYPE: baremetal FLAVOR: cluster -POWER_TOOL: '{{ conf['jumphost']['remote_params']['type'] }}tool' # expects string ipmitool +POWER_TOOL: '{{ conf['jumphost']['remote_management']['type'] }}tool' # expects string ipmitool -ipmiUser: {{ conf['jumphost']['remote_params']['user'] }} -ipmiPass: {{ conf['jumphost']['remote_params']['pass'] }} -ipmiVer: '{{ conf['jumphost']['remote_params']['versions'][0] }}' +ipmiUser: {{ conf['jumphost']['remote_management']['user'] }} +ipmiPass: {{ conf['jumphost']['remote_management']['pass'] }} +ipmiVer: '{{ conf['jumphost']['remote_management']['versions'][0] }}' onos_sfc: "Enable" diff --git a/config/installers/daisy/network.yaml.j2 b/config/installers/daisy/network.yaml.j2 index f5ac6150..b9f586dc 100644 --- a/config/installers/daisy/network.yaml.j2 +++ b/config/installers/daisy/network.yaml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 ZTE Corporation and others. +# Copyright (c) 2018 ZTE Corporation and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -72,17 +72,17 @@ networks: {%- set gateway = ".".join([ips[0], ips[1], ips[2], "1"]) -%} {%- endif -%} - {%- set networks = networks.update({key: {'interface_name': interface_name, - 'bus_addr': bus_addr, - 'vlan': vlan, - 'network': network, - 'mask': mask, - 'start': start, - 'end': end, - 'vip': vip, - 'gateway': gateway - } - }) %} + {%- do networks.update({key: {'interface_name': interface_name, + 'bus_addr': bus_addr, + 'vlan': vlan, + 'network': network, + 'mask': mask, + 'start': start, + 'end': end, + 'vip': vip, + 'gateway': gateway + } + }) %} - cidr: '{{ network }}/{{ mask }}' gateway: '{{ gateway }}' diff --git a/config/installers/daisy/pod_config.yaml.j2 b/config/installers/daisy/pod_config.yaml.j2 index 8057f68c..b7e621c4 100644 --- a/config/installers/daisy/pod_config.yaml.j2 +++ b/config/installers/daisy/pod_config.yaml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 ZTE Corporation and others. +# Copyright (c) 2018 ZTE Corporation and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -9,7 +9,7 @@ --- -adapter: {{ conf['jumphost']['remote_params']['type'] }} +adapter: {{ conf['jumphost']['remote_management']['type'] }} hosts: {%- set nodes_num = conf['nodes'] | length -%} {%- if nodes_num == 5 %} diff --git a/config/installers/fuel/net_macros.j2 b/config/installers/fuel/net_macros.j2 new file mode 100644 index 00000000..c0a5d329 --- /dev/null +++ b/config/installers/fuel/net_macros.j2 @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +{%- macro linux_network_interfaces_nic(nics, proto = 'manual') -%} +{%- for nic in nics %} + {{ nic }}: + enabled: true + type: eth + proto: {{ proto }} + mtu: ${_param:interface_mtu} + name: {{ nic }} + noifupdown: true +{%- endfor %} +{%- endmacro -%} + +{%- macro linux_network_interfaces_vlan(vlans, proto = 'manual') -%} +{%- for vlan in vlans %} + {%- if vlan | int > 0 %} + {{ vlans[vlan] }}.{{ vlan }}: + enabled: true + proto: {{ proto }} + mtu: ${_param:interface_mtu} + type: vlan + name: {{ vlans[vlan] }}.{{ vlan }} + use_interfaces: + - {{ vlans[vlan] }} + {%- endif %} +{%- endfor %} +{%- endmacro -%} + +{%- macro interface_str(nic, vlan = 0) -%} + {{ nic }}{% if vlan | int > 0 %}.{{ vlan }}{% endif %} +{%- endmacro -%} + +{%- macro vpp_interface_str(speed, pci_addr, driver = '') -%} + {%- set p = pci_addr.replace('.', ':').split(':') -%} + {%- set s = 'Ethernet%d/%d/%d' | format(p[-3] | int(0, 16), + p[-2] | int(0, 16), + p[-1] | int(0, 16)) -%} + {%- if 'vfio' in driver -%} + VirtualFunction{{ s }} + {%- else -%} + {% if '40g' in speed %}Forty{% elif '10g' in speed %}Ten{% endif %}Gigabit{{ s }} + {%- endif -%} +{%- endmacro -%} diff --git a/config/installers/fuel/net_map.j2 b/config/installers/fuel/net_map.j2 new file mode 100644 index 00000000..bc1ac789 --- /dev/null +++ b/config/installers/fuel/net_map.j2 @@ -0,0 +1,229 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +{%- set net = conf.idf.net_config %} +{#- NOTE: All nodes sharing a role (e.g. compute) will use the same mapping #} + +{#- Until we support per-node configuration, we only collect data for the + first node in each role. Currently, there's no role mapping in PDF/IDF, + so we default to controller = first node in PDF, compute = 4th #} + +{#- ctl maps to MCP kvm on baremetal, ctl + gtw etc. on virtual #} +{%- set ctl01 = {'idx': 0} %} +{%- set cmp001 = {'idx': 3} %} + +{#- net_config v1.0 only supports global network-to-interface-index mapping, + which is incovenient for PODs with different computes (e.g. less NICs). + This can be worked around by tweaking the NIC definition order in PDF. + The same observation applies to vlan tags, at least for now. #} + +{#- Determine interface index for each network #} +{%- set idx_mcp = 0 %} {#- mcpcontrol network is hard set on first interface #} +{%- set idx_admin = net.admin.interface %} +{%- set idx_mgmt = net.mgmt.interface %} +{%- set idx_private = net.private.interface %} +{%- set idx_public = net.public.interface %} + +{#- VLAN for each network (only untagged 'admin' is supported by MaaS config!) #} +{%- set vlan_admin = net.admin.vlan %} +{%- set vlan_mgmt = net.mgmt.vlan %} +{%- set vlan_private = net.private.vlan %} +{%- set vlan_public = net.public.vlan %} + +{#- Physical interface OS name for each network (e.g. em1, enp1s0f1) #} +{%- for role in [ctl01, cmp001] %} + {%- if role.idx < conf.nodes | length %} + {%- set node = conf.idf.fuel.network.node[role.idx] %} + {%- do role.update({ + 'nic_mcp': node.interfaces[idx_mcp], + 'nic_admin': node.interfaces[idx_admin], + 'nic_mgmt': node.interfaces[idx_mgmt], + 'nic_private': node.interfaces[idx_private], + 'nic_public': node.interfaces[idx_public], + 'bus_private': node.busaddr[idx_private]}) %} + {#- PCI addresses are only used on computes for DPDK on private net #} + {%- endif %} +{%- endfor %} + +{%- set net_admin = [net.admin.network, net.admin.mask] | join("/") %} +{%- set net_mgmt = [net.mgmt.network, net.mgmt.mask] | join("/") %} +{%- set net_private = [net.private.network, net.private.mask] | join("/") %} +{%- set net_public = [net.public.network, net.public.mask] | join("/") %} +{%- set networks = [net_admin, net_mgmt, net_private, net_public] %} + +{%- if net.public.dns is defined %} + {%- set dns_public = net.public.dns %} +{%- else %} + {%- set dns_public = [ '8.8.8.8', '8.8.4.4' ] %} +{%- endif %} + +{%- if net.public.gateway is defined %} + {%- set net_public_gw = net.public.gateway %} +{%- endif %} +{%- if conf.idf.fuel.network.public_pool is defined %} + {%- set net_public_pool_start = conf.idf.fuel.network.public_pool.start_ip %} + {%- set net_public_pool_end = conf.idf.fuel.network.public_pool.end_ip %} +{%- endif %} + +{%- if conf.idf.fuel.maas is defined %} + {%- set maas_timeout_comissioning = conf.idf.fuel.maas.timeout_comissioning %} + {%- set maas_timeout_deploying = conf.idf.fuel.maas.timeout_deploying %} +{%- else %} + {%- set maas_timeout_comissioning = 10 %} + {%- set maas_timeout_deploying = 15 %} +{%- endif %} + +{%- set cmp_nodes = conf.nodes | length - cmp001.idx %} + +{%- set net_admin_hosts = [ + 'opnfv_infra_config_pxe_admin_address', + 'opnfv_infra_maas_node01_deploy_address', + 'opnfv_openstack_proxy_node01_pxe_admin_address', + 'opnfv_openstack_proxy_node02_pxe_admin_address', + 'opnfv_openstack_gateway_node01_pxe_admin_address', + 'opnfv_openstack_gateway_node02_pxe_admin_address', + 'opnfv_openstack_gateway_node03_pxe_admin_address', + 'opnfv_infra_kvm_node01_pxe_admin_address', + 'opnfv_infra_kvm_node02_pxe_admin_address', + 'opnfv_infra_kvm_node03_pxe_admin_address', + 'opnfv_openstack_database_node01_pxe_admin_address', + 'opnfv_openstack_database_node02_pxe_admin_address', + 'opnfv_openstack_database_node03_pxe_admin_address', + 'opnfv_openstack_message_queue_node01_pxe_admin_address', + 'opnfv_openstack_message_queue_node02_pxe_admin_address', + 'opnfv_openstack_message_queue_node03_pxe_admin_address', + 'opnfv_openstack_telemetry_node01_pxe_admin_address', + 'opnfv_openstack_telemetry_node02_pxe_admin_address', + 'opnfv_openstack_telemetry_node03_pxe_admin_address', + 'opnfv_openstack_control_node01_pxe_admin_address', + 'opnfv_openstack_control_node02_pxe_admin_address', + 'opnfv_openstack_control_node03_pxe_admin_address', + 'opnfv_opendaylight_server_node01_pxe_admin_address', + 'opnfv_opendaylight_server_node02_pxe_admin_address', + 'opnfv_opendaylight_server_node03_pxe_admin_address', + 'opnfv_stacklight_monitor_node01_pxe_admin_address', + 'opnfv_stacklight_monitor_node02_pxe_admin_address', + 'opnfv_stacklight_monitor_node03_pxe_admin_address', + 'opnfv_stacklight_log_node01_pxe_admin_address', + 'opnfv_stacklight_log_node02_pxe_admin_address', + 'opnfv_stacklight_log_node03_pxe_admin_address', + 'opnfv_stacklight_telemetry_node01_pxe_admin_address', + 'opnfv_stacklight_telemetry_node02_pxe_admin_address', + 'opnfv_stacklight_telemetry_node03_pxe_admin_address'] %} + +{%- set net_mgmt_hosts = [ + 'opnfv_infra_config_address', + 'opnfv_infra_maas_node01_address', + 'opnfv_openstack_proxy_control_address', + 'opnfv_openstack_proxy_node01_control_address', + 'opnfv_openstack_proxy_node02_control_address', + 'opnfv_openstack_gateway_node01_address', + 'opnfv_openstack_gateway_node02_address', + 'opnfv_openstack_gateway_node03_address', + 'opnfv_infra_kvm_address', + 'opnfv_infra_kvm_node01_address', + 'opnfv_infra_kvm_node02_address', + 'opnfv_infra_kvm_node03_address', + 'opnfv_openstack_database_address', + 'opnfv_openstack_database_node01_address', + 'opnfv_openstack_database_node02_address', + 'opnfv_openstack_database_node03_address', + 'opnfv_openstack_message_queue_address', + 'opnfv_openstack_message_queue_node01_address', + 'opnfv_openstack_message_queue_node02_address', + 'opnfv_openstack_message_queue_node03_address', + 'opnfv_openstack_telemetry_address', + 'opnfv_openstack_telemetry_node01_address', + 'opnfv_openstack_telemetry_node02_address', + 'opnfv_openstack_telemetry_node03_address', + 'opnfv_openstack_control_address', + 'opnfv_openstack_control_node01_address', + 'opnfv_openstack_control_node02_address', + 'opnfv_openstack_control_node03_address', + 'opnfv_opendaylight_server_address', + 'opnfv_opendaylight_server_node01_address', + 'opnfv_opendaylight_server_node02_address', + 'opnfv_opendaylight_server_node03_address', + 'opnfv_stacklight_monitor_address', + 'opnfv_stacklight_monitor_node01_address', + 'opnfv_stacklight_monitor_node02_address', + 'opnfv_stacklight_monitor_node03_address', + 'opnfv_stacklight_log_address', + 'opnfv_stacklight_log_node01_address', + 'opnfv_stacklight_log_node02_address', + 'opnfv_stacklight_log_node03_address', + 'opnfv_stacklight_telemetry_address', + 'opnfv_stacklight_telemetry_node01_address', + 'opnfv_stacklight_telemetry_node02_address', + 'opnfv_stacklight_telemetry_node03_address'] %} + +{%- set net_public_hosts = [ + 'opnfv_openstack_proxy_address', + 'opnfv_openstack_proxy_node01_address', + 'opnfv_openstack_proxy_node02_address', + 'opnfv_openstack_gateway_node01_external_address', + 'opnfv_openstack_gateway_node02_external_address', + 'opnfv_openstack_gateway_node03_external_address', + 'opnfv_openstack_control_node01_external_address', + 'opnfv_openstack_control_node02_external_address', + 'opnfv_openstack_control_node03_external_address', + 'opnfv_opendaylight_server_external_address'] %} + +{%- set net_private_hosts = [ + 'opnfv_openstack_gateway_node01_tenant_address', + 'opnfv_openstack_gateway_node02_tenant_address', + 'opnfv_openstack_gateway_node03_tenant_address'] %} + +{%- set hosts = { + net_admin: net_admin_hosts, + net_mgmt: net_mgmt_hosts, + net_private: net_private_hosts, + net_public: net_public_hosts } %} + +{%- set start_ip = { + net_admin: 1, + net_mgmt: 1, + net_private: 1, + net_public: 1 } %} + +{%- for nn, nd in net.items() %} + {%- if 'ip-range' in nd and 'network' in nd and 'mask' in nd %} + {%- set net_nd = [nd.network, nd.mask] | join('/') %} + {%- if net_nd in start_ip %} + {%- set nd_start_ip = nd['ip-range'].split('-')[0] %} + {%- set nd_start = net_nd | ipnet_range_size(net_nd | ipnet_hostmin, nd_start_ip) %} + {%- do start_ip.update({net_nd: nd_start}) %} + {%- endif %} + {%- endif %} +{%- endfor %} + +{%- set total_admin_hosts = net_admin_hosts | length + cmp_nodes %} +{%- set net_admin_pool_start = net_admin | ipnet_hostaddr(total_admin_hosts + start_ip[net_admin] +1) %} +{%- set net_admin_pool_end = net_admin | ipnet_hostmax %} +{#- PXE/admin gateway is mas01 when present / jumpserver via virsh otherwise #} +{%- set net_admin_gw = net_admin | ipnet_hostaddr(start_ip[net_admin] + net_admin_hosts.index('opnfv_infra_maas_node01_deploy_address') +1) %} + +{%- set total_public_hosts = net_public_hosts | length + cmp_nodes %} +{%- if net_public_pool_start is not defined or net_public_pool_end is not defined %} + {%- set net_public_pool_start = net_public | ipnet_hostaddr(total_public_hosts + start_ip[net_public] +1) %} + {%- set net_public_pool_end = net_public | ipnet_hostmax -1 %} +{%- endif %} + +{%- set cluster = { + 'has_virtual_nodes': False, + 'has_baremetal_nodes': False, + 'arch': [] } %} +{%- for node in conf.nodes %} + {%- if node.node.type == 'virtual' %} + {%- do cluster.update({'has_virtual_nodes': True}) %} + {%- else %} + {%- do cluster.update({'has_baremetal_nodes': True}) %} + {%- endif %} + {%- if node.node.arch not in cluster.arch %} + {%- do cluster.arch.append(node.node.arch) %} + {%- endif %} +{%- endfor %} diff --git a/config/installers/fuel/pod_config.yml.j2 b/config/installers/fuel/pod_config.yml.j2 index 8a4d869e..657bc2c1 100644 --- a/config/installers/fuel/pod_config.yml.j2 +++ b/config/installers/fuel/pod_config.yml.j2 @@ -1,136 +1,47 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +{%- import 'net_map.j2' as nm with context %} --- -{%- if conf.idf is defined and conf.idf.fuel is defined -%} - {%- if conf.idf.net_config is defined -%} - {%- set net_admin = conf.idf.net_config.admin.network -%} - {%- set net_mgmt = conf.idf.net_config.mgmt.network -%} - {%- set net_private = conf.idf.net_config.private.network -%} - {%- set net_public = conf.idf.net_config.public.network -%} - {%- set vlan_mgmt = conf.idf.net_config.mgmt.vlan -%} - {%- set vlan_private = conf.idf.net_config.private.vlan -%} - {%- if conf.idf.net_config.public.dns is defined -%} - {%- set dns_public = conf.idf.net_config.public.dns -%} - {%- endif -%} - {%- set pxe_interface = conf.idf.net_config.admin.interface -%} - {%- if conf.idf.net_config.public.gateway is defined -%} - {%- set net_public_gw = conf.idf.net_config.public.gateway -%} - {%- endif -%} - {%- else -%} - {%- set net_admin = '192.168.11.0' -%} - {%- set net_mgmt = '172.16.10.0' -%} - {%- set net_private = '10.1.0.0' -%} - {%- set net_public = '172.30.10.0' -%} - {%- set vlan_mgmt = '300' -%} - {%- set vlan_private = '1000' -%} - {%- set pxe_interface = 0 -%} - {%- endif -%} - - {%- if dns_public is not defined -%} - {%- set dns_public = [ '8.8.8.8', '8.8.4.4' ] -%} - {%- endif -%} - {%- if net_public_gw is not defined -%} - {%- set net_public_gw = net_public | ipaddr_index('1') -%} - {%- endif %} +{%- if nm.cluster.has_baremetal_nodes %} parameters: - _param: - - opnfv_jump_bridge_admin: {{ conf.idf.fuel.jumphost.bridges.admin }} - opnfv_jump_bridge_mgmt: {{ conf.idf.fuel.jumphost.bridges.mgmt }} - opnfv_jump_bridge_private: {{ conf.idf.fuel.jumphost.bridges.private }} - opnfv_jump_bridge_public: {{ conf.idf.fuel.jumphost.bridges.public }} - - opnfv_infra_config_address: {{ net_mgmt | ipaddr_index(100) }} - opnfv_infra_maas_node01_address: {{ net_mgmt | ipaddr_index(3) }} - opnfv_infra_maas_node01_deploy_address: {{ net_admin | ipaddr_index(3) }} - opnfv_infra_kvm_address: {{ net_mgmt | ipaddr_index(140) }} - opnfv_infra_kvm_node01_address: {{ net_mgmt | ipaddr_index(141) }} - opnfv_infra_kvm_node02_address: {{ net_mgmt | ipaddr_index(142) }} - opnfv_infra_kvm_node03_address: {{ net_mgmt | ipaddr_index(143) }} - - opnfv_infra_maas_pxe_network_address: {{ net_admin }} - opnfv_infra_maas_pxe_address: {{ net_admin | ipaddr_index(3) }} - opnfv_infra_maas_pxe_start_address: {{ net_admin | ipaddr_index(5) }} - opnfv_infra_maas_pxe_end_address: {{ net_admin | ipaddr_index(250) }} - - opnfv_openstack_gateway_node01_address: {{ net_mgmt | ipaddr_index(124) }} - opnfv_openstack_gateway_node02_address: {{ net_mgmt | ipaddr_index(125) }} - opnfv_openstack_gateway_node03_address: {{ net_mgmt | ipaddr_index(126) }} - opnfv_openstack_gateway_node01_tenant_address: {{ net_private | ipaddr_index(6) }} - opnfv_openstack_gateway_node02_tenant_address: {{ net_private | ipaddr_index(7) }} - opnfv_openstack_gateway_node03_tenant_address: {{ net_private | ipaddr_index(9) }} - opnfv_openstack_proxy_address: {{ net_public | ipaddr_index(103) }} - opnfv_openstack_proxy_node01_address: {{ net_public | ipaddr_index(104) }} - opnfv_openstack_proxy_node02_address: {{ net_public | ipaddr_index(105) }} - opnfv_openstack_proxy_node01_control_address: {{ net_mgmt | ipaddr_index(104) }} - opnfv_openstack_proxy_node02_control_address: {{ net_mgmt | ipaddr_index(105) }} - opnfv_openstack_control_address: {{ net_mgmt | ipaddr_index(10) }} - opnfv_openstack_control_node01_address: {{ net_mgmt | ipaddr_index(11) }} - opnfv_openstack_control_node02_address: {{ net_mgmt | ipaddr_index(12) }} - opnfv_openstack_control_node03_address: {{ net_mgmt | ipaddr_index(13) }} - opnfv_openstack_database_address: {{ net_mgmt | ipaddr_index(50) }} - opnfv_openstack_database_node01_address: {{ net_mgmt | ipaddr_index(51) }} - opnfv_openstack_database_node02_address: {{ net_mgmt | ipaddr_index(52) }} - opnfv_openstack_database_node03_address: {{ net_mgmt | ipaddr_index(53) }} - opnfv_openstack_message_queue_address: {{ net_mgmt | ipaddr_index(40) }} - opnfv_openstack_message_queue_node01_address: {{ net_mgmt | ipaddr_index(41) }} - opnfv_openstack_message_queue_node02_address: {{ net_mgmt | ipaddr_index(42) }} - opnfv_openstack_message_queue_node03_address: {{ net_mgmt | ipaddr_index(43) }} - opnfv_openstack_telemetry_address: {{ net_mgmt | ipaddr_index(75) }} - opnfv_openstack_telemetry_node01_address: {{ net_mgmt | ipaddr_index(76) }} - opnfv_openstack_telemetry_node02_address: {{ net_mgmt | ipaddr_index(77) }} - opnfv_openstack_telemetry_node03_address: {{ net_mgmt | ipaddr_index(78) }} - opnfv_openstack_compute_node01_single_address: {{ net_mgmt | ipaddr_index(101) }} - opnfv_openstack_compute_node02_single_address: {{ net_mgmt | ipaddr_index(102) }} - opnfv_openstack_compute_node03_single_address: {{ net_mgmt | ipaddr_index(103) }} - opnfv_openstack_compute_node01_control_address: {{ net_mgmt | ipaddr_index(101) }} - opnfv_openstack_compute_node02_control_address: {{ net_mgmt | ipaddr_index(102) }} - opnfv_openstack_compute_node03_control_address: {{ net_mgmt | ipaddr_index(103) }} - opnfv_openstack_compute_node01_tenant_address: {{ net_private | ipaddr_index(101) }} - opnfv_openstack_compute_node02_tenant_address: {{ net_private | ipaddr_index(102) }} - opnfv_openstack_compute_node03_tenant_address: {{ net_private | ipaddr_index(103) }} - opnfv_openstack_compute_node01_external_address: {{ net_public | ipaddr_index(101) }} - opnfv_openstack_compute_node02_external_address: {{ net_public | ipaddr_index(102) }} - - opnfv_opendaylight_server_node01_single_address: {{ net_mgmt | ipaddr_index(111) }} - - opnfv_net_public_gw: {{ net_public_gw }} - opnfv_name_servers: {{ dns_public }} - opnfv_dns_server01: '{{ dns_public[0] }}' - - opnfv_net_mgmt_vlan: {{ vlan_mgmt }} - opnfv_net_tenant_vlan: {{ vlan_private }} - - opnfv_maas_node01_architecture: '{{ conf.nodes.0.node.arch | dpkg_arch }}/generic' - opnfv_maas_node01_power_address: {{ conf.nodes.0.remote_management.address.rsplit('/')[0] }} - opnfv_maas_node01_power_type: {{ conf.nodes.0.remote_management.type }} - opnfv_maas_node01_power_user: {{ conf.nodes.0.remote_management.user }} - opnfv_maas_node01_power_password: {{ conf.nodes.0.remote_management.pass }} - opnfv_maas_node01_interface_mac: '{{ conf.nodes.0.interfaces[pxe_interface].mac_address }}' - - opnfv_maas_node02_architecture: '{{ conf.nodes.1.node.arch | dpkg_arch }}/generic' - opnfv_maas_node02_power_address: {{ conf.nodes.1.remote_management.address.rsplit('/')[0] }} - opnfv_maas_node02_power_type: {{ conf.nodes.1.remote_management.type }} - opnfv_maas_node02_power_user: {{ conf.nodes.1.remote_management.user }} - opnfv_maas_node02_power_password: {{ conf.nodes.1.remote_management.pass }} - opnfv_maas_node02_interface_mac: '{{ conf.nodes.1.interfaces[pxe_interface].mac_address }}' - - opnfv_maas_node03_architecture: '{{ conf.nodes.2.node.arch | dpkg_arch }}/generic' - opnfv_maas_node03_power_address: {{ conf.nodes.2.remote_management.address.rsplit('/')[0] }} - opnfv_maas_node03_power_type: {{ conf.nodes.2.remote_management.type }} - opnfv_maas_node03_power_user: {{ conf.nodes.2.remote_management.user }} - opnfv_maas_node03_power_password: {{ conf.nodes.2.remote_management.pass }} - opnfv_maas_node03_interface_mac: '{{ conf.nodes.2.interfaces[pxe_interface].mac_address }}' - - opnfv_maas_node04_architecture: '{{ conf.nodes.3.node.arch | dpkg_arch }}/generic' - opnfv_maas_node04_power_address: {{ conf.nodes.3.remote_management.address.rsplit('/')[0] }} - opnfv_maas_node04_power_type: {{ conf.nodes.3.remote_management.type }} - opnfv_maas_node04_power_user: {{ conf.nodes.3.remote_management.user }} - opnfv_maas_node04_power_password: {{ conf.nodes.3.remote_management.pass }} - opnfv_maas_node04_interface_mac: '{{ conf.nodes.3.interfaces[pxe_interface].mac_address }}' - - opnfv_maas_node05_architecture: '{{ conf.nodes.4.node.arch | dpkg_arch }}/generic' - opnfv_maas_node05_power_address: {{ conf.nodes.4.remote_management.address.rsplit('/')[0] }} - opnfv_maas_node05_power_type: {{ conf.nodes.4.remote_management.type }} - opnfv_maas_node05_power_user: {{ conf.nodes.4.remote_management.user }} - opnfv_maas_node05_power_password: {{ conf.nodes.4.remote_management.pass }} - opnfv_maas_node05_interface_mac: '{{ conf.nodes.4.interfaces[pxe_interface].mac_address }}' -{%- endif -%} + maas: + region: + machines: + {%- set ctl_roles = 3 if 'virtual' not in conf else conf.virtual.nodes.control | length %} + {%- set has_cmp = True if 'virtual' not in conf else 'compute' in conf.virtual.nodes %} + {%- for node in conf.nodes %} + {%- if (node.node.type == 'baremetal' and ( + (has_cmp and loop.index > nm.cmp001.idx) or loop.index0 < ctl_roles)) %} + {%- if loop.index > nm.cmp001.idx %} + cmp{{ '%03d' | format(loop.index - nm.cmp001.idx) }}: + {%- elif 'virtual' not in conf %} {#- strictly for Pharos verify job #} + kvm{{ '%02d' | format(loop.index) }}: + {%- else %} + {{ conf.virtual.nodes.control[loop.index0] }}: + {%- endif %} + interface: + mac: {{ node.interfaces[nm.idx_admin].mac_address }} + power_parameters: + power_address: {{ node.remote_management.address.rsplit('/')[0] }} + power_pass: {{ node.remote_management.pass }} + power_type: {{ node.remote_management.type }} + power_user: {{ node.remote_management.user }} + architecture: {{ node.node.arch | dpkg_arch }}/generic + distro_series: bionic + hwe_kernel: ${_param:hwe_kernel} + {%- if loop.index > nm.cmp001.idx %} + disk_layout: + type: lvm + root_device: sda + volume_group: vgroot + volume_name: lvroot + volume_size: 100 + {%- endif %} + {%- endif %} + {%- endfor %} +{%- endif %} diff --git a/config/installers/joid/pod_config.yaml.j2 b/config/installers/joid/pod_config.yaml.j2 index 4bb49d56..1ba966d9 100644 --- a/config/installers/joid/pod_config.yaml.j2 +++ b/config/installers/joid/pod_config.yaml.j2 @@ -1,167 +1,172 @@ +############################################################################## +# Copyright (c) 2018 Canonical Ltd. and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +{%- set net_config = conf.idf.net_config %} --- lab: location: intel racks: - - rack: pod5 + - rack: pod18 nodes: - - name: {{ conf['nodes'][0]['name'] }} - architecture: {{ conf['nodes'][0]['node']['arch'] }} + - name: {{ conf.nodes[0].name }} + architecture: {{ conf.nodes[0].node.arch }} roles: [network, control] nics: - - ifname: {{ conf['nodes'][0]['interfaces'][0]['name'] }} + - ifname: {{ conf.nodes[0].interfaces[1].name }}{% if conf.nodes[0].interfaces[1].vlan | int > 0 %}.{{conf.nodes[0].interfaces[1].vlan}}{% endif %} + spaces: [admin] + mac: ["{{ conf.nodes[0].interfaces[1].mac_address }}"] + - ifname: {{ conf.nodes[0].interfaces[2].name }}{% if conf.nodes[0].interfaces[2].vlan | int > 0 %}.{{conf.nodes[0].interfaces[2].vlan}}{% endif %} spaces: [data] - mac: ["{{ conf['nodes'][0]['interfaces'][0]['mac_address'] }}"] - - ifname: {{ conf['nodes'][0]['interfaces'][0]['name'] }}.{{ conf['nodes'][0]['interfaces'][0]['vlan'] }} + mac: ["{{ conf.nodes[0].interfaces[2].mac_address }}"] + - ifname: {{ conf.nodes[0].interfaces[0].name }}{% if conf.nodes[0].interfaces[0].vlan | int > 0 %}.{{conf.nodes[0].interfaces[0].vlan}}{% endif %} spaces: [floating] - mac: ["{{ conf['nodes'][0]['interfaces'][0]['mac_address'] }}"] - - ifname: {{ conf['nodes'][0]['interfaces'][1]['name'] }}.{{ conf['nodes'][0]['interfaces'][1]['vlan'] }} + mac: ["{{ conf.nodes[0].interfaces[0].mac_address }}"] + - ifname: {{ conf.nodes[0].interfaces[3].name }}{% if conf.nodes[0].interfaces[3].vlan | int > 0 %}.{{conf.nodes[0].interfaces[3].vlan}}{% endif %} spaces: [public] - mac: ["{{ conf['nodes'][0]['interfaces'][1]['mac_address'] }}"] - - ifname: {{ conf['nodes'][0]['interfaces'][1]['name'] }} + mac: ["{{ conf.nodes[0].interfaces[3].mac_address }}"] + - ifname: {{ conf.nodes[0].interfaces[3].name }} spaces: [storage] - mac: ["{{ conf['nodes'][0]['interfaces'][1]['mac_address'] }}"] - - ifname: {{ conf['nodes'][0]['interfaces'][2]['name'] }} - spaces: [admin] - mac: ["{{ conf['nodes'][0]['interfaces'][2]['mac_address'] }}"] + mac: ["{{ conf.nodes[0].interfaces[3].mac_address }}"] power: - type: {{ conf['jumphost']['remote_params']['type'] }} - address: {{ conf['nodes'][0]['remote_management']['address'] }} - user: {{ conf['jumphost']['remote_params']['user'] }} - pass: {{ conf['jumphost']['remote_params']['pass'] }} - - name: {{ conf['nodes'][1]['name'] }} - architecture: {{ conf['nodes'][1]['node']['arch'] }} + type: {{ conf.nodes[0].remote_management.type }} + address: {{ conf.nodes[0].remote_management.address }} + user: {{ conf.nodes[0].remote_management.user }} + pass: {{ conf.nodes[0].remote_management.pass }} + - name: {{ conf.nodes[1].name }} + architecture: {{ conf.nodes[1].node.arch }} roles: [compute, control, storage] nics: - - ifname: {{ conf['nodes'][1]['interfaces'][0]['name'] }} + - ifname: {{ conf.nodes[1].interfaces[1].name }}{% if conf.nodes[1].interfaces[1].vlan | int > 0 %}.{{conf.nodes[1].interfaces[1].vlan}}{% endif %} + spaces: [admin] + mac: ["{{ conf.nodes[1].interfaces[1].mac_address }}"] + - ifname: {{ conf.nodes[1].interfaces[2].name }}{% if conf.nodes[1].interfaces[2].vlan | int > 0 %}.{{conf.nodes[1].interfaces[2].vlan}}{% endif %} spaces: [data] - mac: ["{{ conf['nodes'][1]['interfaces'][0]['mac_address'] }}"] - - ifname: {{ conf['nodes'][1]['interfaces'][0]['name'] }}.{{ conf['nodes'][1]['interfaces'][0]['vlan'] }} + mac: ["{{ conf.nodes[1].interfaces[2].mac_address }}"] + - ifname: {{ conf.nodes[1].interfaces[0].name }}{% if conf.nodes[1].interfaces[0].vlan | int > 0 %}.{{conf.nodes[1].interfaces[0].vlan}}{% endif %} spaces: [floating] - mac: ["{{ conf['nodes'][1]['interfaces'][0]['mac_address'] }}"] - - ifname: {{ conf['nodes'][1]['interfaces'][1]['name'] }}.{{ conf['nodes'][1]['interfaces'][1]['vlan'] }} + mac: ["{{ conf.nodes[1].interfaces[0].mac_address }}"] + - ifname: {{ conf.nodes[1].interfaces[3].name }}{% if conf.nodes[1].interfaces[3].vlan | int > 0 %}.{{conf.nodes[1].interfaces[3].vlan}}{% endif %} spaces: [public] - mac: ["{{ conf['nodes'][1]['interfaces'][1]['mac_address'] }}"] - - ifname: {{ conf['nodes'][1]['interfaces'][1]['name'] }} + mac: ["{{ conf.nodes[1].interfaces[3].mac_address }}"] + - ifname: {{ conf.nodes[1].interfaces[3].name }} spaces: [storage] - mac: ["{{ conf['nodes'][1]['interfaces'][1]['mac_address'] }}"] - - ifname: {{ conf['nodes'][1]['interfaces'][2]['name'] }} - spaces: [admin] - mac: ["{{ conf['nodes'][1]['interfaces'][2]['mac_address'] }}"] + mac: ["{{ conf.nodes[1].interfaces[3].mac_address }}"] power: - type: {{ conf['jumphost']['remote_params']['type'] }} - address: {{ conf['nodes'][1]['remote_management']['address'] }} - user: {{ conf['jumphost']['remote_params']['user'] }} - pass: {{ conf['jumphost']['remote_params']['pass'] }} - - name: {{ conf['nodes'][2]['name'] }} - architecture: {{ conf['nodes'][2]['node']['arch'] }} + type: {{ conf.nodes[1].remote_management.type }} + address: {{ conf.nodes[1].remote_management.address }} + user: {{ conf.nodes[1].remote_management.user }} + pass: {{ conf.nodes[1].remote_management.pass }} + - name: {{ conf.nodes[2].name }} + architecture: {{ conf.nodes[2].node.arch }} roles: [compute, control, storage] nics: - - ifname: {{ conf['nodes'][2]['interfaces'][0]['name'] }} - spaces: [data] - mac: ["{{ conf['nodes'][2]['interfaces'][0]['mac_address'] }}"] - - ifname: {{ conf['nodes'][2]['interfaces'][0]['name'] }}.{{ conf['nodes'][2]['interfaces'][0]['vlan'] }} + - ifname: {{ conf.nodes[2].interfaces[1].name }}{% if conf.nodes[2].interfaces[1].vlan | int > 0 %}.{{conf.nodes[2].interfaces[1].vlan}}{% endif %} + spaces: [admin] + mac: ["{{ conf.nodes[2].interfaces[1].mac_address }}"] + - ifname: {{ conf.nodes[2].interfaces[2].name }}{% if conf.nodes[2].interfaces[2].vlan | int > 0 %}.{{conf.nodes[2].interfaces[2].vlan}}{% endif %} spaces: [floating] - mac: ["{{ conf['nodes'][2]['interfaces'][0]['mac_address'] }}"] - - ifname: {{ conf['nodes'][2]['interfaces'][1]['name'] }}.{{ conf['nodes'][2]['interfaces'][1]['vlan'] }} + mac: ["{{ conf.nodes[2].interfaces[2].mac_address }}"] + - ifname: {{ conf.nodes[2].interfaces[0].name }}{% if conf.nodes[2].interfaces[0].vlan | int > 0 %}.{{conf.nodes[2].interfaces[0].vlan}}{% endif %} spaces: [public] - mac: ["{{ conf['nodes'][2]['interfaces'][1]['mac_address'] }}"] - - ifname: {{ conf['nodes'][2]['interfaces'][1]['name'] }} + mac: ["{{ conf.nodes[2].interfaces[0].mac_address }}"] + - ifname: {{ conf.nodes[2].interfaces[3].name }}{% if conf.nodes[2].interfaces[3].vlan | int > 0 %}.{{conf.nodes[2].interfaces[3].vlan}}{% endif %} + spaces: [storage] + mac: ["{{ conf.nodes[2].interfaces[3].mac_address }}"] + - ifname: {{ conf.nodes[2].interfaces[3].name }} spaces: [storage] - mac: ["{{ conf['nodes'][2]['interfaces'][1]['mac_address'] }}"] - - ifname: {{ conf['nodes'][2]['interfaces'][2]['name'] }} + mac: ["{{ conf.nodes[2].interfaces[3].mac_address }}"] power: - type: {{ conf['jumphost']['remote_params']['type'] }} - address: {{ conf['nodes'][2]['remote_management']['address'] }} - user: {{ conf['jumphost']['remote_params']['user'] }} - pass: {{ conf['jumphost']['remote_params']['pass'] }} - - name: {{ conf['nodes'][3]['name'] }} - architecture: {{ conf['nodes'][3]['node']['arch'] }} + type: {{ conf.nodes[2].remote_management.type }} + address: {{ conf.nodes[2].remote_management.address }} + user: {{ conf.nodes[2].remote_management.user }} + pass: {{ conf.nodes[2].remote_management.pass }} + - name: {{ conf.nodes[3].name }} + architecture: {{ conf.nodes[3].node.arch }} roles: [compute, storage] nics: - - ifname: {{ conf['nodes'][3]['interfaces'][0]['name'] }} + - ifname: {{ conf.nodes[3].interfaces[1].name }}{% if conf.nodes[3].interfaces[1].vlan | int > 0 %}.{{conf.nodes[3].interfaces[1].vlan}}{% endif %} + spaces: [admin] + mac: ["{{ conf.nodes[3].interfaces[1].mac_address }}"] + - ifname: {{ conf.nodes[3].interfaces[2].name }}{% if conf.nodes[3].interfaces[2].vlan | int > 0 %}.{{conf.nodes[3].interfaces[2].vlan}}{% endif %} spaces: [data] - mac: ["{{ conf['nodes'][3]['interfaces'][0]['mac_address'] }}"] - - ifname: {{ conf['nodes'][3]['interfaces'][0]['name'] }}.{{ conf['nodes'][3]['interfaces'][0]['vlan'] }} + mac: ["{{ conf.nodes[3].interfaces[2].mac_address }}"] + - ifname: {{ conf.nodes[3].interfaces[0].name }}{% if conf.nodes[3].interfaces[0].vlan | int > 0 %}.{{conf.nodes[3].interfaces[0].vlan}}{% endif %} spaces: [floating] - mac: ["{{ conf['nodes'][3]['interfaces'][0]['mac_address'] }}"] - - ifname: {{ conf['nodes'][3]['interfaces'][1]['name'] }}.{{ conf['nodes'][3]['interfaces'][1]['vlan'] }} + mac: ["{{ conf.nodes[3].interfaces[0].mac_address }}"] + - ifname: {{ conf.nodes[3].interfaces[3].name }}{% if conf.nodes[3].interfaces[3].vlan | int > 0 %}.{{conf.nodes[3].interfaces[3].vlan}}{% endif %} spaces: [public] - mac: ["{{ conf['nodes'][3]['interfaces'][1]['mac_address'] }}"] - - ifname: {{ conf['nodes'][3]['interfaces'][1]['name'] }} + mac: ["{{ conf.nodes[3].interfaces[3].mac_address }}"] + - ifname: {{ conf.nodes[3].interfaces[3].name }} spaces: [storage] - mac: ["{{ conf['nodes'][3]['interfaces'][1]['mac_address'] }}"] - - ifname: {{ conf['nodes'][3]['interfaces'][2]['name'] }} + mac: ["{{ conf.nodes[3].interfaces[3].mac_address }}"] power: - type: ipmi - address: {{ conf['nodes'][3]['remote_management']['address'] }} - user: {{ conf['jumphost']['remote_params']['user'] }} - pass: {{ conf['jumphost']['remote_params']['pass'] }} - - name: {{ conf['nodes'][4]['name'] }} - architecture: {{ conf['nodes'][4]['node']['arch'] }} + type: {{ conf.nodes[3].remote_management.type }} + address: {{ conf.nodes[3].remote_management.address }} + user: {{ conf.nodes[3].remote_management.user }} + pass: {{ conf.nodes[3].remote_management.pass }} + - name: {{ conf.nodes[4].name }} + architecture: {{ conf.nodes[4].node.arch }} roles: [compute, storage] nics: - - ifname: {{ conf['nodes'][4]['interfaces'][0]['name'] }} + - ifname: {{ conf.nodes[4].interfaces[1].name }}{% if conf.nodes[4].interfaces[1].vlan | int > 0 %}.{{conf.nodes[4].interfaces[1].vlan}}{% endif %} + spaces: [admin] + mac: ["{{ conf.nodes[4].interfaces[1].mac_address }}"] + - ifname: {{ conf.nodes[4].interfaces[2].name }}{% if conf.nodes[4].interfaces[2].vlan | int > 0 %}.{{conf.nodes[4].interfaces[2].vlan}}{% endif %} spaces: [data] - mac: ["{{ conf['nodes'][4]['interfaces'][0]['mac_address'] }}"] - - ifname: {{ conf['nodes'][4]['interfaces'][0]['name'] }}.{{ conf['nodes'][4]['interfaces'][0]['vlan'] }} + mac: ["{{ conf.nodes[4].interfaces[2].mac_address }}"] + - ifname: {{ conf.nodes[4].interfaces[0].name }}{% if conf.nodes[4].interfaces[0].vlan | int > 0 %}.{{conf.nodes[4].interfaces[0].vlan}}{% endif %} spaces: [floating] - mac: ["{{ conf['nodes'][4]['interfaces'][0]['mac_address'] }}"] - - ifname: {{ conf['nodes'][4]['interfaces'][1]['name'] }}.{{ conf['nodes'][4]['interfaces'][1]['vlan'] }} + mac: ["{{ conf.nodes[4].interfaces[0].mac_address }}"] + - ifname: {{ conf.nodes[4].interfaces[3].name }}{% if conf.nodes[4].interfaces[3].vlan | int > 0 %}.{{conf.nodes[4].interfaces[3].vlan}}{% endif %} spaces: [public] - mac: ["{{ conf['nodes'][4]['interfaces'][1]['mac_address'] }}"] - - ifname: {{ conf['nodes'][4]['interfaces'][1]['name'] }} + mac: ["{{ conf.nodes[4].interfaces[3].mac_address }}"] + - ifname: {{ conf.nodes[1].interfaces[2].name }} spaces: [storage] - mac: ["{{ conf['nodes'][4]['interfaces'][1]['mac_address'] }}"] - - ifname: {{ conf['nodes'][1]['interfaces'][2]['name'] }} + mac: ["{{ conf.nodes[4].interfaces[3].mac_address }}"] power: - type: {{ conf['jumphost']['remote_params']['type'] }} - address: {{ conf['nodes'][4]['remote_management']['address'] }} - user: {{ conf['jumphost']['remote_params']['user'] }} - pass: {{ conf['jumphost']['remote_params']['pass'] }} + type: {{ conf.nodes[4].remote_management.type }} + address: {{ conf.nodes[4].remote_management.address }} + user: {{ conf.nodes[4].remote_management.user }} + pass: {{ conf.nodes[4].remote_management.pass }} floating-ip-range: 10.5.15.6,10.5.15.250,10.5.15.1,10.5.15.0/24 - ext-port: "ens785f0.505" - dns: 8.8.8.8 + ext-port: "nic1" + dns: {{ net_config.public.dns[0] }} osdomainname: -opnfv: - release: c - distro: trusty - type: nonha - openstack: liberty - sdncontroller: - - type: nosdn - storage: - - type: ceph - disk: /dev/sdb - feature: odl_l2 - spaces: - - type: admin - bridge: brAdm - cidr: 10.5.1.0/24 - gateway: 10.5.1.1 - vlan: - - type: data - bridge: brData - cidr: 10.5.12.0/24 - gateway: - vlan: - - type: storage - bridge: brStor - cidr: 10.5.13.0/24 - gateway: - vlan: - - type: public - bridge: brMgmt - cidr: 10.5.14.0/24 - gateway: - vlan: 504 - - type: floating - bridge: brPublic - cidr: 10.5.15.0/24 - gateway: - vlan: 505 - - type: external - bridge: brExt - cidr: - gateway: - ipaddress: 10.2.117.92 - vlan: + opnfv: + release: f + distro: xenial + type: noha + openstack: pike + sdncontroller: + - type: nosdn + storage: + - type: ceph + disk: /dev/sdb + feature: odl_l2 + spaces: + - type: admin # admin + bridge: {{ net_config.admin.bridge }} # admin bridge + cidr: {{ net_config.admin.network }}/{{ net_config.admin.mask }} + gateway: {{ net_config.admin.gateway }} # admin gateway + vlan: + - type: data # mgmt + cidr: {{ net_config.mgmt.network }}/{{ net_config.mgmt.mask }} + gateway: + vlan: + - type: storage # storage + cidr: {{ net_config.storage.network }}/{{ net_config.storage.mask }} + gateway: + vlan: + - type: floating # private + bridge: {{ net_config.private.bridge }} # private bridge + cidr: {{ net_config.private.network }}/{{ net_config.private.mask }} + gateway: + vlan: + - type: public # public + cidr: {{ net_config.public.network }}/{{ net_config.public.mask }} + gateway: {{ net_config.public.gateway }} + vlan: {% if net_config.public.vlan | int > 0 %}{{ net_config.public.vlan }}{% endif %} # public vlan diff --git a/config/pdf/idf-pod1.schema.yaml b/config/pdf/idf-pod1.schema.yaml new file mode 100644 index 00000000..7546279d --- /dev/null +++ b/config/pdf/idf-pod1.schema.yaml @@ -0,0 +1,231 @@ +############################################################################## +# Copyright (c) 2018 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +$schema: 'http://json-schema.org/schema#' +$id: 'https://github.com/opnfv/pharos/blob/master/config/pdf/pod1.yaml' + +definitions: + net_config: + v0.1: + # NOTE: I hope this is going away soon, so I won't model it yet + type: 'object' + compass: + v0.1: + type: 'object' + # NOTE: To be properly modeled by Compass4NFV maintainers + daisy: + v0.1: + type: 'object' + # NOTE: To be properly modeled by Daisy maintainers + fuel: + v0.1: + type: 'object' + properties: + jumphost: + type: 'object' + properties: + bridges: + type: 'object' + properties: + admin: + type: ['string', 'null'] + mgmt: + type: ['string', 'null'] + private: + type: ['string', 'null'] + public: + type: ['string', 'null'] + required: ['admin', 'mgmt', 'private', 'public'] + additionalProperties: false + trunks: + type: 'object' + properties: + mgmt: + type: 'boolean' + required: ['mgmt'] + additionalProperties: false + required: ['bridges'] + additionalProperties: false + maas: + type: 'object' + properties: + timeout_comissioning: + type: 'number' + timeout_deploying: + type: 'number' + required: ['timeout_comissioning', 'timeout_deploying'] + additionalProperties: false + network: + type: 'object' + properties: + interface_mtu: + type: 'number' + ntp_strata_host1: + type: 'string' + ntp_strata_host2: + type: 'string' + node: + type: 'array' + items: + type: 'object' + properties: + interfaces: + type: 'array' + items: + type: ['string', 'null'] + busaddr: + type: 'array' + items: + type: ['string', 'null'] + required: ['interfaces', 'busaddr'] + additionalProperties: false + required: ['node'] + additionalProperties: false + reclass: # Optional + type: 'object' + properties: + node: + type: 'array' + items: + type: 'object' + properties: + compute_params: + type: 'object' + properties: + common: # Optional + type: 'object' + properties: &compute_params_common_properties + nova_cpu_pinning: # Optional + type: 'string' + compute_hugepages_size: + type: 'string' + enum: ['2M', '1G'] + compute_hugepages_count: + type: 'number' + compute_hugepages_mount: + type: 'string' + compute_kernel_isolcpu: # Optional + type: 'string' + compute_ovs_pmd_cpu_mask: # Optional + type: ['string', 'number'] + compute_ovs_memory_channels: # Optional + type: ['string', 'number'] + required: ['compute_hugepages_size', 'compute_hugepages_count', + 'compute_hugepages_mount'] + additionalProperties: false + dpdk: # Optional + type: 'object' + properties: + <<: *compute_params_common_properties + compute_dpdk_driver: + type: 'string' + compute_ovs_dpdk_socket_mem: + type: ['string', 'number'] + compute_ovs_dpdk_lcore_mask: + type: ['string', 'number'] + dpdk0_driver: + type: 'string' + dpdk0_n_rxq: + type: 'number' + required: ['compute_dpdk_driver', 'dpdk0_driver', 'dpdk0_n_rxq', + 'compute_ovs_dpdk_socket_mem', + 'compute_ovs_dpdk_lcore_mask'] + additionalProperties: false + additionalProperties: false + required: ['compute_params'] + additionalProperties: false + required: ['node'] + additionalProperties: false + required: ['jumphost', 'network'] + additionalProperties: false + osa: + v0.1: + type: 'object' + properties: + nodes_roles: + type: 'object' + groups: + type: 'object' + hostnames: + type: 'object' + network: + type: 'object' + required: ['nodes_roles', 'groups', 'hostnames', 'network'] + additionalProperties: false + kubespray: + v0.1: + type: ['object', 'null'] + # NOTE: To be properly modeled by XCI maintainers + +############################################################################## +# Top-level structure: +# - define all possible top-level and second-level keys, without enforcing a +# schema for second-level, just so we can disallow additional properties; +# - require 'version' and allow dynamically generated 'version_x.y' key; +properties: + idf: + properties: + # version_x.y keys are auto-added by `validate_schema.py` based on 'version' + version_0.1: + type: 'boolean' + version: + type: 'number' + enum: [0.1] + installer: + type: 'array' + items: + type: 'string' + enum: ['apex', 'compass4nfv', 'daisy', 'fuel', 'joid', 'osa', 'kubespray'] + net_config: + type: 'object' + compass: + type: 'object' + daisy: + type: 'object' + fuel: + type: 'object' + osa: + type: ['object', 'null'] + kubespray: + type: ['object', 'null'] + required: ['version'] + additionalProperties: false + ############################################################################ + # Schema versioning + # - based on dynamically added 'version_x.y', require additional IDF blocks + # and validate them against the proper schema version; + dependencies: + version_0.1: + properties: + net_config: + $ref: '#/definitions/net_config/v0.1' + compass: + $ref: '#/definitions/compass/v0.1' + daisy: + $ref: '#/definitions/daisy/v0.1' + fuel: + $ref: '#/definitions/fuel/v0.1' + osa: + $ref: '#/definitions/osa/v0.1' + kubespray: + $ref: '#/definitions/kubespray/v0.1' + fuel: + required: ['net_config'] + daisy: + required: ['net_config'] + osa: + required: ['net_config'] + kubespray: + required: ['net_config'] + xci: + type: 'object' + # NOTE: To be properly modeled by XCI maintainers + +# Do not allow any properties not defined here. This lets us catch typos. +additionalProperties: false +required: ['idf'] diff --git a/config/pdf/pod1.encrypted.yaml b/config/pdf/pod1.encrypted.yaml index 5679de66..c2512632 100644 --- a/config/pdf/pod1.encrypted.yaml +++ b/config/pdf/pod1.encrypted.yaml @@ -1,6 +1,15 @@ +############################################################################## +# Copyright (c) 2018 Intel Corporation, Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## --- ### POD descriptor file ### +version: 1.0 + details: pod_owner: Lab Owner contact: email@address.com @@ -45,7 +54,8 @@ jumphost: os: ubuntu-14.04 remote_params: &remote_params # hardware management tool - type: {ipmi|amt} + type: {ipmi|amt|libvirt} + # array of supported versions, mandatory for all but 'libvirt' versions: - 1.0 - 2.0 @@ -73,6 +83,7 @@ jumphost: remote_management: <<: *remote_params address: 10.4.7.3/24 + # MAC address is mandatory for all BMC types but 'libvirt' mac_address: "10:23:45:67:89:AC" # physical interface list interfaces: diff --git a/config/pdf/pod1.schema.yaml b/config/pdf/pod1.schema.yaml index a602b562..4de326ed 100644 --- a/config/pdf/pod1.schema.yaml +++ b/config/pdf/pod1.schema.yaml @@ -10,173 +10,240 @@ $schema: 'http://json-schema.org/schema#' $id: 'https://github.com/opnfv/pharos/blob/master/config/pdf/pod1.yaml' definitions: + ############################################################################ + # Low-level, general purpose definitions, unversioned ip_address: type: 'string' # NOTE: we don't validate this is a valid addr (yet) mac_address: type: 'string' pattern: '^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' - # Common node schema for jumpserver, cluster nodes + ############################################################################ + # Mid-level definitions, common schema for jumpserver & cluster nodes node: - type: 'object' - properties: - type: - type: 'string' - enum: ['baremetal', 'virtual'] - vendor: - type: 'string' - model: - type: 'string' - arch: - type: 'string' - enum: ['aarch64', 'x86_64'] - cpus: - type: 'number' - cpu_cflags: - type: 'string' - cores: - type: 'number' - memory: - type: 'string' - pattern: '^[0-9]+[GT]B?$' - required: ['type', 'vendor', 'model', 'arch', 'cpus', 'cpu_cflags', 'cores', 'memory'] - additionalProperties: false - disks: - type: 'array' - items: + v1.0: type: 'object' properties: - name: + type: + type: 'string' + enum: ['baremetal', 'virtual'] + vendor: type: 'string' - pattern: '^disk[0-9]+$' - disk_capacity: + model: type: 'string' - pattern: '^[0-9]+[MGT]B?$' - disk_type: + arch: type: 'string' - enum: ['hdd', 'ssd', 'cdrom', 'tape'] - disk_interface: + enum: ['aarch64', 'x86_64'] + cpus: + type: 'number' + cpu_cflags: type: 'string' - enum: ['sata', 'sas', 'ssd', 'nvme', 'scsi', 'iscsi'] - disk_rotation: + cores: type: 'number' - enum: [0, 5400, 7200, 10000, 15000] - required: ['name', 'disk_capacity', 'disk_type', 'disk_interface', 'disk_rotation'] + memory: + type: 'string' + pattern: '^[1-9]\d*[MGT]B?$' + required: ['type', 'vendor', 'model', 'arch', 'cpus', 'cpu_cflags', 'cores', 'memory'] additionalProperties: false + disks: + v1.0: + type: 'array' + items: + type: 'object' + properties: + name: + type: 'string' + pattern: '^disk[0-9]+$' + disk_capacity: + type: 'string' + pattern: '^[1-9][\d\.]*[MGT]B?$' + disk_type: + type: 'string' + enum: ['hdd', 'ssd', 'cdrom', 'tape'] + disk_interface: + type: 'string' + enum: ['sata', 'sas', 'ssd', 'nvme', 'scsi', 'iscsi'] + disk_rotation: + type: 'number' + enum: [0, 5400, 7200, 10000, 15000] + required: ['name', 'disk_capacity', 'disk_type', 'disk_interface', 'disk_rotation'] + additionalProperties: false remote_management: - type: 'object' - properties: - type: - type: 'string' - enum: ['ipmi', 'amt'] - versions: - type: 'array' - items: + v1.0: + properties: + user: + type: 'string' + pass: + type: 'string' + port: type: 'number' - enum: [1.0, 2.0] - user: - type: 'string' - pass: - type: 'string' - address: - $ref: '#/definitions/ip_address' - mac_address: - $ref: '#/definitions/mac_address' - required: ['type', 'versions', 'user', 'pass', 'address', 'mac_address'] - additionalProperties: false + privilege_level: + type: 'string' + type: + type: 'string' + versions: + type: 'array' + address: + type: 'string' + mac_address: + type: 'string' + # These subsections are best validated separately for baremetal/virtual + oneOf: + - type: 'object' + properties: + type: + type: 'string' + enum: ['ipmi', 'amt'] + versions: + type: 'array' + items: + type: 'number' + enum: [1.0, 2.0] + address: + $ref: '#/definitions/ip_address' + mac_address: + $ref: '#/definitions/mac_address' + required: ['type', 'versions', 'address', 'mac_address'] + - type: 'object' + properties: + type: + type: 'string' + enum: ['libvirt'] + address: + type: 'string' # Loose validation of libvirt URI for now + required: ['type', 'address'] + required: ['user', 'pass'] + additionalProperties: false interfaces: - type: 'array' - items: + v1.0: + type: 'array' + items: + type: 'object' + properties: + name: + type: 'string' + pattern: '^nic[0-9]+$' + mac_address: + $ref: '#/definitions/mac_address' + # Optional + address: + $ref: '#/definitions/ip_address' + # Optional + vlan: + oneOf: + - type: 'string' + pattern: '^(native|[1-9][0-9]{0,3})(\|(native|[1-9][0-9]{0,3}))*$' + - type: 'integer' + mininum: 1 + maximum: 4095 + # Optional + speed: + type: 'string' + enum: ['1gb', '10gb', '25gb', '40gb'] + # FIXME: mandatory for nodes? + # Optional + features: + type: ['string', 'null'] + pattern: '^((dpdk|sriov)\|?)*$' + # FIXME: mandatory for nodes? + required: ['name', 'mac_address'] + additionalProperties: false + ############################################################################ + # Top-level PDF blocks, versioned + details: + v1.0: type: 'object' properties: - name: + type: type: 'string' - pattern: '^nic[0-9]+$' - mac_address: - $ref: '#/definitions/mac_address' - # Optional - address: - $ref: '#/definitions/ip_address' - # Optional - vlan: - oneOf: - - type: 'string' - pattern: '^(native|[1-9][0-9]{0,3})(\|(native|[1-9][0-9]{0,3}))*$' - - type: 'integer' - mininum: 1 - maximum: 4095 - # Optional - speed: - type: 'string' - enum: ['1gb', '10gb', '25gb', '40gb'] - # FIXME: mandatory for nodes? - # Optional - features: - type: ['string', 'null'] - pattern: '^((dpdk|sriov)\|?)*$' - # FIXME: mandatory for nodes? - required: ['name', 'mac_address'] + enum: ['production', 'development'] + pod_owner: + type: 'string' + contact: + type: 'string' + pattern: '^([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+[,; ]*)+$' + lab: + type: 'string' + location: + type: 'string' + link: + type: 'string' + required: ['type', 'pod_owner', 'contact', 'lab', 'location', 'link'] additionalProperties: false - -# Do not allow any properties not defined here. This lets us catch typos. -additionalProperties: false - -properties: - details: - type: 'object' - properties: - type: - type: 'string' - enum: ['production', 'development'] - pod_owner: - type: 'string' - contact: - type: 'string' - pattern: '^([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+[,; ]*)+$' - lab: - type: 'string' - location: - type: 'string' - link: - type: 'string' - required: ['type', 'pod_owner', 'contact', 'lab', 'location', 'link'] - additionalProperties: false jumphost: - type: 'object' - properties: - name: - type: 'string' - node: - $ref: '#/definitions/node' - disks: - $ref: '#/definitions/disks' - os: - type: 'string' - remote_params: # Optional YAML anchor, contents will be validated below - type: 'object' - remote_management: - $ref: '#/definitions/remote_management' - interfaces: - $ref: '#/definitions/interfaces' - required: ['name', 'node', 'disks', 'os', 'remote_management', 'interfaces'] - additionalProperties: false - nodes: - type: 'array' - items: + v1.0: type: 'object' properties: name: type: 'string' node: - $ref: '#/definitions/node' + $ref: '#/definitions/node/v1.0' disks: - $ref: '#/definitions/disks' + $ref: '#/definitions/disks/v1.0' os: type: 'string' - remote_params: # Optional YAML anchor, contents will be validated after inject + remote_params: # Optional YAML anchor, contents will be validated below type: 'object' remote_management: - $ref: '#/definitions/remote_management' + $ref: '#/definitions/remote_management/v1.0' interfaces: - $ref: '#/definitions/interfaces' - required: ['name', 'node', 'disks', 'remote_management', 'interfaces'] + $ref: '#/definitions/interfaces/v1.0' + required: ['name', 'node', 'disks', 'os', 'remote_management', 'interfaces'] additionalProperties: false + nodes: + v1.0: + type: 'array' + items: + type: 'object' + properties: + name: + type: 'string' + node: + $ref: '#/definitions/node/v1.0' + disks: + $ref: '#/definitions/disks/v1.0' + os: + type: 'string' + remote_params: # Optional YAML anchor, contents will be validated after inject + type: 'object' + remote_management: + $ref: '#/definitions/remote_management/v1.0' + interfaces: + $ref: '#/definitions/interfaces/v1.0' + required: ['name', 'node', 'disks', 'remote_management', 'interfaces'] + additionalProperties: false + +############################################################################## +# Top-level structure: +# - define all possible top-level keys, without enforcing a schema for them, +# just so we can disallow additional properties; +# - require 'version' and allow dynamically generated 'version_x.y' key; +properties: + # version_x.y keys are auto-added by `validate_schema.py` based on 'version' + version_1.0: + type: 'boolean' + version: + type: 'number' + enum: [1.0] + details: + type: 'object' + jumphost: + type: 'object' + nodes: + type: 'array' +required: ['version'] +additionalProperties: false + +############################################################################## +# Schema versioning +# - based on dynamically added 'version_x.y', require additional PDF blocks +# and validate them against the proper schema version; +dependencies: + version_1.0: + properties: + details: + $ref: '#/definitions/details/v1.0' + jumphost: + $ref: '#/definitions/jumphost/v1.0' + nodes: + $ref: '#/definitions/nodes/v1.0' + required: ['details', 'jumphost', 'nodes'] diff --git a/config/pdf/pod1.yaml b/config/pdf/pod1.yaml index a2a1e555..4ea751ec 100644 --- a/config/pdf/pod1.yaml +++ b/config/pdf/pod1.yaml @@ -1,6 +1,15 @@ +############################################################################## +# Copyright (c) 2018 Intel Corporation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## --- ### POD descriptor file ### +version: 1.0 + details: pod_owner: Lab Owner contact: email@address.com @@ -45,7 +54,8 @@ jumphost: os: ubuntu-14.04 remote_params: &remote_params # hardware management tool - type: {ipmi|amt} + type: {ipmi|amt|libvirt} + # array of supported versions, mandatory for all but 'libvirt' versions: - 1.0 - 2.0 @@ -54,6 +64,7 @@ jumphost: remote_management: <<: *remote_params address: 10.4.7.3/24 + # MAC address is mandatory for all BMC types but 'libvirt' mac_address: "10:23:45:67:89:AC" # physical interface list interfaces: diff --git a/config/utils/README.eyaml.rst b/config/utils/README.eyaml.rst index 0031d9d8..1f584261 100644 --- a/config/utils/README.eyaml.rst +++ b/config/utils/README.eyaml.rst @@ -1,6 +1,6 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. SPDX-License-Identifier: CC-BY-4.0 -.. (c) 2017 OPNFV and others. +.. (c) 2018 OPNFV and others. Use eyaml to decrypt secret values ================================== diff --git a/config/utils/check-jinja2.sh b/config/utils/check-jinja2.sh index 3c5e5163..1fcdb9a2 100755 --- a/config/utils/check-jinja2.sh +++ b/config/utils/check-jinja2.sh @@ -1,7 +1,7 @@ #!/bin/bash # SPDX-license-identifier: Apache-2.0 ############################################################################## -# Copyright (c) 2016 Linux Foundation and others. +# Copyright (c) 2018 Linux Foundation and others. # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at @@ -12,8 +12,15 @@ set +x set +o errexit export PATH=$PATH:/usr/local/bin/ -GEN_CFG='./config/utils/generate_config.py' -INSTALLER_ADAPTERS='./config/installers/*' +# Optional filtering of test matrix: per-lab, per-pod, per-installer +# e.g. To check zte-pod{2,3} against all installer adapters: +# ./config/utils/check-jinja2.sh zte 'pod(2|3)' +FILTER_LAB=${1:-*} # e.g. 'zte' (glob) +FILTER_POD=${2:-(pod|virtual)[[:digit:]]+} # e.g. 'pod1' (regex) +FILTER_IA=${3:-*} # e.g. 'fuel' (glob) + +GEN_CFG='python ./config/utils/generate_config.py' +INSTALLER_ADAPTERS="./config/installers/${FILTER_IA}" TMPF='/tmp/out.yml' # should be outside Jenkins WS to prevent data leakage RC=0 @@ -25,15 +32,27 @@ for adapter in 'PDF Verify Matrix' ${INSTALLER_ADAPTERS}; do done # Iterate all PDFs, check with each installer adapter, log results +# shellcheck disable=SC2086 while IFS= read -r lab_config; do SUMMARY+="\n${lab_config#labs/};" + idf_config="$(dirname "${lab_config}")/idf-$(basename "${lab_config}")" + idf_installer=$(grep 'installer:' "${idf_config}" 2>/dev/null || echo) echo "###################### ${lab_config} ######################" for adapter in ${INSTALLER_ADAPTERS}; do pdf_inst=0 pdf_inst_pass=0 pdf_yaml_pass=0 + installer_name=$(basename "${adapter}") + if [ -n "${idf_installer}" ] && echo "${idf_installer}" | \ + grep -vq "${installer_name}"; then + SUMMARY+='-;' + echo -n "[GENERATE] [SKIP] idf.installer defined and " + echo -e "${installer_name} not listed, skipping.\n" + continue + fi while IFS= read -r jinja_template; do - pdf_gen_cmd="${GEN_CFG} -y ${lab_config} -j ${jinja_template}" + pdf_gen_cmd="${GEN_CFG} -y ${lab_config} -j ${jinja_template} \ + -i $(dirname "${jinja_template}")" if ${pdf_gen_cmd} > "${TMPF}"; then ((pdf_inst_pass+=1)) echo "[GENERATE] [OK] ${pdf_gen_cmd}" @@ -52,7 +71,8 @@ while IFS= read -r lab_config; do done < <(find "${adapter}" -name '*.j2') SUMMARY+="${pdf_yaml_pass}/${pdf_inst_pass}/${pdf_inst};" done -done < <(find 'labs' -name 'pod*.yaml') +done < <(find labs/${FILTER_LAB} -regextype egrep \ + -regex "labs/.+/${FILTER_POD}.yaml") rm -f "${TMPF}" cat <<EOF diff --git a/config/utils/check-schema.sh b/config/utils/check-schema.sh index 321c5ced..041c0308 100755 --- a/config/utils/check-schema.sh +++ b/config/utils/check-schema.sh @@ -9,25 +9,39 @@ export PATH=$PATH:/usr/local/bin/ -VALIDATE_SCHEMA='./config/utils/validate_schema.py' +VALIDATE_SCHEMA='python ./config/utils/validate_schema.py' PDF_SCHEMA='./config/pdf/pod1.schema.yaml' +IDF_SCHEMA='./config/pdf/idf-pod1.schema.yaml' RC=0 +SUMMARY+=";;PDF;IDF;\n" while IFS= read -r lab_config; do + idf_config="$(dirname "${lab_config}")/idf-$(basename "${lab_config}")" pdf_cmd="${VALIDATE_SCHEMA} -s ${PDF_SCHEMA} -y ${lab_config}" + idf_cmd="${VALIDATE_SCHEMA} -s ${IDF_SCHEMA} -y ${idf_config}" echo "###################### ${lab_config} ######################" - pdf_out=$(${pdf_cmd} |& sed 's|ENC\[PKCS.*\]|opnfv|g') + pdf_out=$(${pdf_cmd} 2>&1 | sed 's|ENC\[PKCS.*\][\\n]*|opnfv|g') if [ -z "${pdf_out}" ]; then - SUMMARY+=";${lab_config#labs/};OK;\n" + SUMMARY+=";${lab_config#labs/};OK;" echo "[PDF] [OK] ${pdf_cmd}" else - SUMMARY+=";${lab_config#labs/};ERROR;\n" + SUMMARY+=";${lab_config#labs/};ERROR;" RC=1 echo "${pdf_out}" echo "[PDF] [ERROR] ${pdf_cmd}" fi + if [ ! -f "${idf_config}" ]; then + SUMMARY+="-;\n" + elif ${idf_cmd}; then + SUMMARY+="OK;\n" + echo "[IDF] [OK] ${idf_cmd}" + else + SUMMARY+="ERROR;\n" + RC=1 + echo "[IDF] [ERROR] ${idf_cmd}" + fi echo '' -done < <(find 'labs' -name 'pod*.yaml') +done < <(find 'labs' -name 'pod*.yaml' -or -name 'virtual*.yaml') cat <<EOF ###################### Schema Validation Matrix ###################### diff --git a/config/utils/config.example.yaml b/config/utils/config.example.yaml index 084d11d2..3a10a144 100644 --- a/config/utils/config.example.yaml +++ b/config/utils/config.example.yaml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 OPNFV and others. +# Copyright (c) 2018 OPNFV and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 diff --git a/config/utils/gen_config_lib.py b/config/utils/gen_config_lib.py new file mode 100644 index 00000000..1e7229be --- /dev/null +++ b/config/utils/gen_config_lib.py @@ -0,0 +1,224 @@ +############################################################################## +# Copyright (c) 2018 OPNFV and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +"""Library for generate_config functions and custom jinja2 filters""" + +import logging +from ipaddress import IPv4Network, IPv4Address + + +def load_custom_filters(environment): + """Load all defined filters into the jinja2 enviroment""" + + # TODO deprecate ipaddr_index and netmask for the better ipnet ones + filter_list = { + 'dpkg_arch': filter_dpkg_arch, + 'storage_size_num': filter_storage_size_num, + 'ipnet_hostaddr': filter_ipnet_hostaddr, + 'ipnet_hostmin': filter_ipnet_hostmin, + 'ipnet_hostmax': filter_ipnet_hostmax, + 'ipnet_broadcast': filter_ipnet_broadcast, + 'ipnet_netmask': filter_ipnet_netmask, + 'ipnet_contains_ip': filter_ipnet_contains_ip, + 'ipnet_contains_iprange': filter_ipnet_contains_iprange, + 'ipnet_range_size': filter_ipnet_range_size, + 'ipaddr_index': filter_ipaddr_index, + 'netmask': filter_netmask + } + + for name, function in filter_list.items(): + environment.filters[name] = function + + +def filter_dpkg_arch(arch, to_dpkg=True): + """Convert DPKG-compatible from processor arch and vice-versa""" + + # Processor architecture (as reported by $(uname -m)) + # vs DPKG architecture mapping + dpkg_arch_table = { + 'aarch64': 'arm64', + 'x86_64': 'amd64', + } + arch_dpkg_table = dict( + zip(dpkg_arch_table.values(), dpkg_arch_table.keys())) + + if to_dpkg: + return dpkg_arch_table[arch] + else: + return arch_dpkg_table[arch] + + +def filter_storage_size_num(size_str): + """Convert human-readable size string to a string convertible to float""" + + # pattern: '^[1-9][\d\.]*[MGT]B?$', multiplier=1000 (not KiB) + if size_str.endswith('B'): + size_str = size_str[:-1] + try: + size_num = 1000000 + for multiplier in ['M', 'G', 'T']: + if size_str.endswith(multiplier): + return '{:.2f}'.format(size_num * float(size_str[:-1])) + size_num = size_num * 1000 + return '{:.2f}'.format(float(size_str)) + except ValueError as ex: + logging.error(size_str + " is not a valid size string") + raise + + +def filter_ipnet_hostaddr(network_cidr, index): + """Return the host IP address on given index from an IP network""" + try: + network_cidr_str = unicode(network_cidr) + except NameError as ex: + network_cidr_str = str(network_cidr) + try: + return IPv4Network(network_cidr_str)[index] + except ValueError as ex: + logging.error(network_cidr_str + " is not a valid network address") + raise + except IndexError as ex: + logging.error(network_cidr_str + " has not enough range for " + + str(index) + " host IPs.") + raise + + +def filter_ipnet_broadcast(network_cidr): + """Return broadcast IP address from given IP network""" + try: + network_cidr_str = unicode(network_cidr) + except NameError as ex: + network_cidr_str = str(network_cidr) + try: + return IPv4Network(network_cidr_str).broadcast_address + except ValueError as ex: + logging.error(network_cidr_str + " is not a valid network address") + raise + + +def filter_ipnet_hostmin(network_cidr): + """Return the first host IP address from given IP network""" + try: + network_cidr_str = unicode(network_cidr) + except NameError as ex: + network_cidr_str = str(network_cidr) + try: + return IPv4Network(network_cidr_str)[1] + except ValueError as ex: + logging.error(network_cidr_str + " is not a valid network address") + raise + + +def filter_ipnet_hostmax(network_cidr): + """Return the last host IP address from given IP network""" + try: + network_cidr_str = unicode(network_cidr) + except NameError as ex: + network_cidr_str = str(network_cidr) + try: + return IPv4Network(network_cidr_str)[-2] + except ValueError as ex: + logging.error(network_cidr_str + " is not a valid network address") + raise + + +def filter_ipnet_netmask(network_cidr): + """Return the IP netmask from given IP network""" + try: + network_cidr_str = unicode(network_cidr) + except NameError as ex: + network_cidr_str = str(network_cidr) + try: + return IPv4Network(network_cidr_str).netmask + except ValueError as ex: + logging.error(network_cidr_str + " is not a valid network address") + raise + + +def filter_ipnet_contains_ip(network_cidr, ip_address): + """Check if an IP network cointains a given range""" + try: + network_cidr_str = unicode(network_cidr) + ip_address_str = unicode(ip_address) + except NameError as ex: + network_cidr_str = str(network_cidr) + ip_address_str = str(ip_address) + try: + return IPv4Address(ip_address_str) in IPv4Network(network_cidr_str) + except ValueError as ex: + logging.error(network_cidr_str + " is not a valid network address") + raise + + +def filter_ipnet_contains_iprange(network_cidr, range_start, range_end): + """Check if an IP network cointains a given range""" + try: + network_cidr_str = unicode(network_cidr) + range_start_str = unicode(range_start) + range_end_str = unicode(range_end) + except NameError as ex: + network_cidr_str = str(network_cidr) + range_start_str = str(range_start) + range_end_str = str(range_end) + try: + ipnet = IPv4Network(network_cidr_str) + return (IPv4Address(range_start_str) in ipnet + and IPv4Address(range_end_str) in ipnet) + except ValueError as ex: + logging.error(network_cidr_str + " is not a valid network address") + raise + + +def filter_ipnet_range_size(network_cidr, range_start, range_end): + """Get the size of an IP range between two IP addresses""" + try: + network_cidr_str = unicode(network_cidr) + range_start_str = unicode(range_start) + range_end_str = unicode(range_end) + except NameError as ex: + network_cidr_str = str(network_cidr) + range_start_str = str(range_start) + range_end_str = str(range_end) + try: + ipnet = IPv4Network(network_cidr_str) + ip1 = IPv4Address(range_start_str) + ip2 = IPv4Address(range_end_str) + + if ip1 in ipnet and ip2 in ipnet: + index1 = list(ipnet.hosts()).index(ip1) + index2 = list(ipnet.hosts()).index(ip2) + ip_range_size = index2 - index1 + 1 + return ip_range_size + else: + raise ValueError + except ValueError as ex: + logging.error(range_start_str + " and " + range_end_str + + " are not valid IP addresses for range inside " + + network_cidr_str) + raise + + +# This filter is too simple and does not take network mask into account. +# TODO Deprecate for filter_ipnet_hostaddr +def filter_ipaddr_index(base_address, index): + """Return IP address in given network at given index""" + try: + base_address_str = unicode(base_address) + except NameError as ex: + base_address_str = str(base_address) + return IPv4Address(base_address_str) + int(index) + + +# TODO deprecate for filter_ipnet_netmask +def filter_netmask(prefix): + """Get netmask from prefix length integer""" + try: + prefix_str = unicode(prefix) + except NameError as ex: + prefix_str = str(prefix) + return IPv4Network("1.0.0.0/"+prefix_str).netmask diff --git a/config/utils/generate_config.py b/config/utils/generate_config.py index cf558e28..93e839bd 100755 --- a/config/utils/generate_config.py +++ b/config/utils/generate_config.py @@ -1,85 +1,84 @@ #!/usr/bin/python ############################################################################## -# Copyright (c) 2017 OPNFV and others. +# Copyright (c) 2018 OPNFV and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -"""This module does blah blah.""" +"""Generate configuration from PDF/IDF and jinja2 installer template""" + import argparse -import ipaddress import logging -import os +from os.path import abspath, exists, isfile, split +from subprocess import CalledProcessError, check_output +import gen_config_lib import yaml from jinja2 import Environment, FileSystemLoader -from subprocess import CalledProcessError, check_output + + +LOADER = yaml.CSafeLoader if yaml.__with_libyaml__ else yaml.SafeLoader PARSER = argparse.ArgumentParser() PARSER.add_argument("--yaml", "-y", type=str, required=True) -PARSER.add_argument("--jinja2", "-j", type=str, required=True) +PARSER.add_argument("--jinja2", "-j", type=str, required=True, action='append') +PARSER.add_argument("--includesdir", "-i", action='append', default=['/']) +PARSER.add_argument("--batch", "-b", action='store_true') +PARSER.add_argument("--verbose", "-v", action='count') ARGS = PARSER.parse_args() -# Processor architecture vs DPKG architecture mapping -DPKG_ARCH_TABLE = { - 'aarch64': 'arm64', - 'x86_64': 'amd64', -} -ARCH_DPKG_TABLE = dict(zip(DPKG_ARCH_TABLE.values(), DPKG_ARCH_TABLE.keys())) +ARGS.jinja2 = [abspath(x) for x in ARGS.jinja2] -# Custom filter to allow simple IP address operations returning -# a new address from an upper or lower (negative) index -def ipaddr_index(base_address, index): - """Return IP address in given network at given index""" - try: - base_address_str = unicode(base_address) - #pylint: disable=unused-variable - except NameError as ex: - base_address_str = str(base_address) - return ipaddress.ip_address(base_address_str) + int(index) +logging.basicConfig() +LOGGER = logging.getLogger('generate_config') +if ARGS.verbose: + LOGGER.setLevel(logging.INFO) -# Custom filter to convert between processor architecture -# (as reported by $(uname -m)) and DPKG-style architecture -def dpkg_arch(arch, to_dpkg=True): - """Return DPKG-compatible from processor arch and vice-versa""" - if to_dpkg: - return DPKG_ARCH_TABLE[arch] - else: - return ARCH_DPKG_TABLE[arch] - -ENV = Environment(loader=FileSystemLoader(os.path.dirname(ARGS.jinja2))) -ENV.filters['ipaddr_index'] = ipaddr_index -ENV.filters['dpkg_arch'] = dpkg_arch +ENV = Environment( + loader=FileSystemLoader(ARGS.includesdir), + extensions=['jinja2.ext.do'] +) +gen_config_lib.load_custom_filters(ENV) # Run `eyaml decrypt` on the whole file, but only if PDF data is encrypted # Note: eyaml return code is 0 even if keys are not available try: - if 'ENC[PKCS7' in open(ARGS.yaml).read(): - DICT = yaml.safe_load(check_output(['eyaml', 'decrypt', - '-f', ARGS.yaml])) + if isfile(ARGS.yaml) and 'ENC[PKCS7' in open(ARGS.yaml).read(): + DICT = yaml.load(check_output(['eyaml', 'decrypt', + '-f', ARGS.yaml]), Loader=LOADER) except CalledProcessError as ex: - logging.error('eyaml decryption failed! Fallback to raw data.') + LOGGER.error('eyaml decryption failed! Fallback to raw data.') except OSError as ex: - logging.warn('eyaml not found, skipping decryption. Fallback to raw data.') + LOGGER.warn('eyaml not found, skipping decryption. Fallback to raw data.') try: DICT['details'] except (NameError, TypeError) as ex: with open(ARGS.yaml) as _: - DICT = yaml.safe_load(_) + DICT = yaml.load(_.read().replace('/', '__slash__'), Loader=LOADER) # If an installer descriptor file (IDF) exists, include it (temporary) -IDF_PATH = '/idf-'.join(os.path.split(ARGS.yaml)) -if os.path.exists(IDF_PATH): +IDF_PATH = '/idf-'.join(split(ARGS.yaml)) +if exists(IDF_PATH): with open(IDF_PATH) as _: - IDF = yaml.safe_load(_) + IDF = yaml.load(_, Loader=LOADER) DICT['idf'] = IDF['idf'] # Print dictionary generated from yaml (uncomment for debug) # print(DICT) -# Render template and print generated conf to console -TEMPLATE = ENV.get_template(os.path.basename(ARGS.jinja2)) - -#pylint: disable=superfluous-parens -print(TEMPLATE.render(conf=DICT)) +for _j2 in ARGS.jinja2: + TEMPLATE = ENV.get_template(_j2) + OUTPUT = TEMPLATE.render(conf=DICT).replace('__slash__', '/') + # Render template and write generated conf to file or stdout + if ARGS.batch: + if _j2.endswith('.j2'): + destination_file = _j2[:-3] # Trim '.j2' suffix + LOGGER.info('Parsing {}'.format(_j2)) + with open(destination_file, 'w') as _: + _.write(OUTPUT) + else: + LOGGER.warn('Skipping {}, name does not end in ".j2"'.format(_j2)) + else: + # pylint: disable=superfluous-parens + print(OUTPUT) diff --git a/config/utils/validate_schema.py b/config/utils/validate_schema.py index cb404554..1676e15d 100755 --- a/config/utils/validate_schema.py +++ b/config/utils/validate_schema.py @@ -11,16 +11,35 @@ import argparse import jsonschema import yaml + PARSER = argparse.ArgumentParser() PARSER.add_argument("--yaml", "-y", type=str, required=True) PARSER.add_argument("--schema", "-s", type=str, required=True) ARGS = PARSER.parse_args() +LOADER = yaml.CSafeLoader if yaml.__with_libyaml__ else yaml.SafeLoader with open(ARGS.yaml) as _: - _DICT = yaml.safe_load(_) + _DICT = yaml.load(_, Loader=LOADER) with open(ARGS.schema) as _: - _SCHEMA = yaml.safe_load(_) + _SCHEMA = yaml.load(_, Loader=LOADER) + + +def schema_version_workaround(node): + """Traverse nested dictionaries and handle 'version' key where found.""" + if 'version' in node: + node['version_{0}'.format(node['version'])] = True + for item in node.items(): + if type(item) is dict: + schema_version_workaround(item) + +# Draft 4 (latest supported by py-jsonschema) does not support value-based +# decisions properly, see related github issue: +# https://github.com/json-schema-org/json-schema-spec/issues/64 +# Workaround: build 'version_x.y: true' on the fly based on 'version: x.y' +schema_version_workaround(_DICT) +if 'idf' in _DICT: + schema_version_workaround(_DICT['idf']) _VALIDATOR = jsonschema.Draft4Validator(_SCHEMA) for error in _VALIDATOR.iter_errors(_DICT): diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 00000000..f0c2a787 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,8 @@ +############################################################################## +# Copyright (c) 2018 Linux Foundation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +from docs_conf.conf import * # noqa: F401,F403 diff --git a/docs/conf.yaml b/docs/conf.yaml new file mode 100644 index 00000000..b3782ee9 --- /dev/null +++ b/docs/conf.yaml @@ -0,0 +1,10 @@ +############################################################################## +# Copyright (c) 2018 Linux Foundation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +project_cfg: opnfv +project: PHAROS diff --git a/docs/release/scenario-lifecycle/From OS-BASIC to NOSDN-FDIO.png b/docs/release/scenario-lifecycle/From OS-BASIC to NOSDN-FDIO.png Binary files differnew file mode 100644 index 00000000..8ac99508 --- /dev/null +++ b/docs/release/scenario-lifecycle/From OS-BASIC to NOSDN-FDIO.png diff --git a/docs/release/scenario-lifecycle/From OS-BASIC to NOSDN-OVS.png b/docs/release/scenario-lifecycle/From OS-BASIC to NOSDN-OVS.png Binary files differnew file mode 100644 index 00000000..15f3893d --- /dev/null +++ b/docs/release/scenario-lifecycle/From OS-BASIC to NOSDN-OVS.png diff --git a/docs/release/scenario-lifecycle/ODL Generic Scenarios Evolution.png b/docs/release/scenario-lifecycle/ODL Generic Scenarios Evolution.png Binary files differnew file mode 100644 index 00000000..6f2e0a44 --- /dev/null +++ b/docs/release/scenario-lifecycle/ODL Generic Scenarios Evolution.png diff --git a/docs/release/scenario-lifecycle/create-sdf.png b/docs/release/scenario-lifecycle/create-sdf.png Binary files differnew file mode 100644 index 00000000..c8a44ba8 --- /dev/null +++ b/docs/release/scenario-lifecycle/create-sdf.png diff --git a/docs/release/scenario-lifecycle/creating-scenarios.rst b/docs/release/scenario-lifecycle/creating-scenarios.rst new file mode 100644 index 00000000..dbff9c18 --- /dev/null +++ b/docs/release/scenario-lifecycle/creating-scenarios.rst @@ -0,0 +1,104 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 OPNFV Ulrich Kleber (Huawei) + + +Creating Scenarios +-------------------- + +General +^^^^^^^^^ + +A new scenario needs to be created, when a new combination of upstream +components or features shall be supported, that cannot be provided with the +existing scenarios in parallel to their existing features. + +Typically new scenarios are created as children of existing scenarios. +They start as specific scenario and as they mature, they either merge back +their features to the parent or promote to a generic scenario. + +Scenario Owners +^^^^^^^^^^^^^^^^ + +Each scenario must have an "owner". Scenario owners have the following responsibilities: + +* The scenario owner is responsible for the contents and usage of the scenario. +* He shall define the contents for the scenario deployment: + + * The components and their versions that need to be deployed + * Options for the deployment of such components, e.g. settings, optional features, .. + * Which installers to use + * Deployment options (HA, NOHA, hardware types, ..) + +* He shall define the usage of the scenario in the development process: + + * Initiate integration to CI + * Define which testcases to run + * Applies that the scenario joins a release + +* The owner maintains the Scenario Descriptor File (SDF) +* Drives for the scenario be supported by more installers + +The scenario owner of a specific scenario typically comes from the feature project +that develops the features introduced by the scenario. + +The scenario owner of a generic scenario will need to drive more integration tasks than +feature development. Thus he typically will come from a project with a broader scope +than a single feature, e.g. a testing project. +The scenario owner of a generic scenario needs to cover issues of all installers, so +only in exceptional cases he will come from an installer project. + +Creating Generic Scenarios +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Generic scenarios provide stable and mature deployments of an OPNFV release. Therefore +it is important to have generic scenarios in place that provide the main capabilities +needed for NFV environments. On the other hand the number of generic scenarios needs +to be limited because of resources. + +* Creation of a new generic scenario needs TSC consensus. +* Typically the generic scenario is created by promoting an existing specific + scenario. Thus the only the additional information needs to be provided. +* The scenario owner needs to verify that the scenario fulfills the above requirements. +* Since specific scenarios typically are owned by the project who have initiated it, + and generic scenarios provide a much broader set of features, in many cases a + change of owner is appropriate. In most cases it will be appropriate to assign + a testing expert as scenario owner. + +Creating Specific Scenarios +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +As already stated, typically specific scenarios are created as children of existing +scenarios. The parent can be a generic or a specific scenario. + +Creation of specific scenarios shall be very easy and can be done any time. However, +support might be low priority during a final release preparation, e.g. after a MS6. + +* The PTL of the project developing the feature(s) or integrating a component etc can + request the scenario (tbd from whom: CI or release manager, no need for TSC) +* The PTL shall provide some justification why a new scenario is needed. + It will be approptiate to discuss that justification in the weekly technical + discussion meeting. +* The PTL should have prepared that by finding support from one of the installers. +* The PTL should explain from which "parent scenario" (see below) the work will start, + and what are the planned additions. +* The PTL shall assign a unique name. Naming rules will be set by TSC. +* The PTL shall provide some time schedule plans when the scenario wants to join + a release, when he expects the scenario merge to other scenarios, and he expects + the features may be made available in generic scenarios. + A scenario can join a release at the MS0 after its creation. +* The PTL should explain the infrastructure requirements and clarify that sufficient + resources are available for the scenario. +* The PTL shall assign a scenario owner. +* The scenario owner shall maintain the scenario descriptor file according to the + template. +* The scenario owner shall drive the necessary discussions with installers and testing + teams to get their support. +* In case the scenario needs new keywords in the SDF, the scenario owner shall discuss + those with the installer teams and CI. +* The scenario owner shall initiate the scenario be integrated in CI and + participate in releases. +* When the scenario joins a release this needs to be done in time for the relevant + milestones. + + diff --git a/docs/release/scenario-lifecycle/current-status.rst b/docs/release/scenario-lifecycle/current-status.rst new file mode 100644 index 00000000..c8da13a5 --- /dev/null +++ b/docs/release/scenario-lifecycle/current-status.rst @@ -0,0 +1,75 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 OPNFV Ulrich Kleber (Huawei) + + +Current Status +--------------- + +This chapter summarizes the scenario analysis to provide some background. +It also defines the way to introduce the scenario processes. + +Arno +^^^^^^^^ + +In Arno release, the scenario concept was not created yet. +Looking back, we can say we had one scenario with OpenStack, ODL and KVM, +that could be deployed in two ways, by the two installers available in Arno. + +Brahmaputra +^^^^^^^^^^^^^^^^ + +In Brahmaputra, we added options for SDN (ONOS, OCL) and some optional +features (sfc, sdnvpn, kvm, l3 enabled ODL). +Thus we had 9 scenarios, some of them to be deployed with 2 installers, +that planned to participate in the release. Not all of them succeeded. + +Colorado +^^^^^^^^^^^^ + +In Colorado more components and features were added to a total of 17 +combinations of components and features. Some were supported by one +of the four installers, others by multiple installers. In addition HA +and NOHA options were defined. +This lead to 28 combinations that planned to participate. + +Danube +^^^^^^^^^^ + +In Danube the number of combinations of components and features increased +to 24, but since installer support increased and more scenarios planned +to provide HA and NOHA options, the number of combinations was 54. + +In addition to that some scenarios were defined later in during development +and some scenarios worked on ARM support. + +This created the need to better understand relationships and +incompatibilities of the scenarios to drive for a manageable process +for scenarios. + +As a result the relationship between the scenarios can be +visualized by a scenario tree. + +.. figure:: scenario-tree-danube.png + +The process for generic and specific scenarios is not in place for the +Danube release yet. But the different branches of the scenario tree +provide the candidates to define generic scenario during the timeframe +of the next release. + +Euphrates +^^^^^^^^^^ + +tbd: statistics on Euphrates Scenarios + +During Euphrates timeframe, dynamic POD allocation is introduced in CI. +This is a prerequisite to make use of the SDF in the CI pipeline. +Therefore in this timeframe, scenario processes are introduced only in +a documentation way and as support for release management. + +Also the definition of generic scenarios can be done. + + + + + diff --git a/docs/release/scenario-lifecycle/deployment-options.rst b/docs/release/scenario-lifecycle/deployment-options.rst new file mode 100644 index 00000000..2c0a3429 --- /dev/null +++ b/docs/release/scenario-lifecycle/deployment-options.rst @@ -0,0 +1,128 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 OPNFV Ulrich Kleber (Huawei) + + +Deployment Options +------------------- + +What are deployment options? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. Editors note: Some installers call it settings. Prefer options, because it allows +.. cases with multiple options. + +During the analysis of scenario definitions in Colorado and Danube releases, it became +visible, that HA and NOHA deployment of otherwise identical scenarios shouldn't be +called different scenarios. + +This understanding leads to the definition of another kind of attributes +in scenario definitions. Many scenarios can be deployed in different ways: + +* **HA** configuration of OpenStack modules (that is redundancy using multiple + controllers running OpenStack services) versus NOHA with only a single controller + running a single instance of each OpenStack service +* Some scenarios can be deployed on intel and on ARM **hardware**. +* We can see the **installation tools** in the same way. Independent of the installer + that was used for the deployment of a scenario, the same functionality will be + provided and we can run the same testcases. + +Please note that a scenario can support multiple deployment options. And a scenario +definition must specify at least one option of each type. + +In future there will be more deployment options, e.g. redundancy models or other +clustering options of SDN controllers, or upscaling compute or control nodes. + +CI Pipeline needs to test all configuration options of a scenario. + +* Development cycles (verify-jobs, daily, weekly) don‘t need to run all + options each time +* Release testing must cover all those combinations of configuration options that + will be part of the release. Typically the HA configurations are released on + bare metal with the allowed hardware options and all installers that can deploy + those. Release of an NOHA option should be an exception, e.g. for a scenarios + that are not mature yet. +* Virtual deployments are not mentioned here. All scenarios should allow virtual + deployment where applicable. + But in release testing, bare metal deployment will be necessary. + CI will use virtual deployments as much as appropriate for resource reasons. + + +Deployment options or new scenarios +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In general we can say that a different scenario is needed when the set of components +is changed (or in some cases a general deploy-time configuration of a component). If +we deploy the same components in a different way, we can define this via deployment +options. + +**Examples** + +* Deploying different SDN controller or data plane (OVS/FD.IO) requires different + scenario. +* HA/NOHA will deploy the same components on different number of nodes, so it is a + deployment option. +* Different hardware types should not lead to new scenarios. Typically the same + scenario can be deployed on multiple hardware. + + +HA and NOHA +^^^^^^^^^^^^^ + +Both, HA and NOHA options of a scenario are important. + +* HA deployment is important to be released in major OPNFV releases, because + telco deployments typically have strong requirements on availability. +* NOHA deployments require less resources and are sufficient for many use cases. + For instance sandbox testing can be done easier and also automatic verification + in the CI pipeline can make use of it. +* Generic scenarios shall support the HA and NOHA option. +* Specific scenarios can focus on the NOHA option if their features are independent + from the controller redundancy. But before merging with generic scenarios, they + should provide both options. + + +Hardware types +^^^^^^^^^^^^^^^^^ + +In its first releases, OPNFV could be deployed on Intel hardware only. Later, support +for ARM hardware was added and now 5 scenarios can already be deployed on both. + + +Virtual deployment +^^^^^^^^^^^^^^^^^^^^^^ + +Many, but not all scenarios can be deployed on virtual PODs. Therefore the scenario +definition shall specify whether virtual deployment is possible. + +Typically a virtual HA deployment shall look very much the same as a bare-metal HA +deployment, that is the distribution of modules on nodes/VMs is similar. But there +might be cases where there are differences. Thus, the scenario specification needs +to provide the data for each separately. + + +Deployment tools +^^^^^^^^^^^^^^^^^^^ + +Deployment tools (installers) are in a very similar relation to the scenarios. +Each scenario can be deployed by one or more installer. Thus we can specify the +installers for a scenario as a deployment option. + +However, the installers need additional detailed information for the deployment. +Every installer may not support the same HA, hardware, virtualization options, +or same distribution of modules. Each deployment may look slightly different +per installer. + +The scenario definition needs to provide such information in a way it can be easily +consumed by the installers. + + + +Other deployment options +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This set of deployment options is based on what is required by Danube scenarios. +Future releases will most likely introduce additional deployment options. + + + diff --git a/docs/release/scenario-lifecycle/feature-compatibility-nosdn.png b/docs/release/scenario-lifecycle/feature-compatibility-nosdn.png Binary files differnew file mode 100644 index 00000000..09520aa1 --- /dev/null +++ b/docs/release/scenario-lifecycle/feature-compatibility-nosdn.png diff --git a/docs/release/scenario-lifecycle/feature-compatibility-odl.png b/docs/release/scenario-lifecycle/feature-compatibility-odl.png Binary files differnew file mode 100644 index 00000000..600082a6 --- /dev/null +++ b/docs/release/scenario-lifecycle/feature-compatibility-odl.png diff --git a/docs/release/scenario-lifecycle/generic-scenarios.rst b/docs/release/scenario-lifecycle/generic-scenarios.rst new file mode 100644 index 00000000..f159c0c9 --- /dev/null +++ b/docs/release/scenario-lifecycle/generic-scenarios.rst @@ -0,0 +1,53 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 OPNFV Ulrich Kleber (Huawei) + + +Generic Scenarios +------------------ + +Generic scenarios provide a stable environment for users who want to base their +products on them. + +* Generic scenarios provide a basic combination of upstream components together + with the superset of possible mature features that can be deployed on them. +* Generic scenarios should be supported by all installers. +* All generic scenarios in a release should have the same common major versions + of the included upstream components. + These upstream versions can then be seen as the upstream versions for the + release. E.g. that way we can say: “OPNFV xxx contains OpenStack abc, + ODL def, ONOS ghi, OVS jkl“. + But most installers cannot directly reference any + upstream version. This may lead to minor differences. + Nevertheless features and test cases require all installers using the same + major versions. +* Generic scenarios should use stable sources + and lock the versions before the release by either pointing to a tag or sha1. + According to the LF badging program it should be possible to reproduce + the release from source again. + Thus the upstream repos should be in safe locations. + Also only tagged source versions should be used for the release, so the + release can be reproduced identically for different purposes such as + reproducing a baug reported by users and issuing the fix appropriately, + even after the upstream project has applied patches. + .. Editors note: There is discussion ongoing in INFRA and SEC working groups how + .. to realize this. Thus the description is still a bit vague. Details will be + .. added later either here or in some INFRA document. +* Generic scenarios should be stable and mature. Therefore they will be tested more + thoroughly and run special release testing so a high level of stability can be + provided. +* Generic scenarios will live through many OPNFV releases. +* More resources will be allocated to maintaining generic scenarios and they will + have priority for CI resources. + .. Editors note: Discussion ongoing in INFRA about toolchain issues. + +Note: in some cases it might be difficult for an installer to support all generic +scenarios immediately. In this case an exception can be defined, but the installer +has to provide a plan how to achieve support for all generic scenarios. + +Note: in some cases, upstream projects don‘t have proper CI process with +tagged stable versions. Also some installers‘ way of working doesn‘t allow +selecting the repo and tag. Thus a stepwise approach will be necessary to +fulfill this requirement. + + diff --git a/docs/release/scenario-lifecycle/index.rst b/docs/release/scenario-lifecycle/index.rst new file mode 100644 index 00000000..c1a9a528 --- /dev/null +++ b/docs/release/scenario-lifecycle/index.rst @@ -0,0 +1,24 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 OPNFV Ulrich Kleber (Huawei) + +********************** +Scenario Lifecycle +********************** + +Contents: + +.. toctree:: + :numbered: + :maxdepth: 4 + + scenario-overview.rst + generic-scenarios.rst + specific-scenarios.rst + parent-child-relations.rst + creating-scenarios.rst + deployment-options.rst + mano-scenarios.rst + current-status.rst + scenario-descriptor-files.rst + workflows.rst diff --git a/docs/release/scenario-lifecycle/mano-scenarios.rst b/docs/release/scenario-lifecycle/mano-scenarios.rst new file mode 100644 index 00000000..0eee1431 --- /dev/null +++ b/docs/release/scenario-lifecycle/mano-scenarios.rst @@ -0,0 +1,31 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 OPNFV Ulrich Kleber (Huawei) + + +MANO Scenarios +--------------- + +Since OPNFV organizes all deployments using scenarios, also MANO components need +to be covered by scenarios. + +On the other side all NFVI/VIM level scenarios need to be orchestrated using a +set of components from the NFVO and VNFM layer. + +The idea here is therefore to specify for a MANO scenario: + +* The MANO components to deploy +* A list of supported NFVI/VIM level scenarios that can be orchestrated + using this MANO scenario. + +The MANO test cases will define the VNFs to use. + +MANO scenarios will have more work to do if they require new nodes to be deployed on. +They should include this aspect in their resource planning/requests and contact +Infra/Pharos in case that a change of the Pharos spec is needed and new PODs need +to be made available based on the amended spec. + +More details need to be investigated as we gain experience with the MANO scenarios + + + diff --git a/docs/release/scenario-lifecycle/parent-child-relations.rst b/docs/release/scenario-lifecycle/parent-child-relations.rst new file mode 100644 index 00000000..ca156190 --- /dev/null +++ b/docs/release/scenario-lifecycle/parent-child-relations.rst @@ -0,0 +1,62 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 OPNFV Ulrich Kleber (Huawei) + + +Parent - Child Relations +------------------------- + +In many cases, development adds a feature to an existing scenario by adding additional +components. This is called creating a child scenario from a parent. + +* Parent scenarios typically are more stable than children. +* Children should plan to merge their feature back to the parent. +* Merge back will often add components to the parent. + +.. figure:: parent-child.png + +* Child scenarios can be part of releases. +* Child scenarios should merge back to their parent after 2 releases. +* If a child scenario lives through several releases, it might be desirable + to “rebase/cherrypick” a child scenario to follow changes in the parent scenario. +* Child scenarios typically support a smaller number of deployment options than + their parent + +Child scenarios are specific scenarios. Parent scenarios can be generic or specific +scenarios. + +Child scenarios can be created any time. If they want to join a release, they have +to be created before MS0 of that release. + + +Siblings +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In some cases it could make more sense to create a sibling rather than a child +(e.g. if expected that merging back to parent will be difficult). +In other words, the content of a child scenario will be incompatible with content +of the parent scenario. +In that case, the child scenario should rather become a new branch instead of +merging back to the parent. + +.. figure:: sibling.png + +Typically the sibling uses alternate components/solutions than the parent – in +long term it might evolve into a new generic scenario, that is a new branch +in the scenario tree. + +Creation of the sibling shall not be gated. It should be covered in the scope of +an approved project, so there cannot be too big surprises. + +But at a certain time the new scenario will want to change its status from a +specific scenario to a generic scenario. This move will need TSC approval. +For the application, the scenario owner shall demonstrate that the scenario +fulfills the requirements of a generic scenario (see later). + +Examples: SDN controller options, Container technologies, data plane solutions, +MANO solutions. + +Please note that from time to time, the TSC will need to review the +set of generic scenarios and "branches" in the scenario tree. + + diff --git a/docs/release/scenario-lifecycle/parent-child.png b/docs/release/scenario-lifecycle/parent-child.png Binary files differnew file mode 100644 index 00000000..2f711496 --- /dev/null +++ b/docs/release/scenario-lifecycle/parent-child.png diff --git a/docs/release/scenario-lifecycle/pdf-and-sdf.png b/docs/release/scenario-lifecycle/pdf-and-sdf.png Binary files differnew file mode 100644 index 00000000..729c5a44 --- /dev/null +++ b/docs/release/scenario-lifecycle/pdf-and-sdf.png diff --git a/docs/release/scenario-lifecycle/scenario-descriptor-files.rst b/docs/release/scenario-lifecycle/scenario-descriptor-files.rst new file mode 100644 index 00000000..b6c44f75 --- /dev/null +++ b/docs/release/scenario-lifecycle/scenario-descriptor-files.rst @@ -0,0 +1,228 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 OPNFV Ulrich Kleber (Huawei) + + +Scenario Descriptor Files +---------------------------- + +What are Scenario Descriptor Files? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Every scenario is described in its own descriptor file. +The scenario descriptor file will be used by several parties: + +* Installer tools will read from it the list of components to be installed + and the configuration (e.g. deployment options and necessary details) to use. +* The dynamic CI process will read from it the prerequisites of the scenario + to select the resource that has the needed capabilities for the deployment. + It will also select the installer + from the list of supported installers and the other deployment options as + supported in their combination. + + The dynamic CI process will provide the installers with the deployment option + to use for a particular deployment. + +* The scenario owner needs to provide the descriptor file. + + When compiling it the scenario owner typically needs to work together with + the installers, so the installers will support the required components and + options. +* The testing framework can read from the scenario descriptor file necessary + information to know which features can be tested on the scenario. +* The scenario descriptor file will also contain some maintenance information + + +Structure of the file +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The scenario descriptor file is a yaml file. The syntax will allow to specify +additional descriptor files, to make it better readable or structure common +configurations across multiple scenarios. + +The file has following main sections: + +* metadata (owner, history, description) +* list of components (names, versions, submodules) +* deployment options (HA/NOHA, hardware&virtualization, installers, including + possible combinations and necessary details) +* other prerequisites (e.g. memory requirement more than pharos spec) +* list of features to be tested + +More information to be provided in next version of this document. The file will +be defined based on the installer-specific files for scenario specification +used by the 4 installers in Danube release. Thus it will be made sure that the +information needed by the installers will be covered. + +All scenario files will be stored in a central repo, e.g. Octopus. There will +also be a commented template to help create scenario descriptor files. + + +Metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In Danube timeframe only Fuel installer has some metadata in the descriptor file. +The new template contains: + +* Unique name + + This is a free name, there is a recommendation to take fish for names, matching + OPNFV release naming with rivers. + +* A free text title + + This should be a short descriptive text telling the main purpose + +* A version number for the descriptor file + + Three digits, separated with dots, as used by Fuel in Danube + +* Creation date +* Comment + + The file should contain a clear description of the purpose of the scenario, + including the main benefits and major features. + If applicable, the parent scenario should be mentioned. + +* First OPNFV version to use the scenario +* Author/Owner + +* A list of additional contact persons, e.g. from installers or major components + +Components +^^^^^^^^^^^^^^^^ + +In this section all components are listed together with their version. +For some components in addtion submodules can be listed. + +More details will be added. + + +Deployment options +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This section will list the supported deployment options. In each category at least +one option must be supported. + +* hardware (cpu) types (intel or ARM) +* Virtualization (bare-metal or vPOD) +* availability (HA or NOHA) + + This subsection needs to specify also what does an HA deployment need, e.g.: + +:: + + availability: + + - type: HA + nodes: + - name: host1 + roles: + - openstack-controller + - odl + - ceph-adm + - ceph-mon + - name: host2 + roles: + - openstack-controller + - odl + - ceph-adm + - ceph-mon + - name: host3 + roles: + - openstack-controller + - odl + - ceph-adm + - ceph-mon + - name: host4 + - openstack-compute + - ceph-osd + - name: host5 + - openstack-compute + - ceph-osd + - type: NOHA + hosts: + - name: host1 + roles: + - openstack-controller + - odl + - ceph-adm + - ceph-mon + - name: host2 + - openstack-compute + - ceph-osd + - name: host3 + - openstack-compute + - ceph-osd + + + +* deployment tool (apex, compass, fuel, daisy, joid) + + In the section for each deployment tool, the combinations of the first three + options have to be listed, e.g.: + +:: + + deployment-tools: + + - type: fuel + cpu: intel + pod: baremetal + availability: HA + - type: fuel + cpu: intel + pod: virtual + availability: HA + - type: fuel + cpu: intel + pod: virtual + availability: NOHA + +Please note that this allows easy definition of other availability options +including scaling and redundant configuration of SDN controllers. + + +Prerequisites +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This section will list additional prerequisites. Currently there is only +one case where a scenario has additional prerequisites to the Pharos spec. +E.g. a component could requires more RAM on the nodes than defined in +Pharos spec. +In general it should be preferred to issue such requirements to pharos +using the pharos change request process, but in some cases in might be +better to specify additional prerequisites. + +Another use case for these prerequisites will be usage of specilized +hardware, e.g. for acceleration. This needs further study. + +The section can be empty or omitted. + + +Testcases +^^^^^^^^^^^^^^^^ + +This section will provide information for functest and yardstick to decide +on the proper test cases for the scenario. + +More details will be added. + + +Shared settings +^^^^^^^^^^^^^^^^ + +This descriptor file might get quite long and complex. Also some of the settings +will be shared between several scenarios, e.g. a long OpenStack module list. + +Therefore it shall be possible to reference another file like a macro. +In that case all the file content is included in that place, e.g.: + +:: + + availability: + + - type: HA + file: odl-ha-configuration.yaml + + diff --git a/docs/release/scenario-lifecycle/scenario-overview.rst b/docs/release/scenario-lifecycle/scenario-overview.rst new file mode 100644 index 00000000..4a7ff7a0 --- /dev/null +++ b/docs/release/scenario-lifecycle/scenario-overview.rst @@ -0,0 +1,166 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 OPNFV Ulrich Kleber (Huawei) + + +.. Scenario Lifecycle +.. ========================================== + +Note: This document is still work in progress. + +Overview +------------- + +Problem Statement: +^^^^^^^^^^^^^^^^^^^ + +OPNFV provides the NFV reference platform in different variants, where +each variant is called a "scenario". + +OPNFV introduces scenarios in order to provide a way to deploy the stack +using different combinations of upstream components, or to provide +different sets of pre-defined configuration options for these +components. + +In some cases a scenario is introduced in order to provide isolation of +a specific development effort from other ongoing development efforts, +similar to the purpose of a branch in a code repository. + +A certain amount of effort and resources is required in order to include +a scenario in a release. The number of scenarios has increased over +time, so it is necessary to identify ways to manage the number of +scenarios and to avoid that their number grows infinitely. To enable +this, we have to clearly define how to handle the lifecycle of +scenarios, i.e. how to create, how to terminate, etc. + + +Scenario types: +^^^^^^^^^^^^^^^^^^^ +Some OPNFV scenarios have an experimental nature, since they introduce +new technologies or features that are not yet mature or well integrated +enough to provide a stable release. Nevertheless there also needs to be +a way to provide the user with the opportunity to try these new features +in an OPNFV release context. + +Other scenarios are used to provide stable environments for users +desiring a certain combination of upstream components or interested in +particular capabilities or use cases. + +The new OPNFV scenario lifecycle process proposed herein will support +this by defining two types of scenarios: + +* **Generic scenarios** cover a stable set of common features provided +by different components and target long-term usage and maintenance of +the scenario. Only stable versions of upstream components are allowed to +be deployed in a generic scenario. Across all generic scenarios in a +given OPNFV release, the same version of a given upstream component +should be deployed. Creation of generic scenarios and promotion of +specific to generic scenario requires TSC approval, see section 5. +Generic scenarios will get priority over specific scenarios in terms of +maintenance effort and CI resources. + +* **Specific scenarios** are needed during development to introduce new +upstream components or new features. They are typically derived from a +generic scenario and are intended to bring their features back into the +parent generic scenario once they are mature enough. It is also possible +that multiple specific scenarios are merged before bringing them back to +the parent scenario, for example in order to test and develop the +integration of two specific features in isolation. Specific scenarios +can consume unreleased upstream versions or apply midstream patches. +Creation of specific scenarios is not gated, but if a project intends to +release a specific scenario, it has to indicate that in its release plan +at milestone MS1. The scenario itself can be created at any time, by +means of a simple request by a PTL to the release manager. + +OPNFV scenarios are deployed using one of the OPNFV installer tools. +Deploying a scenario will normally be supported by multiple installers. +The capabilities provided by the resulting deployments should be +identical. The set of tests to run and their results should be the same, +independent of the installer that had been used. Performance or other +behavioral aspects outside the scope of existing OPNFV tests could be +different. + + +Parent-child and sibling relations: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When a developer decides to define a new scenario, he typically will +take one of the existing scenarios and do some changes, such as: + +* add additional components +* change a deploy-time configuration +* use a component in a more experimental version or with midstream +patches applied + +In this case the already existing scenario is called a "parent" and the +new scenario would be a "child". + +Typically parent scenarios are generic scenarios, but it is possible to +derive from specific scenarios as well. it is expected that the child +scenario develops its additions over some time up to a sufficient +maturity, and then merges back to the parent. This way a continuous +evolution of the generic scenarios as well as a manageable overall +number of scenairos is ensured. + +In some cases a child scenario will diverge from its parent in a way +that cannot easily be combined with the parent. Therefore, is is also +possible to "promote" a scenario from specific to generic. If this is +foreseeable upfront, the specific scenario can also be derived as a +sibling rather that child. + +Promoting a scenario from specific to generic or creating a new generic +scenario requires TSC approval. This document defines a process for +this, see section 5. + + +Scenario deployment options: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Many OPNFV scenarios can be deployed in different variants that do not +justify creation of separate scenarios. An example would be HA (high +availability) or non-HA configuration of otherwise identical scenarios. +HA configurations deploy some components according to a redundancy +model. Deployment options will also be used if the same scenario can be +deployed on multiple types of hardware, i.e. Intel and ARM. + +In these cases multiple deployment options are defined for the same +scenario. The set of distinguishable deployment option types (e.g. +redundancy, processor architecture, etc.) will be pre-determined and +each scenario will have to define at least one option for each option +type. + +It is emphasized that virtual deployments vs. bare-metal deployments are +intentionally not considered as deployment options. This should be a +transparent feature of the installer based on the same scenario +definition. + +For generic scenarios, there are certain expectations on the set of +supported deployment options, e.g. a generic scenario should support at +least an HA deployment and preferably both HA and non-HA. + + +Scenario descriptor file: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Every scenario will be described in a scenario descriptor yaml file. +This file shall contain all the necessary information for different users, such +as the installers (which components to deploy etc.), +the ci process (resource requirements in order to identify the right pod, machines, etc.). + +The scenario descriptor file will also document which installer +can be used for a scenario and how the CI process can trigger automatic deployment +for a scenario via one of the supported installers. + + +MANO scenarios: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In early OPNFV releases, scenarios covered components of the infrastructure, +that is NFVI and VIM. +With the introduction of MANO, an additional dimension for scenarios is needed. +The same MANO components need to be used together with each of the infrastructure +scenarios. Thus MANO scenarios will define the MANO components and a list of +infrastructure scenarios to work with. Please note that MANO scenarios follow +the same lifecycle and rules for generic and specific scenarios like the +infrastructure scenarios. + diff --git a/docs/release/scenario-lifecycle/scenario-tree+idea.png b/docs/release/scenario-lifecycle/scenario-tree+idea.png Binary files differnew file mode 100644 index 00000000..b6d4d8ac --- /dev/null +++ b/docs/release/scenario-lifecycle/scenario-tree+idea.png diff --git a/docs/release/scenario-lifecycle/scenario-tree-danube.png b/docs/release/scenario-lifecycle/scenario-tree-danube.png Binary files differnew file mode 100644 index 00000000..54c111e1 --- /dev/null +++ b/docs/release/scenario-lifecycle/scenario-tree-danube.png diff --git a/docs/release/scenario-lifecycle/scenario-tree.png b/docs/release/scenario-lifecycle/scenario-tree.png Binary files differnew file mode 100644 index 00000000..619b5a34 --- /dev/null +++ b/docs/release/scenario-lifecycle/scenario-tree.png diff --git a/docs/release/scenario-lifecycle/sibling.png b/docs/release/scenario-lifecycle/sibling.png Binary files differnew file mode 100644 index 00000000..82d48052 --- /dev/null +++ b/docs/release/scenario-lifecycle/sibling.png diff --git a/docs/release/scenario-lifecycle/specific-scenarios.rst b/docs/release/scenario-lifecycle/specific-scenarios.rst new file mode 100644 index 00000000..5f426e7d --- /dev/null +++ b/docs/release/scenario-lifecycle/specific-scenarios.rst @@ -0,0 +1,34 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 OPNFV Ulrich Kleber (Huawei) + + +Specific Scenarios +------------------ + +Specific scenarios are used for OPNFV development and help to isolate a path of development. + +* Specific scenarios typically focus on a feature or topic. +* Specific scenarios allow to advance in development for their main feature without + de-stabilizing other features. +* Specific scenarios provide additional flexibility in their handling to allow the + development be agile. +* Specific scenarios can use new version of their main upstream component or even + apply midstream patches during OPNFV deployment, i.e. the deployable artifact + is created via cross community CI or even only in OPNFV and not upstream. +* Specific scenarios should have a limited life time. After a few releases, the feature + development should have matured and the feature made available different configurations + if possible. Typically the scenario then should be merged with other scenarios, best + with generic scenarios. +* Normally specific scenarios will be released within the major OPNFV releases. But + they don't need to fulfill maturity requirements (stable upstream versions and repos, + stability testing), and can deviate in the used upstream versions. +* In exceptional cases we might release a specific scenario independently, in case there + is a need. Thus specific scenarios provide a way to a more DevOps-like process. +* Specific scenarios will likely have a shorter support period after release as they are of + interest to a smaller user community vs generic scenarios. +* They will be granted less CI resources than generic scenarios, e.g. for periodic + CI jobs. +* We may need to prioritize resources post-release for maintenance / regression testing. + + diff --git a/docs/release/scenario-lifecycle/workflows.rst b/docs/release/scenario-lifecycle/workflows.rst new file mode 100644 index 00000000..c07b0f70 --- /dev/null +++ b/docs/release/scenario-lifecycle/workflows.rst @@ -0,0 +1,70 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 OPNFV Ulrich Kleber (Huawei) + + +Workflows +---------- + +Summary +^^^^^^^^ + +The general principle can be summarized by the following diagram: + +.. figure:: pdf-and-sdf.png + +Workflows for Scenario Owners +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The scenario owner creates the descriptor file based on the template. + +.. figure:: create-sdf.png + +Create new scenario from scratch ++++++++++++++++++++++++++++++++++++++++++++++++++ + +This workflow will be exceptional. +Most scenarios can easier start as children of an existing scenario; +thus the author (scenario owner) can derive the SDF from the parent. +But scenarios introducing new technologies affecting the whole architecture, +e.g.containers, or higher level scenarios (e.g.MANO and Multisite which +reference existing scenarios) can start without a parent. + +The following steps need to be done: + + #. (Project team) Define set of components that need to be deployed + #. (Project) Find installers that can deploy the components + #. (Project&installer&CI) Agree on new keywords in SDF (e.g. component, feature name) + #. (Project) Assign owner + #. (Owner) Edit SDF, submit to octopus repo + #. (Owner) register scenario to participate in release as appropriate + #. (Owner&CI-team) Adapt jenkins triggers, so new scenario can be scheduled in valid installer/POD/Options combination(s). + #. (Installer-team) test deployment of components + #. (Project-team) Define test cases; register in test db + +Create child scenario by adding feature to existing scenario ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Add additional installer to a specific scenario +++++++++++++++++++++++++++++++++++++++++++++++++ + +Add additional hardware or availability option to a scenario +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Merge child scenario back to parent +++++++++++++++++++++++++++++++++++++ + +Promote specific scenario to generic scenario +++++++++++++++++++++++++++++++++++++++++++++++ + +Introduce SDF for existing Danube/Euphrates scenarios +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + +Workflows for Installers +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Workflows for CI Tools +^^^^^^^^^^^^^^^^^^^^^^^^^^ + + diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 00000000..00450768 --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,9 @@ +############################################################################## +# Copyright (c) 2018 Linux Foundation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +lfdocs-conf +sphinx_opnfv_theme diff --git a/labs/arm/idf-pod10.yaml b/labs/arm/idf-pod10.yaml new file mode 100644 index 00000000..39aac781 --- /dev/null +++ b/labs/arm/idf-pod10.yaml @@ -0,0 +1,148 @@ +############################################################################## +# Copyright (c) 2018 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ARM POD 10 installer descriptor file ### + +idf: + version: 0.1 + # NOTE: Compass & Joid are not supported on this POD since they require at + # least 3 network ports on all nodes. + installer: ['fuel'] + net_config: + oob: + ip-range: 10.0.21.2-10.0.21.7 + vlan: native + mask: 24 + admin: + interface: 0 + vlan: native + network: 192.168.11.0 + mask: 24 + mgmt: + interface: 1 + vlan: 2443 + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 1 + vlan: 2444 + network: 10.2.0.0 + mask: 24 + private: + interface: 2 + vlan: 2445-2460 + network: 10.1.0.0 + mask: 24 + public: + interface: 1 + vlan: native + network: 10.0.21.0 + ip-range: 10.0.21.100-10.0.21.253 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.0.21.254 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: 'admin20_br0' + mgmt: 'mgmt20_br0' + private: ~ + public: 'public20_br0' + maas: + # MaaS timeouts (in minutes) + timeout_comissioning: 10 + timeout_deploying: 25 + network: + ntp_strata_host1: 1.se.pool.ntp.org + ntp_strata_host2: 0.se.pool.ntp.org + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces_intel + # Ordered-list, index should be in sync with interface index in PDF + - 'eno1' + - 'enp5s0f0' + - 'enp5s0f1' + - 'eno2' + - 'eno3' + - 'eno4' + busaddr: &busaddr_intel + # Bus-info reported by `ethtool -i ethX` + - '0000:02:00.0' + - '0000:05:00.0' + - '0000:05:00.1' + - '0000:02:00.1' + - '0000:03:00.0' + - '0000:03:00.1' + - interfaces: *interfaces_intel + busaddr: *busaddr_intel + - interfaces: *interfaces_intel + busaddr: *busaddr_intel + - interfaces: &interfaces_arm + - 'enP5p144s0' + - 'enP2p1s0f1' + - 'enP2p1s0f2' + - 'enP2p1s0f3' + - 'enP2p1s0f4' + - 'enP2p1s0f5' + busaddr: &busaddr_arm + - '0005:90:00.0' + - '0002:01:00.1' + - '0002:01:00.2' + - '0002:01:00.3' + - '0002:01:00.4' + - '0002:01:00.5' + - interfaces: *interfaces_arm + busaddr: *busaddr_arm + reclass: + node: + - compute_params: &compute_params_intel + common: + nova_cpu_pinning: &nova_cpu_pinning_common_intel "2-15" + compute_hugepages_size: 2M + compute_hugepages_count: 8192 + compute_hugepages_mount: /mnt/hugepages_2M + compute_kernel_isolcpu: *nova_cpu_pinning_common_intel + dpdk: + nova_cpu_pinning: "4-15" + compute_hugepages_size: 2M + compute_hugepages_count: 8192 + compute_hugepages_mount: /mnt/hugepages_2M + compute_kernel_isolcpu: *nova_cpu_pinning_common_intel + compute_dpdk_driver: uio + compute_ovs_pmd_cpu_mask: "0xc" + compute_ovs_dpdk_socket_mem: "2048" + compute_ovs_dpdk_lcore_mask: "0xc" + compute_ovs_memory_channels: "2" + dpdk0_driver: igb_uio + dpdk0_n_rxq: 2 + - compute_params: *compute_params_intel + - compute_params: *compute_params_intel + - compute_params: &compute_params_cavium + common: + nova_cpu_pinning: &nova_cpu_pinning_common_arm "8-47" + compute_hugepages_size: 2M + compute_hugepages_count: 8192 + compute_hugepages_mount: /mnt/hugepages_2M + compute_kernel_isolcpu: *nova_cpu_pinning_common_arm + dpdk: + nova_cpu_pinning: "12-47" + compute_hugepages_size: 1G + compute_hugepages_count: 16 + compute_hugepages_mount: /mnt/hugepages_1G + compute_kernel_isolcpu: *nova_cpu_pinning_common_arm + compute_dpdk_driver: vfio + compute_ovs_pmd_cpu_mask: "0x300" + compute_ovs_dpdk_socket_mem: "2048" + compute_ovs_dpdk_lcore_mask: "0xC00" + compute_ovs_memory_channels: "2" + dpdk0_driver: vfio-pci + dpdk0_n_rxq: 2 + - compute_params: *compute_params_cavium diff --git a/labs/arm/idf-pod5.yaml b/labs/arm/idf-pod5.yaml index c8035228..09fe4cb6 100644 --- a/labs/arm/idf-pod5.yaml +++ b/labs/arm/idf-pod5.yaml @@ -10,10 +10,14 @@ idf: version: 0.1 + # NOTE: Compass & Joid are not supported on this POD since they require at + # least 3 network ports on all nodes. + installer: ['apex', 'daisy', 'fuel'] net_config: oob: ip-range: 10.0.8.3-10.0.8.10 vlan: native + mask: 24 admin: interface: 0 vlan: native @@ -23,6 +27,7 @@ idf: interface: 1 vlan: 2183 network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra mask: 24 storage: interface: 1 @@ -30,14 +35,15 @@ idf: network: 10.2.0.0 mask: 24 private: - interface: 1 - vlan: 2185 + interface: 2 + vlan: 2185-2200 network: 10.1.0.0 mask: 24 public: interface: 1 vlan: native network: 10.0.8.0 + ip-range: 10.0.8.100-10.0.8.253 # Some IPs are in use by lab infra mask: 24 gateway: 10.0.8.254 dns: @@ -50,7 +56,13 @@ idf: mgmt: 'mgmt7_br0' private: ~ public: 'public7_br0' + maas: + # MaaS timeouts (in minutes) + timeout_comissioning: 10 + timeout_deploying: 15 network: + ntp_strata_host1: 1.se.pool.ntp.org + ntp_strata_host2: 0.se.pool.ntp.org node: # Ordered-list, index should be in sync with node index in PDF - interfaces: &interfaces @@ -65,7 +77,41 @@ idf: busaddr: *busaddr - interfaces: *interfaces busaddr: *busaddr - - interfaces: *interfaces - busaddr: *busaddr - - interfaces: *interfaces - busaddr: *busaddr + - interfaces: &interfaces_dual + - 'eth0' + - 'eth1' + - 'enp1s0f0' + - 'enp1s0f1' + busaddr: &busaddr_dual + - 'e0700000.xgmac' + - 'e0900000.xgmac' + - '0000:01:00.0' + - '0000:01:00.1' + - interfaces: *interfaces_dual + busaddr: *busaddr_dual + reclass: + node: + - compute_params: &compute_params + common: + nova_cpu_pinning: &nova_cpu_pinning_common "2,3,4,5,6,7" + compute_hugepages_size: 2M + compute_hugepages_count: 8192 + compute_hugepages_mount: /mnt/hugepages_2M + compute_kernel_isolcpu: *nova_cpu_pinning_common + dpdk: + nova_cpu_pinning: "4-7" + compute_hugepages_size: 2M + compute_hugepages_count: 8192 + compute_hugepages_mount: /mnt/hugepages_2M + compute_kernel_isolcpu: *nova_cpu_pinning_common + compute_dpdk_driver: uio + compute_ovs_pmd_cpu_mask: "0xc" + compute_ovs_dpdk_socket_mem: "4096" + compute_ovs_dpdk_lcore_mask: "0xc" + compute_ovs_memory_channels: "2" + dpdk0_driver: igb_uio + dpdk0_n_rxq: 2 + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params diff --git a/labs/arm/idf-pod6.yaml b/labs/arm/idf-pod6.yaml index 9246c4f7..6d6c9c37 100644 --- a/labs/arm/idf-pod6.yaml +++ b/labs/arm/idf-pod6.yaml @@ -10,10 +10,12 @@ idf: version: 0.1 + installer: ['apex', 'compass4nfv', 'daisy', 'fuel'] net_config: oob: ip-range: 10.0.1.54-10.0.1.58 vlan: native + mask: 24 admin: interface: 0 vlan: native @@ -23,6 +25,7 @@ idf: interface: 1 vlan: 2323 network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra mask: 24 storage: interface: 1 @@ -30,14 +33,15 @@ idf: network: 10.2.0.0 mask: 24 private: - interface: 1 - vlan: 2325 + interface: 2 + vlan: 2325-2340 network: 10.1.0.0 mask: 24 public: interface: 1 vlan: native network: 10.0.15.0 + ip-range: 10.0.15.100-10.0.15.253 # Some IPs are in use by lab infra mask: 24 gateway: 10.0.15.254 dns: @@ -50,7 +54,13 @@ idf: mgmt: 'mgmt14_br0' private: ~ public: 'public14_br0' + maas: + # MaaS timeouts (in minutes) + timeout_comissioning: 10 + timeout_deploying: 15 network: + ntp_strata_host1: 1.se.pool.ntp.org + ntp_strata_host2: 0.se.pool.ntp.org node: # Ordered-list, index should be in sync with node index in PDF - interfaces: &interfaces @@ -77,3 +87,29 @@ idf: busaddr: *busaddr - interfaces: *interfaces busaddr: *busaddr + reclass: + node: + - compute_params: &compute_params + common: + nova_cpu_pinning: &nova_cpu_pinning_common "8-47" + compute_hugepages_size: 2M + compute_hugepages_count: 8192 + compute_hugepages_mount: /mnt/hugepages_2M + compute_kernel_isolcpu: *nova_cpu_pinning_common + dpdk: + nova_cpu_pinning: "12-47" + compute_hugepages_size: 1G + compute_hugepages_count: 16 + compute_hugepages_mount: /mnt/hugepages_1G + compute_kernel_isolcpu: *nova_cpu_pinning_common + compute_dpdk_driver: vfio + compute_ovs_pmd_cpu_mask: "0x300" + compute_ovs_dpdk_socket_mem: "2048" + compute_ovs_dpdk_lcore_mask: "0xC00" + compute_ovs_memory_channels: "2" + dpdk0_driver: vfio-pci + dpdk0_n_rxq: 2 + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params diff --git a/labs/arm/idf-pod7.yaml b/labs/arm/idf-pod7.yaml new file mode 100644 index 00000000..2cc681bf --- /dev/null +++ b/labs/arm/idf-pod7.yaml @@ -0,0 +1,136 @@ +############################################################################## +# Copyright (c) 2017 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ARM POD 7 installer descriptor file ### + +idf: + version: 0.1 + # NOTE: Compass & Joid are not supported on this POD since they require at + # least 3 network ports on all nodes. + installer: ['apex', 'daisy', 'fuel'] + net_config: + oob: + ip-range: 10.0.16.2-10.0.16.6 + vlan: native + mask: 24 + admin: + interface: 0 + vlan: native + network: 192.168.11.0 + mask: 24 + mgmt: + interface: 1 + vlan: 2343 + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 1 + vlan: 2344 + network: 10.2.0.0 + mask: 24 + private: + interface: 1 + vlan: 2345-2360 + network: 10.1.0.0 + mask: 24 + public: + interface: 1 + vlan: native + network: 10.0.16.0 + ip-range: 10.0.16.100-10.0.16.253 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.0.16.254 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: 'admin15_br0' + mgmt: 'mgmt15_br0' + private: ~ + public: 'public15_br0' + maas: + # MaaS timeouts (in minutes) + timeout_comissioning: 10 + timeout_deploying: 15 + network: + ntp_strata_host1: 1.se.pool.ntp.org + ntp_strata_host2: 0.se.pool.ntp.org + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces_a + # Ordered-list, index should be in sync with interface index in PDF + - 'enP5s3' + - 'enP2p1s0f2' + - 'enP2p1s0f1' + - 'enP2p1s0f3' + busaddr: &busaddr_a + # Bus-info reported by `ethtool -i ethX` + - '0005:90:00.0' + - '0002:01:00.2' + - '0002:01:00.1' + - '0002:01:00.3' + - interfaces: *interfaces_a + busaddr: *busaddr_a + - interfaces: *interfaces_a + busaddr: *busaddr_a + - interfaces: &interfaces_b + - 'eth0' + - 'eth1' + busaddr: &busaddr_b + - 'e0700000.xgmac' + - 'e0900000.xgmac' + - interfaces: *interfaces_b + busaddr: *busaddr_b + reclass: + node: + - compute_params: &compute_params_a + common: + nova_cpu_pinning: &nova_cpu_pinning_common_a "2-47" + compute_hugepages_size: 2M + compute_hugepages_count: 8192 + compute_hugepages_mount: /mnt/hugepages_2M + compute_kernel_isolcpu: *nova_cpu_pinning_common_a + dpdk: + nova_cpu_pinning: "4-47" + compute_hugepages_size: 1G + compute_hugepages_count: 16 + compute_hugepages_mount: /mnt/hugepages_1G + compute_kernel_isolcpu: *nova_cpu_pinning_common_a + compute_dpdk_driver: vfio + compute_ovs_pmd_cpu_mask: "0xc" + compute_ovs_dpdk_socket_mem: "4096" + compute_ovs_dpdk_lcore_mask: "0xc" + compute_ovs_memory_channels: "2" + dpdk0_driver: vfio-pci + dpdk0_n_rxq: 2 + - compute_params: *compute_params_a + - compute_params: *compute_params_a + - compute_params: &compute_params_b + common: + nova_cpu_pinning: &nova_cpu_pinning_common_b "2,3,4,5,6,7" + compute_hugepages_size: 2M + compute_hugepages_count: 8192 + compute_hugepages_mount: /mnt/hugepages_2M + compute_kernel_isolcpu: *nova_cpu_pinning_common_b + dpdk: + nova_cpu_pinning: "4-7" + compute_hugepages_size: 2M + compute_hugepages_count: 8192 + compute_hugepages_mount: /mnt/hugepages_2M + compute_kernel_isolcpu: *nova_cpu_pinning_common_b + compute_dpdk_driver: vfio + compute_ovs_pmd_cpu_mask: "0xc" + compute_ovs_dpdk_socket_mem: "4096" + compute_ovs_dpdk_lcore_mask: "0xc" + compute_ovs_memory_channels: "2" + dpdk0_driver: vfio-pci + dpdk0_n_rxq: 2 + - compute_params: *compute_params_b diff --git a/labs/arm/idf-pod8.yaml b/labs/arm/idf-pod8.yaml new file mode 100644 index 00000000..f5ef7241 --- /dev/null +++ b/labs/arm/idf-pod8.yaml @@ -0,0 +1,113 @@ +############################################################################## +# Copyright (c) 2018 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ARM POD 8 installer descriptor file ### + +idf: + version: 0.1 + installer: ['apex', 'compass4nfv', 'daisy', 'fuel'] + net_config: + oob: + ip-range: 10.0.19.2-10.0.19.7 + vlan: native + mask: 24 + admin: + interface: 0 + vlan: native + network: 192.168.11.0 + mask: 24 + mgmt: + interface: 1 + vlan: 2403 + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 1 + vlan: 2404 + network: 10.2.0.0 + mask: 24 + private: + interface: 2 + vlan: 2405-2420 + network: 10.1.0.0 + mask: 24 + public: + interface: 1 + vlan: native + network: 10.0.19.0 + ip-range: 10.0.19.100-10.0.19.253 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.0.19.254 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: 'admin18_br0' + mgmt: 'mgmt18_br0' + private: ~ + public: 'public18_br0' + maas: + # MaaS timeouts (in minutes) + timeout_comissioning: 10 + timeout_deploying: 15 + network: + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'enP5p144s0' + - 'enP2p1s0f1' + - 'enP2p1s0f2' + - 'enP2p1s0f3' + - 'enP2p1s0f4' + - 'enP2p1s0f5' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0005:90:00.0' + - '0002:01:00.1' + - '0002:01:00.2' + - '0002:01:00.3' + - '0002:01:00.4' + - '0002:01:00.5' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + reclass: + node: + - compute_params: &compute_params + common: + nova_cpu_pinning: &nova_cpu_pinning_common "8-47" + compute_hugepages_size: 2M + compute_hugepages_count: 8192 + compute_hugepages_mount: /mnt/hugepages_2M + compute_kernel_isolcpu: *nova_cpu_pinning_common + dpdk: + nova_cpu_pinning: "12-47" + compute_hugepages_size: 1G + compute_hugepages_count: 16 + compute_hugepages_mount: /mnt/hugepages_1G + compute_kernel_isolcpu: *nova_cpu_pinning_common + compute_dpdk_driver: vfio + compute_ovs_pmd_cpu_mask: "0x300" + compute_ovs_dpdk_socket_mem: "2048" + compute_ovs_dpdk_lcore_mask: "0xC00" + compute_ovs_memory_channels: "2" + dpdk0_driver: vfio-pci + dpdk0_n_rxq: 2 + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params diff --git a/labs/arm/idf-pod9.yaml b/labs/arm/idf-pod9.yaml new file mode 100644 index 00000000..b6252d36 --- /dev/null +++ b/labs/arm/idf-pod9.yaml @@ -0,0 +1,117 @@ +############################################################################## +# Copyright (c) 2018 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ARM POD 9 installer descriptor file ### + +idf: + version: 0.1 + installer: ['apex', 'compass4nfv', 'daisy', 'fuel'] + net_config: + oob: + ip-range: 10.0.20.2-10.0.20.7 + vlan: native + mask: 24 + admin: + interface: 0 + vlan: native + network: 192.168.11.0 + mask: 24 + mgmt: + interface: 1 + vlan: 2423 + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 1 + vlan: 2424 + network: 10.2.0.0 + mask: 24 + private: + interface: 2 + vlan: 2425-2440 + network: 10.1.0.0 + mask: 24 + public: + interface: 1 + vlan: native + network: 10.0.20.0 + ip-range: 10.0.20.100-10.0.20.253 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.0.20.254 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: 'admin19_br0' + mgmt: 'mgmt19_br0' + private: ~ + public: 'public19_br0' + maas: + # MaaS timeouts (in minutes) + timeout_comissioning: 14 + timeout_deploying: 24 + network: + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'enP9p144s0' + - 'enP2p1s0f1' + - 'enP2p1s0f2' + - 'enP2p1s0f3' + - 'enP2p1s0f4' + - 'enP2p1s0f5' + - 'enP6p1s0f1' + - 'enP6p1s0f2' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0009:90:00.0' + - '0002:01:00.1' + - '0002:01:00.2' + - '0002:01:00.3' + - '0002:01:00.4' + - '0002:01:00.5' + - '0006:01:00.1' + - '0006:01:00.2' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + reclass: + node: + - compute_params: &compute_params + common: + nova_cpu_pinning: &nova_cpu_pinning_common "8-47" + compute_hugepages_size: 2M + compute_hugepages_count: 8192 + compute_hugepages_mount: /mnt/hugepages_2M + compute_kernel_isolcpu: *nova_cpu_pinning_common + dpdk: + nova_cpu_pinning: "12-47" + compute_hugepages_size: 1G + compute_hugepages_count: 16 + compute_hugepages_mount: /mnt/hugepages_1G + compute_kernel_isolcpu: *nova_cpu_pinning_common + compute_dpdk_driver: vfio + compute_ovs_pmd_cpu_mask: "0x300" + compute_ovs_dpdk_socket_mem: "2048" + compute_ovs_dpdk_lcore_mask: "0xC00" + compute_ovs_memory_channels: "2" + dpdk0_driver: vfio-pci + dpdk0_n_rxq: 2 + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params diff --git a/labs/arm/idf-virtual2.yaml b/labs/arm/idf-virtual2.yaml new file mode 100644 index 00000000..85529187 --- /dev/null +++ b/labs/arm/idf-virtual2.yaml @@ -0,0 +1,84 @@ +############################################################################## +# Copyright (c) 2018 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ARM VIRTUAL 2 installer descriptor file ### + +idf: + version: 0.1 + net_config: + oob: + interface: 0 + ip-range: ~ + vlan: native + mask: 24 + # All networks (except OOB) are virtual networks managed by `libvirt` + # Interface indexes are based on Fuel installer defaults + admin: + interface: 0 # when used, should be first vnet interface, untagged + vlan: native + network: 192.168.11.0 + mask: 24 + mgmt: + interface: 1 # when used, should be second vnet interface, untagged + vlan: native + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 4 + vlan: native + network: 192.168.20.0 + mask: 24 + private: + interface: 2 + vlan: 1000-1999 + network: 10.1.0.0 + mask: 24 + public: + interface: 3 + vlan: native + network: 10.0.9.0 + ip-range: 10.0.9.100-10.0.9.253 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.0.9.254 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: ~ + mgmt: ~ + private: ~ + public: 'public' + network: + interface_mtu: 9000 + ntp_strata_host1: 1.se.pool.ntp.org + ntp_strata_host2: 0.se.pool.ntp.org + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'enp1s0' + - 'enp2s0' + - 'enp3s0' + - 'enp4s0' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0000:01:00.0' + - '0000:02:00.0' + - '0000:03:00.0' + - '0000:04:00.0' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr diff --git a/labs/arm/pod10.yaml b/labs/arm/pod10.yaml new file mode 100644 index 00000000..0199c584 --- /dev/null +++ b/labs/arm/pod10.yaml @@ -0,0 +1,322 @@ +############################################################################## +# Copyright (c) 2018 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### Enea ARM POD 10 descriptor file ### + +version: 1.0 +details: + pod_owner: ENEA AB + contact: dan.lilliehorn@enea.com + lab: ENEA lab + location: Stockholm, Sweden + type: production + link: https://wiki.opnfv.org/display/pharos/Enea+Hosting +############################################################################## +jumphost: + name: jenkins-slave-arm-pod10 + node: + type: baremetal + vendor: Dell + model: PowerEdge R440 + arch: x86_64 + cpus: 1 + cpu_cflags: skylake + cores: 16 + memory: 96GB + disks: + - name: disk1 + disk_capacity: 240G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + - name: disk2 + disk_capacity: 2T + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + os: ubuntu-16.04 + remote_params: &remote_params + type: ipmi + versions: + - 2.0 + user: ADMIN + pass: ADMIN + remote_management: + <<: *remote_params + address: 10.0.21.7 + mac_address: "D0:94:66:87:55:32" + interfaces: + # eno1 + - mac_address: "d0:94:66:87:55:38" + speed: 1gb + features: '' + name: 'nic1' + # eno2 + - mac_address: "d0:94:66:87:55:39" + speed: 1gb + features: '' + name: 'nic2' +############################################################################## +nodes: + - name: intel2660-1 + node: &nodeparams + type: baremetal + vendor: Dell + model: PowerEdge R430 + arch: x86_64 + cpus: 1 + cpu_cflags: 'sandy bridge' + cores: 14 + memory: 128GB + disks: &disks + - name: 'disk1' + disk_capacity: 240G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + - name: 'disk2' + disk_capacity: 240G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + - name: 'disk3' + disk_capacity: 1T + disk_type: ssd + disk_interface: sata + disk_rotation: 7200 + - name: 'disk4' + disk_capacity: 1T + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + remote_management: + <<: *remote_params + address: 10.0.21.2 + mac_address: "D0:94:66:58:8C:A8" + interfaces: + # eno1 + - mac_address: "D0:94:66:58:8C:A4" + speed: 1gb + features: '' + name: 'nic1' + # enp5s0f0 + - mac_address: "B4:96:91:31:9D:44" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + # enp5s0f1 + - mac_address: "B4:96:91:31:9D:46" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + # eno2 UNUSED + - mac_address: "D0:94:66:58:8C:A5" + speed: 1gb + features: '' + name: 'nic4' + # eno3 UNUSED + - mac_address: "D0:94:66:58:8C:A6" + speed: 1gb + features: '' + name: 'nic5' + # eno4 UNUSED + - mac_address: "D0:94:66:58:8C:A7" + speed: 1gb + features: '' + name: 'nic6' + ############################################################################ + - name: intel2660-2 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 10.0.21.3 + mac_address: "D0:94:66:6D:9A:DE" + interfaces: + # eno1 + - mac_address: "D0:94:66:6D:9A:DA" + speed: 1gb + features: '' + name: 'nic1' + # enp5s0f0 + - mac_address: "B4:96:91:31:9C:64" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + # enp5s0f1 + - mac_address: "B4:96:91:31:9C:66" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + # eno2 UNUSED + - mac_address: "D0:94:66:6D:9A:DB" + speed: 1gb + features: '' + name: 'nic4' + # eno3 UNUSED + - mac_address: "D0:94:66:6D:9A:DC" + speed: 1gb + features: '' + name: 'nic5' + # eno4 UNUSED + - mac_address: "D0:94:66:6D:9A:DD" + speed: 1gb + features: '' + name: 'nic6' + ############################################################################ + - name: intel2660-3 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 10.0.21.4 + mac_address: "D0:94:66:58:9E:DF" + interfaces: + # eno1 + - mac_address: "D0:94:66:58:9E:DB" + speed: 1gb + features: '' + name: 'nic1' + # enp5s0f0 + - mac_address: "B4:96:91:31:9C:9C" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + # enp5s0f1 + - mac_address: "B4:96:91:31:9C:9E" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + # eno2 UNUSED + - mac_address: "D0:94:66:58:9E:DC" + speed: 1gb + features: '' + name: 'nic4' + # eno3 UNUSED + - mac_address: "D0:94:66:58:9E:DD" + speed: 1gb + features: '' + name: 'nic5' + # eno4 UNUSED + - mac_address: "D0:94:66:58:9E:DE" + speed: 1gb + features: '' + name: 'nic6' + ############################################################################ + - name: cn8890-14 + node: + type: baremetal + vendor: Cavium + model: ThunderX + arch: aarch64 + cpus: 1 + cpu_cflags: fp asimd evtstrm aes pmull sha1 sha2 crc32 + cores: 48 + memory: 128G + disks: + - name: 'disk1' + disk_capacity: 240G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + remote_management: + type: ipmi + versions: + - 2.0 + user: ADMIN + pass: ADMIN + address: 10.0.21.5 + mac_address: "1c:1b:0d:60:ed:9b" + interfaces: + # enP5144s0, Connected, used only for admin/PXE + - mac_address: "68:05:ca:42:cb:e5" + speed: 1gb + features: '' + name: 'nic1' + # enP2p1s0f1, Connected, trunk for all other VLANs + - mac_address: "1c:1b:0d:60:ed:96" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + # enP2p1s0f2, private + - mac_address: "1c:1b:0d:60:ed:97" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + # enP2p1s0f3, Not connected + - mac_address: "1c:1b:0d:60:ed:98" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + # enP2p1s0f4, Not connected + - mac_address: "1c:1b:0d:60:ed:99" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + # enP2p1s0f5, Not connected + - mac_address: "1c:1b:0d:60:ed:9a" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic4' + + ############################################################################ + - name: cn8890-15 + node: + type: baremetal + vendor: Cavium + model: ThunderX + arch: aarch64 + cpus: 1 + cpu_cflags: fp asimd evtstrm aes pmull sha1 sha2 crc32 + cores: 48 + memory: 64G + disks: + - name: 'disk1' + disk_capacity: 240G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + remote_management: + type: ipmi + versions: + - 2.0 + user: ADMIN + pass: ADMIN + address: 10.0.21.6 + mac_address: "1c:1b:0d:60:ed:b7" + interfaces: + # enP5p144s0 + - mac_address: "68:05:ca:42:cb:e8" + speed: 1gb + features: '' + name: 'nic1' + # enP2p1s0f1 + - mac_address: "1c:1b:0d:60:ed:b2" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + # enP2p1s0f2 + - mac_address: "1c:1b:0d:60:ed:b3" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + # enP2p1s0f3, Not connected + - mac_address: "1c:1b:0d:60:ed:b4" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + # enP2p1s0f4, Not connected + - mac_address: "1c:1b:0d:60:ed:b5" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + # enP2p1s0f5, Not connected + - mac_address: "1c:1b:0d:60:ed:b6" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic6' diff --git a/labs/arm/pod5.yaml b/labs/arm/pod5.yaml index 3708b7f0..35d46017 100644 --- a/labs/arm/pod5.yaml +++ b/labs/arm/pod5.yaml @@ -8,6 +8,7 @@ --- ### Enea ARM POD 5 descriptor file ### +version: 1.0 details: pod_owner: ENEA AB contact: dan.lilliehorn@enea.com @@ -155,6 +156,14 @@ nodes: speed: 10gb features: '' name: 'nic2' + - mac_address: "ac:1f:6b:8a:82:84" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "ac:1f:6b:8a:82:85" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' ############################################################################ - name: softiron-7 node: *nodeparams @@ -172,3 +181,11 @@ nodes: speed: 10gb features: '' name: 'nic2' + - mac_address: "ac:1f:6b:8a:82:a0" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "ac:1f:6b:8a:82:a1" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' diff --git a/labs/arm/pod6.yaml b/labs/arm/pod6.yaml index dc53888c..3b558164 100644 --- a/labs/arm/pod6.yaml +++ b/labs/arm/pod6.yaml @@ -8,6 +8,7 @@ --- ### Enea ARM POD 6 descriptor file ### +version: 1.0 details: pod_owner: ENEA AB contact: dan.lilliehorn@enea.com diff --git a/labs/arm/pod7.yaml b/labs/arm/pod7.yaml new file mode 100644 index 00000000..bb624799 --- /dev/null +++ b/labs/arm/pod7.yaml @@ -0,0 +1,241 @@ +############################################################################## +# Copyright (c) 2018 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### Enea ARM POD 7 descriptor file ### + +version: 1.0 +details: + pod_owner: ENEA AB + contact: dan.lilliehorn@enea.com + lab: ENEA lab + location: Stockholm, Sweden + type: production + link: https://wiki.opnfv.org/display/pharos/Enea+Hosting +############################################################################## +jumphost: + name: jenkins-slave-arm-pod7 + node: + type: baremetal + vendor: AppliedMicro + model: XGene 1 + arch: aarch64 + cpus: 1 + cpu_cflags: fp asimd evtstrm cpuid + cores: 8 + memory: 32G + disks: + # /dev/sda + - name: disk1 + disk_capacity: 120G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + # /dev/sdb + - name: disk2 + disk_capacity: 1T + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + # /dev/sdc + - name: disk3 + disk_capacity: 1T + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + os: ubuntu-16.04 + remote_params: &remote_params + type: ipmi + versions: + - 2.0 + user: admin + pass: admin + remote_management: + <<: *remote_params + address: 0.0.0.0 + mac_address: "00:00:00:00:00:00" + interfaces: + # eth0, Not connected + - mac_address: "00:01:73:02:3b:28" + address: 192.168.11.1 + speed: 1gb + features: '' + name: 'nic1' + # eth1, Connected for PXE + - mac_address: "00:01:73:02:3b:29" + speed: 1gb + features: '' + name: 'nic2' + # eth2, Not connected + - mac_address: "00:01:73:02:3b:2a" + speed: 1gb + features: '' + name: 'nic3' + # eth3, Connected for truck traffic + - mac_address: "00:01:73:02:3b:2b" + speed: 10gb + features: '' + name: 'nic4' +############################################################################## +nodes: + - name: cn8890-6 + node: &nodeparams_a + type: baremetal + vendor: Cavium + model: ThunderX + arch: aarch64 + cpus: 1 + cpu_cflags: fp asimd evtstrm aes pmull sha1 sha2 crc32 + cores: 48 + memory: 128G + disks: &disks_a + - name: 'disk1' + disk_capacity: 500G + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + remote_management: + <<: *remote_params + address: 10.0.16.2 + mac_address: "40:8D:5C:BA:D2:32" + interfaces: + # enP5s3, Connected, used only for admin/PXE + - mac_address: "68:05:ca:3d:93:14" + speed: 1gb + features: '' + name: 'nic1' + # enP2p1s0f2, Connected, trunk for all other VLANs + - mac_address: "00:0f:b7:03:00:c1" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + # enP2p1s0f1, Not connected + - mac_address: "00:0f:b7:03:00:c0" + speed: 1gb + features: '' + name: 'nic3' + # enP2p1s0f3, Not connected + - mac_address: "00:0f:b7:03:00:c2" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + ############################################################################ + - name: cn8890-8 + node: *nodeparams_a + disks: *disks_a + remote_management: + <<: *remote_params + address: 10.0.16.3 + mac_address: "40:8D:5C:BA:B9:60" + interfaces: + # enP5s3, Connected, used only for admin/PXE + - mac_address: "68:05:ca:3f:7f:f3" + speed: 1gb + features: '' + name: 'nic1' + # enP2p1s0f2, Connected, trunk for all other VLANs + - mac_address: "00:0f:b7:05:00:c1" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + # enP2p1s0f1, Not connected + - mac_address: "00:0f:b7:05:00:c0" + speed: 1gb + features: '' + name: 'nic3' + # enP2p1s0f3, Not connected + - mac_address: "00:0f:b7:05:00:c2" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + ############################################################################ + - name: cn8890-10 + node: *nodeparams_a + disks: *disks_a + remote_management: + <<: *remote_params + address: 10.0.16.4 + mac_address: "40:8D:5C:BA:B9:65" + interfaces: + # enP5s3, Connected, used only for admin/PXE + - mac_address: "68:05:ca:3d:93:0f" + speed: 1gb + features: '' + name: 'nic1' + # enP2p1s0f2, Connected, trunk for all other VLANs + - mac_address: "00:0f:b7:07:00:c1" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + # enP2p1s0f1, Not connected + - mac_address: "00:0f:b7:07:00:c0" + speed: 1gb + features: '' + name: 'nic3' + # enP2p1s0f3, Not connected + - mac_address: "00:0f:b7:07:00:c2" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + ############################################################################ + - name: softiron-1 + node: &nodeparams_b + type: baremetal + vendor: American Megatrends Inc + model: Overdrive/Supercharger + arch: aarch64 + cpus: 1 + cpu_cflags: fp asimd evtstrm aes pmull sha1 sha2 crc32 + cores: 8 + memory: 32G + disks: &disks_b + # dev/sda + - name: 'disk1' + disk_capacity: 128G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + # /dev/sdb + - name: 'disk2' + disk_capacity: 2T + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + remote_management: + <<: *remote_params + address: 10.0.16.5 + mac_address: "E0:FF:F7:00:04:21" + interfaces: + # eth0, Connected, used only for admin/PXE + - mac_address: "e0:ff:f7:00:05:96" + speed: 1gb + features: '' + name: 'nic1' + # eth1, Connected, trunk for all other VLANs + - mac_address: "e0:ff:f7:00:05:97" + speed: 1gb + features: '' + name: 'nic2' + ############################################################################ + - name: softiron-2 + node: *nodeparams_b + disks: *disks_b + remote_management: + <<: *remote_params + address: 10.0.16.6 + mac_address: "E0:FF:F7:00:04:29" + interfaces: + # eth0, Connected, used only for admin/PXE + - mac_address: "e0:ff:f7:00:05:93" + speed: 1gb + features: '' + name: 'nic1' + # eth1, Connected, trunk for all other VLANs + - mac_address: "e0:ff:f7:00:05:94" + speed: 1gb + features: '' + name: 'nic2' diff --git a/labs/arm/pod8.yaml b/labs/arm/pod8.yaml new file mode 100644 index 00000000..00386d58 --- /dev/null +++ b/labs/arm/pod8.yaml @@ -0,0 +1,263 @@ +############################################################################## +# Copyright (c) 2018 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### Enea ARM POD 8 descriptor file ### + +version: 1.0 +details: + pod_owner: ENEA AB + contact: dan.lilliehorn@enea.com + lab: ENEA lab + location: Stockholm, Sweden + type: production + link: https://wiki.opnfv.org/display/pharos/Enea+Hosting +############################################################################## +jumphost: + name: jenkins-slave-arm-pod8 + node: + type: baremetal + vendor: Cavium + model: ThunderX + arch: aarch64 + cpus: 1 + cpu_cflags: fp asimd evtstrm aes pmull sha1 sha2 crc32 + cores: 48 + memory: 256G + disks: + ## /dev/sda + - name: disk1 + disk_capacity: 480G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + ## /dev/sdb + - name: disk2 + disk_capacity: 2T + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + os: ubuntu-16.04 + remote_params: &remote_params + type: ipmi + versions: + - 2.0 + user: ADMIN + pass: ADMIN + remote_management: + <<: *remote_params + address: 10.0.19.2 + mac_address: "1C:1B:0D:E7:49:E7" + interfaces: + - mac_address: "68:05:CA:62:44:BE" + speed: 1gb + features: '' + name: 'nic1' + - mac_address: "1C:1B:0D:E7:49:DF" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "1C:1B:0D:E7:49:E0" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "1C:1B:0D:E7:49:E1" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "1C:1B:0D:E7:49:E2" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "1C:1B:0D:E7:49:E3" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic6' +############################################################################## +nodes: + - name: cn8890-35 + node: &nodeparams + type: baremetal + vendor: Cavium + model: ThunderX + arch: aarch64 + cpus: 1 + cpu_cflags: fp asimd evtstrm aes pmull sha1 sha2 crc32 + cores: 48 + memory: 256G + disks: &disks + - name: disk1 + disk_capacity: 480G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + - name: disk2 + disk_capacity: 2T + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + remote_management: + <<: *remote_params + address: 10.0.19.3 + mac_address: "1C:1B:0D:E8:FB:7B" + interfaces: + - mac_address: "68:05:CA:7B:3A:36" + speed: 1gb + features: '' + name: 'nic1' + - mac_address: "1C:1B:0D:E8:FB:73" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "1C:1B:0D:E8:FB:74" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "1C:1B:0D:E8:FB:75" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "1C:1B:0D:E8:FB:76" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "1C:1B:0D:E8:FB:77" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic6' + ############################################################################ + - name: cn8890-36 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 10.0.19.4 + mac_address: "1C:1B:0D:EF:75:6A" + interfaces: + - mac_address: "68:05:CA:7B:3A:D5" + speed: 1gb + features: '' + name: 'nic1' + - mac_address: "1C:1B:0D:EF:75:62" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "1C:1B:0D:EF:75:63" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "1C:1B:0D:EF:75:64" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "1C:1B:0D:EF:75:65" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "1C:1B:0D:EF:75:66" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic6' + ############################################################################ + - name: cn8890-37 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 10.0.19.5 + mac_address: "1C:1B:0D:EF:74:DE" + interfaces: + - mac_address: "68:05:CA:62:44:96" + speed: 1gb + features: '' + name: 'nic1' + - mac_address: "1C:1B:0D:EF:74:D6" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "1C:1B:0D:EF:74:D7" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "1C:1B:0D:EF:74:D8" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "1C:1B:0D:EF:74:D9" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "1C:1B:0D:EF:74:DA" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic6' + ############################################################################ + - name: cn8890-38 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 10.0.19.6 + mac_address: "1C:1B:0D:EF:74:CA" + interfaces: + - mac_address: "68:05:CA:62:44:FB" + speed: 1gb + features: '' + name: 'nic1' + - mac_address: "1C:1B:0D:EF:74:C2" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "1C:1B:0D:EF:74:C3" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "1C:1B:0D:EF:74:C4" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "1C:1B:0D:EF:74:C5" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "1C:1B:0D:EF:74:C6" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic6' + ############################################################################ + - name: cn8890-39 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 10.0.19.7 + mac_address: "1C:1B:0D:EF:74:8E" + interfaces: + - mac_address: "68:05:CA:62:44:56" + speed: 1gb + features: '' + name: 'nic1' + - mac_address: "1C:1B:0D:EF:74:86" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "1C:1B:0D:EF:74:87" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "1C:1B:0D:EF:74:88" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "1C:1B:0D:EF:74:89" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "1C:1B:0D:EF:74:8A" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic6' diff --git a/labs/arm/pod9.yaml b/labs/arm/pod9.yaml new file mode 100644 index 00000000..3669a34c --- /dev/null +++ b/labs/arm/pod9.yaml @@ -0,0 +1,311 @@ +############################################################################## +# Copyright (c) 2018 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### Enea ARM POD 9 descriptor file ### + +version: 1.0 +details: + pod_owner: ENEA AB + contact: dan.lilliehorn@enea.com + lab: ENEA lab + location: Stockholm, Sweden + type: production + link: https://wiki.opnfv.org/display/pharos/Enea+Hosting +############################################################################## +jumphost: + name: jenkins-slave-arm-pod8 + node: + type: baremetal + vendor: Cavium + model: ThunderX + arch: aarch64 + cpus: 2 + cpu_cflags: fp asimd evtstrm aes pmull sha1 sha2 crc32 + cores: 48 + memory: 256G + disks: + ## /dev/sda + - name: disk1 + disk_capacity: 480G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + ## /dev/sdb + - name: disk2 + disk_capacity: 2T + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + os: ubuntu-16.04 + remote_params: &remote_params + type: ipmi + versions: + - 2.0 + user: ADMIN + pass: ADMIN + remote_management: + <<: *remote_params + address: 10.0.20.2 + mac_address: "1C:1B:0D:60:EB:F3" + interfaces: + - mac_address: "68:05:CA:7B:0B:BD" + speed: 1gb + features: '' + name: 'nic1' + - mac_address: "1C:1B:0D:60:EB:EC" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "1C:1B:0D:60:EB:ED" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "1C:1B:0D:60:EB:EE" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "1C:1B:0D:60:EB:EF" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "1C:1B:0D:60:EB:F0" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic6' + - mac_address: "1C:1B:0D:60:EB:F1" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic7' + - mac_address: "1C:1B:0D:60:EB:F2" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic8' +############################################################################## +nodes: + - name: cn8890-41 + node: &nodeparams + type: baremetal + vendor: Cavium + model: ThunderX + arch: aarch64 + cpus: 2 + cpu_cflags: fp asimd evtstrm aes pmull sha1 sha2 crc32 + cores: 48 + memory: 256G + disks: &disks + - name: disk1 + disk_capacity: 480G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + - name: disk2 + disk_capacity: 2T + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + remote_management: + <<: *remote_params + address: 10.0.20.3 + mac_address: "40:8D:5C:E7:B1:FD" + interfaces: + - mac_address: "68:05:CA:7B:3B:F5" + speed: 1gb + features: '' + name: 'nic1' + - mac_address: "40:8D:5C:E7:B1:F6" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "40:8D:5C:E7:B1:F7" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "40:8D:5C:E7:B1:F8" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "40:8D:5C:E7:B1:F9" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "40:8D:5C:E7:B1:FA" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic6' + - mac_address: "40:8D:5C:E7:B1:FB" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic7' + - mac_address: "40:8D:5C:E7:B1:FC" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic8' + ############################################################################ + - name: cn8890-42 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 10.0.20.4 + mac_address: "40:8D:5C:E7:B3:17" + interfaces: + - mac_address: "68:05:CA:7B:3C:4D" + speed: 1gb + features: '' + name: 'nic1' + - mac_address: "40:8D:5C:E7:B3:10" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "40:8D:5C:E7:B3:11" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "40:8D:5C:E7:B3:12" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "40:8D:5C:E7:B3:13" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "40:8D:5C:E7:B3:14" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic6' + - mac_address: "40:8D:5C:E7:B3:15" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic7' + - mac_address: "40:8D:5C:E7:B3:16" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic8' + ############################################################################ + - name: cn8890-43 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 10.0.20.5 + mac_address: "40:8D:5C:E7:B2:AB" + interfaces: + - mac_address: "68:05:CA:7B:0B:C0" + speed: 1gb + features: '' + name: 'nic1' + - mac_address: "40:8D:5C:E7:B2:A4" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "40:8D:5C:E7:B2:A5" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "40:8D:5C:E7:B2:A6" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "40:8D:5C:E7:B2:A7" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "40:8D:5C:E7:B2:A8" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic6' + - mac_address: "40:8D:5C:E7:B2:A9" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic7' + - mac_address: "40:8D:5C:E7:B2:AA" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic8' + ############################################################################ + - name: cn8890-44 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 10.0.20.6 + mac_address: "1C:1B:0D:60:EC:17" + interfaces: + - mac_address: "68:05:CA:7B:0D:A5" + speed: 1gb + features: '' + name: 'nic1' + - mac_address: "1C:1B:0D:60:EC:10" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "1C:1B:0D:60:EC:11" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "1C:1B:0D:60:EC:12" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "1C:1B:0D:60:EC:13" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "1C:1B:0D:60:EC:14" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic6' + - mac_address: "1C:1B:0D:60:EC:15" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic7' + - mac_address: "1C:1B:0D:60:EC:16" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic8' + ############################################################################ + - name: cn8890-45 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 10.0.20.7 + mac_address: "40:8D:5C:E7:B3:20" + interfaces: + - mac_address: "68:05:CA:7B:3C:90" + speed: 1gb + features: '' + name: 'nic1' + - mac_address: "40:8D:5C:E7:B3:19" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "40:8D:5C:E7:B3:1A" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "40:8D:5C:E7:B3:1B" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "40:8D:5C:E7:B3:1C" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "40:8D:5C:E7:B3:1D" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic6' + - mac_address: "40:8D:5C:E7:B3:1E" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic7' + - mac_address: "40:8D:5C:E7:B3:1F" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic8' diff --git a/labs/arm/virtual2.yaml b/labs/arm/virtual2.yaml new file mode 100644 index 00000000..f19a5de6 --- /dev/null +++ b/labs/arm/virtual2.yaml @@ -0,0 +1,147 @@ +############################################################################## +# Copyright (c) 2018 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### Enea ARM VIRTUAL 2 descriptor file ### + +version: 1.0 +details: + pod_owner: ENEA AB + contact: dan.lilliehorn@enea.com + lab: ENEA lab + location: Stockholm, Sweden + type: production + link: https://wiki.opnfv.org/display/pharos/Enea+Hosting +############################################################################## +jumphost: + name: jenkins-slave-arm-virtual2 + node: + type: baremetal + vendor: Cavium + model: ThunderX + arch: aarch64 + cpus: 1 + cpu_cflags: fp asimd evtstrm aes pmull sha1 sha2 crc32 + cores: 48 + memory: 128G + disks: + - name: disk1 + disk_capacity: 500G + disk_type: hdd + disk_interface: sata + disk_rotation: &diskrotation 7200 + os: ubuntu-16.04 + remote_params: &remote_params + type: ipmi + versions: + - 2.0 + user: admin + pass: admin + remote_management: + <<: *remote_params + address: 10.0.1.34 + mac_address: "00:00:00:00:00:00" + interfaces: + # Connected, used only for admin/PXE, enm5p144s0 + - mac_address: "68:05:ca:3d:93:0c" + speed: 1gb + features: 'dpdk|sriov' + name: 'nic1' + # Not connected for now, enm2p1s0f1 + - mac_address: "00:0f:b7:06:00:c0" + speed: 40gb + features: 'dpdk|sriov' + name: 'nic2' + # Connected, trunk for public, enm2p1s0f2 + - mac_address: "00:0f:b7:06:00:c1" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + # Connected, enm2p1s0f3 + - mac_address: "00:0f:b7:06:00:c2" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' +############################################################################## +nodes: + - name: node-1 + node: &nodeparams + # Fuel overrides certain params (e.g. cpus, mem) based on node role later + type: virtual + vendor: libvirt + model: virt + arch: aarch64 + cpus: 1 + cpu_cflags: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid + cores: 8 + memory: 6G + disks: &disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: 7200 + remote_management: &remotemgmt + type: libvirt + user: changeme + pass: changeme + address: 'qemu:///system' + interfaces: &interfaces + - name: 'nic1' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" # MACs will be assigned by libvirt + vlan: native + - name: 'nic2' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic3' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic4' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + ############################################################################ + - name: node-2 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-3 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-4 + node: *nodeparams + disks: &compute_disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + - name: 'disk2' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-5 + node: *nodeparams + disks: *compute_disks + remote_management: *remotemgmt + interfaces: *interfaces diff --git a/labs/bii/idf-pod1.yaml b/labs/bii/idf-pod1.yaml index 8c358a9c..00b6d126 100644 --- a/labs/bii/idf-pod1.yaml +++ b/labs/bii/idf-pod1.yaml @@ -1,33 +1,75 @@ +############################################################################## +# Copyright (c) 2018 BII-CFIEC and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## --- ### This is a BII POD1 Installer descriptor file ### idf: version: 0.1 + # NOTE: Temporarily disable Daisy check, since it requires 'storage' network + # to be defined in 'idf.net_config' below. + installer: ['apex', 'compass4nfv', 'fuel'] net_config: + oob: # IPMI management network + interface: 0 + ip-range: 192.168.20.200-192.168.20.205 + vlan: native + mask: 29 admin: interface: 0 - vlan: 0 + vlan: native network: 10.20.0.0 mask: 24 - gateway: 10.20.0.1 - dns: 10.20.0.1 mgmt: - interface: 0 - vlan: 102 - network: 192.168.102.0 - mask: 24 - storage: - interface: 0 + interface: 2 vlan: 101 network: 192.168.101.0 mask: 24 private: - interface: 0 - vlan: 103 - network: 192.168.103.0 + interface: 3 + vlan: 102-132 + network: 192.168.102.0 mask: 24 public: interface: 1 - vlan: 0 + vlan: native network: 192.168.20.0 mask: 24 + gateway: 192.168.20.1 + dns: + - 114.114.114.114 + - 8.8.8.8 + fuel: + jumphost: + bridges: + admin: 'br-pxe' + mgmt: 'br-ctl' + private: ~ + public: ~ + network: + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'eno1' + - 'eno2' + - 'eno3' + - 'eno4' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0000:01:00.0' + - '0000:01:00.1' + - '0000:02:00.0' + - '0000:02:00.1' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr diff --git a/labs/bii/pod1.yaml b/labs/bii/pod1.yaml index 117721b6..40ac58d4 100644 --- a/labs/bii/pod1.yaml +++ b/labs/bii/pod1.yaml @@ -1,7 +1,16 @@ -### This is a BII POD1 descriptor file ### +############################################################################## +# Copyright (c) 2018 BII-CFIEC and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## --- +### This is a BII POD1 descriptor file ### + +version: 1.0 details: - pod_owner: ylong@BII + pod_owner: ylong contact: ylong@biigroup.cn, zjtang@biigroup.cn lab: BII Pharos LAB location: BDA, Beijing, China @@ -11,158 +20,232 @@ details: jumphost: name: fuel node: - type: baremetal # can be virtual or baremetal + type: baremetal vendor: Dell Inc. model: powerEdge 720 arch: x86_64 cpus: 2 - cpu_cflags: haswell # add values based on CFLAGS in GCC - cores: 8 # physical cores, not including hyper-threads + cpu_cflags: haswell + cores: 4 memory: 16G - disks: # disk list - - name: 'disk1' # first disk - disk_capacity: 300G # volume - disk_type: hdd # several disk types possible - disk_interface: sas # several interface types possible - disk_rotation: 15000 # define rotation speed of disk - - name: 'disk2' # second disk - disk_capacity: 300G - disk_type: hdd - disk_interface: sas - disk_rotation: 15000 - - name: 'disk3' # third disk - disk_capacity: 300G - disk_type: hdd - disk_interface: sas - disk_rotation: 15000 - - name: 'disk4' # fourth disk - disk_capacity: 300G + disks: + - name: 'disk1' + disk_capacity: 1100G disk_type: hdd disk_interface: sas disk_rotation: 15000 - - name: 'disk5' # fifth disk - disk_capacity: 300G - disk_type: hdd - disk_interface: sas - disk_rotation: 15000 - os: centos-7.3 # operation system installed + os: ubuntu-16.04 remote_params: &remote_params type: ipmi versions: - 2.0 - user: - pass: + user: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAUnK7YuVSij4ALxIM+562DzeMEk0TaCoAOAcq + vHfnXEGI6IVpLtA/5d8y+tcmy82azpcNAIRvIGT08iEPwxo/Sa8MIIB1QFd5 + mC2I+pMhbowXmCUlU3m7gxDvsOYVkUYfxswtQoKUFSnG2mAZQA8L2Vpfbc2V + fWOOQlsNuJ4g7eN22bpODUDi5XzdFuBNUhRYNGQwGre4OUM6Qb+5QyXN8hKA + rHo7bI+36WWQSTdZHKXr9sJviQsWqAYXDRNIthdUbb8FlkAUdtV65eUB36hB + 7KEjbjK8aMpsQIIOjCmc/LONIFzkrKC2nGWP83iG++aWnoXW+hHSO9bGhfrt + 41I3JjA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBC+t7WDS6WRtLT3UTTx + wXGCgBBrhvF5qjnbDl55TN2fhb2k] + pass: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAtsyAgyyRp3U3uMkyG0tHSW0e1y7Qq3LCpIRs + E0K6745xTmVPMLzbL+8OpgBIieLFukZnWNoLtdoEfZlYbw4En5DSMpkkmWgi + 35329Bs2eIU4lNUtjFi6UvHMB+j+gvVpObRgn1EfC2ngbgognw94+aA2LBiZ + oWKIk7iRmtLTguZLd72mdV+a/Ukk7lMeYz4OF4c4myMZzk4c1F9L3VLYux0+ + xcbZw/WRZHgYg1YHONX2WNHTf91cyd282BG7rLNaY4mO7XWU9mpmqeWHjJ7N + fpwPEfwt8dJq2b+p0o1FDRyAEF375AmMfwqupDk33fecFj6elr4EMzeusrFh + RiV9wjA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBABjHF90Ke9WX+NZGzZ + MUPLgBDJhm3lONPvX22d5DFMpoXy] remote_management: <<: *remote_params - address: 192.168.20.200 + address: 192.168.20.200/24 mac_address: "44:A8:42:1A:68:78" - interfaces: # physical interface list - - mac_address: "44:a8:42:15:10:03" - address: 10.20.0.2 - name: 'nic1' - - mac_address: "44:a8:42:15:10:04" - address: 192.168.20.5 - name: 'nic2' -################################################### + interfaces: + - name: 'nic1' + address: 10.10.0.2/24 + mac_address: "44:a8:42:15:10:03" + vlan: native + - name: 'nic2' + address: 192.168.20.5/24 + mac_address: "44:a8:42:15:10:04" + vlan: native + - name: 'nic3' + address: 192.168.101.2/24 + mac_address: "44:a8:42:15:10:05" + vlan: 101 + - name: 'nic4' + mac_address: "44:a8:42:15:10:06" nodes: - - name: compute1 + - name: pod1-ctl01 node: &nodeparas type: baremetal vendor: Dell Inc. model: powerEdge 720 arch: x86_64 cpus: 2 - cpu_cflags: haswell # add values based on CFLAGS in GCC - cores: 8 # physical cores, not including hyper-threads + cpu_cflags: haswell + cores: 4 memory: 32G - disks: &disks_A # disk list - - name: 'disk1' # first disk - disk_capacity: 128G # volume - disk_type: ssd # several disk types possible - disk_interface: sas # several interface types possible - disk_rotation: 15000 # define rotation speed of disk - - name: 'disk2' # second disk - disk_capacity: 600G - disk_type: hdd - disk_interface: sas - disk_rotation: 15000 - - name: 'disk3' # third disk - disk_capacity: 600G - disk_type: hdd - disk_interface: sas - disk_rotation: 15000 - - name: 'disk4' # fourth disk - disk_capacity: 600G - disk_type: hdd + disks: &disks_A + - name: 'disk1' + disk_capacity: 128G + disk_type: ssd disk_interface: sas disk_rotation: 15000 - - name: 'disk5' # fifth disk - disk_capacity: 600G + - name: 'disk2' + disk_capacity: 2400G disk_type: hdd disk_interface: sas disk_rotation: 15000 remote_management: <<: *remote_params - address: 192.168.20.201 - mac_address: "44:A8:42:1A:70:BE" - interfaces: # physical interface list - - mac_address: "44:a8:42:14:ee:64" - address: 10.20.0.4 - name: 'nic1' - ######################################## - - name: compute2 + address: 192.168.20.203/24 + mac_address: "44:A8:42:1A:49:A5" + interfaces: + - name: 'nic1' + speed: 1gb + features: '' + address: 10.20.0.16/24 + mac_address: "44:a8:42:14:cd:0d" + vlan: native + - name: 'nic2' + speed: 1gb + features: '' + address: 192.168.20.16/24 + mac_address: "44:a8:42:14:cd:0e" + vlan: native + - name: 'nic3' + speed: 1gb + features: '' + address: 192.168.101.16/24 + mac_address: "44:a8:42:14:cd:0f" + vlan: 101 + - name: 'nic4' + speed: 1gb + features: '' + mac_address: "44:a8:42:14:cd:10" + - name: pod1-ctl02 node: *nodeparas disks: *disks_A remote_management: <<: *remote_params - address: 192.168.20.202 - mac_address: "44:A8:42:1A:76:26" + address: 192.168.20.204/24 + mac_address: "44:A8:42:1A:76:2C" interfaces: - - mac_address: "44:a8:42:14:cb:31" - address: 10.20.0.5 - name: 'nic1' - ######################################## - - name: controller1 + - name: 'nic1' + speed: 1gb + features: '' + address: 10.20.0.17/24 + mac_address: "44:a8:42:15:1b:e6" + vlan: native + - name: 'nic2' + speed: 1gb + features: '' + address: 192.168.20.17/24 + mac_address: "44:a8:42:15:1b:e7" + vlan: native + - name: 'nic3' + speed: 1gb + features: '' + address: 192.168.101.16/24 + mac_address: "44:a8:42:15:1b:e8" + vlan: 101 + - name: 'nic4' + speed: 1gb + features: '' + mac_address: "44:a8:42:15:1b:e9" + - name: pod1-ctl03 node: *nodeparas disks: *disks_A remote_management: <<: *remote_params - address: 192.168.20.203 - mac_address: "44:A8:42:1A:49:A5" + address: 192.168.20.205/24 + mac_address: "44:A8:42:13:D5:1B" interfaces: - - mac_address: "44:a8:42:14:cd:0d" - address: 10.20.0.6 - name: 'nic1' - - mac_address: "44:a8:42:14:cd:0e" - address: 192.168.20.12 - name: 'nic2' - ######################################## - - name: controller2 + - name: 'nic1' + speed: 1gb + features: '' + address: 10.20.0.18/24 + mac_address: "44:a8:42:14:fc:1a" + vlan: native + - name: 'nic2' + speed: 1gb + features: '' + address: 192.168.20.18/24 + mac_address: "44:a8:42:14:fc:1b" + vlan: native + - name: 'nic3' + speed: 1gb + features: '' + address: 192.168.101.18/24 + mac_address: "44:a8:42:14:fc:1c" + vlan: 101 + - name: 'nic4' + speed: 1gb + features: '' + mac_address: "44:a8:42:14:fc:1d" + - name: pod1-cmp01 node: *nodeparas disks: *disks_A remote_management: <<: *remote_params - address: 192.168.20.204 - mac_address: "44:A8:42:1A:76:2C" + address: 192.168.20.201/24 + mac_address: "44:A8:42:1A:70:BE" interfaces: - - mac_address: "44:a8:42:15:1b:e6" - address: 10.20.0.7 - name: 'nic1' - - mac_address: "44:a8:42:15:1b:e7" - address: 192.168.20.13 - name: 'nic2' - ######################################## - - name: controller3 + - name: 'nic1' + speed: 1gb + features: '' + address: 10.20.0.14/24 + mac_address: "44:a8:42:14:ee:64" + vlan: native + - name: 'nic2' + speed: 1gb + features: '' + address: 192.168.20.14/24 + mac_address: "44:a8:42:14:ee:65" + vlan: native + - name: 'nic3' + speed: 1gb + features: '' + address: 192.168.101.14/24 + mac_address: "44:a8:42:14:ee:66" + vlan: 101 + - name: 'nic4' + speed: 1gb + features: '' + mac_address: "44:a8:42:14:ee:67" + vlan: 102 + - name: pod1-cmp02 node: *nodeparas disks: *disks_A remote_management: <<: *remote_params - address: 192.168.20.205 - mac_address: "44:A8:42:13:D5:1B" + address: 192.168.20.202/24 + mac_address: "44:A8:42:1A:76:26" interfaces: - - mac_address: "44:a8:42:14:fc:1a" - address: 10.20.0.8 - name: 'nic1' - - mac_address: "44:a8:42:14:fc:1b" - address: 192.168.20.14 - name: 'nic2' + - name: 'nic1' + speed: 1gb + features: '' + address: 10.20.0.13/24 + mac_address: "44:a8:42:14:cb:31" + vlan: native + - name: 'nic2' + speed: 1gb + features: '' + address: 192.168.20.13/24 + mac_address: "44:a8:42:14:cb:32" + vlan: native + - name: 'nic3' + speed: 1gb + features: '' + address: 192.168.101.13/24 + mac_address: "44:a8:42:14:cb:33" + vlan: 101 + - name: 'nic4' + speed: 1gb + features: '' + mac_address: "44:a8:42:14:cb:34" + vlan: 102 diff --git a/labs/ericsson/idf-pod1.yaml b/labs/ericsson/idf-pod1.yaml index d9042544..c08016b2 100644 --- a/labs/ericsson/idf-pod1.yaml +++ b/labs/ericsson/idf-pod1.yaml @@ -10,11 +10,13 @@ idf: version: 0.1 + installer: ['apex', 'compass4nfv', 'daisy', 'fuel'] net_config: oob: interface: 0 ip-range: 172.16.1.16-172.16.1.21 vlan: native + mask: 29 admin: interface: 4 vlan: native @@ -24,6 +26,7 @@ idf: interface: 2 vlan: 81 network: 192.168.10.0 + ip-range: 192.168.10.10-192.168.10.254 # Some IPs are in use by lab infra mask: 24 storage: interface: 2 @@ -32,13 +35,14 @@ idf: mask: 24 private: interface: 3 - vlan: 1000 + vlan: 1000-1030 network: 192.168.2.0 mask: 24 public: interface: 2 vlan: 80 network: 100.64.200.0 + ip-range: 100.64.200.100-100.64.200.254 # Some IPs are in use by lab infra mask: 24 gateway: 100.64.200.1 dns: @@ -52,6 +56,8 @@ idf: private: ~ public: 'br-external' network: + ntp_strata_host1: 1.se.pool.ntp.org + ntp_strata_host2: 0.se.pool.ntp.org node: # Ordered-list, index should be in sync with node index in PDF - interfaces: &interfaces diff --git a/labs/ericsson/idf-pod2.yaml b/labs/ericsson/idf-pod2.yaml new file mode 100644 index 00000000..301241b6 --- /dev/null +++ b/labs/ericsson/idf-pod2.yaml @@ -0,0 +1,132 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ERICSSON POD 2 installer descriptor file ### +idf: + version: 0.1 + installer: ['apex', 'compass4nfv', 'daisy', 'osa'] + net_config: &net_config + admin: + interface: 2 + network: 192.168.122.0 # Untagged, 'PXE/Admin' on wiki, different IP + mask: 24 + mgmt: + interface: 1 + network: 172.29.236.0 + mask: 22 + storage: + interface: 3 + network: 172.29.240.0 # Tagged, not the same with 'storage' on wiki + mask: 22 + private: + interface: 4 + network: 172.29.242.0 # Tagged, not the same with 'private' on wiki + mask: 22 + public: + interface: 2 + network: 192.168.122.0 # Untagged, 'public' on wiki + mask: 24 + gateway: 192.168.122.1 + dns: + - 8.8.8.8 + - 8.8.4.4 + osa: &idf_osa + nodes_roles: + opnfv: [deployment] + node1: [controller] + node2: [compute, storage] + node3: [compute, storage] + node4: [controller] + node5: [controller] + groups: + openstack: + - controller + - compute + - storage + hostnames: + opnfv: opnfv + node1: controller00 + node2: compute00 + node3: compute01 + node4: controller01 + node5: controller02 + network: + # network mapping + network_mapping: + # Management network used by installer components to communicate + net-mgmt: admin + # Storage Network + net-storage: storage + # Internal network for communication between VNF + net-internal: private + # Public network for VNF remote acces (ext-net in Openstack) + net-vnf: public + deployment_host_interfaces: + # Ordered-list, index should be in sync with interface index in PDF + - 'eno49' + - 'ens1f0' + - 'ens1f1' + - 'ens2f0' + - 'ens2f1' + kubespray: &idf_kubespray + nodes_roles: + opnvf: [opnfv] + node1: [kube-master, etcd, vault] + node2: [kube-node] + node3: [kube-node] + node4: [kube-master, etcd, vault] + node5: [kube-master, etcd, vault] + groups: + k8s-cluster: + - kube-node + - kube-master + hostnames: + opnfv: opnfv + node1: master1 + node2: node1 + node3: node2 + node4: master2 + node5: master3 + + +xci: + pod_name: pod1 + net_config: *net_config + flavors: + mini: + - opnfv + - node1 + - node2 + noha: + - opnfv + - node1 + - node2 + - node3 + ha: + - opnfv + - node1 + - node2 + - node3 + - node4 + - node5 + + # net_config network to be used by the PXE + pxe_network: public + + # As the MAC of generated bridges are generated, we use a list of local + # bridges to create libvirt networks + jumphost_interfaces_bridges: + - name: virbr0 + ip: 192.168.122.1 + + extra_addresses: + opnfv: 192.168.122.2 + + installers: + osa: *idf_osa + kubespray: *idf_kubespray diff --git a/labs/ericsson/idf-virtual-pod1bl01.yaml b/labs/ericsson/idf-virtual-pod1bl01.yaml new file mode 100644 index 00000000..62db57d4 --- /dev/null +++ b/labs/ericsson/idf-virtual-pod1bl01.yaml @@ -0,0 +1,105 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ericsson-virtual-pod1bl01 Installer descriptor file ### + +idf: + version: 0.1 + net_config: + # NOTE: Network names are likely to change after the PDF spec is updated + oob: + interface: 0 + ip-range: ~ + vlan: native + mask: 24 + # All networks (except OOB) are virtual networks managed by `libvirt` + # Interface indexes are based on Fuel installer defaults + admin: + interface: 0 # when used, will be first vnet interface, untagged + vlan: native + network: 192.168.11.0 + mask: 24 + mgmt: + interface: 1 # when used, will be second vnet interface, untagged + vlan: native + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 4 # when used, will be fifth vnet interface, untagged + vlan: native + network: 192.168.20.0 + mask: 24 + private: + interface: 2 # when used, will be third vnet interface, untagged + vlan: 1000-1999 + network: 10.1.0.0 + mask: 24 + public: + interface: 3 # when used, will be fourth vnet interface, untagged + vlan: native + network: 10.16.0.0 + ip-range: 10.16.0.100-10.16.0.254 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.16.0.1 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: ~ + mgmt: ~ + private: ~ + public: ~ + network: + interface_mtu: 9000 + ntp_strata_host1: 1.se.pool.ntp.org + ntp_strata_host2: 0.se.pool.ntp.org + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'ens3' + - 'ens4' + - 'ens5' + - 'ens6' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0000:00:03.0' + - '0000:00:04.0' + - '0000:00:05.0' + - '0000:00:06.0' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + reclass: + node: + - compute_params: &compute_params + common: &compute_params_common + compute_hugepages_size: 2M + compute_hugepages_count: 5120 + compute_hugepages_mount: /mnt/hugepages_2M + dpdk: + <<: *compute_params_common + compute_dpdk_driver: uio + compute_ovs_pmd_cpu_mask: "0x6" + compute_ovs_dpdk_socket_mem: "3072" + compute_ovs_dpdk_lcore_mask: "0x8" + compute_ovs_memory_channels: "2" + dpdk0_driver: igb_uio + dpdk0_n_rxq: 2 + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params diff --git a/labs/ericsson/idf-virtual1.yaml b/labs/ericsson/idf-virtual1.yaml new file mode 100644 index 00000000..2a997c38 --- /dev/null +++ b/labs/ericsson/idf-virtual1.yaml @@ -0,0 +1,105 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ericsson-virtual1 Installer descriptor file ### + +idf: + version: 0.1 + net_config: + # NOTE: Network names are likely to change after the PDF spec is updated + oob: + interface: 0 + ip-range: ~ + vlan: native + mask: 24 + # All networks (except OOB) are virtual networks managed by `libvirt` + # Interface indexes are based on Fuel installer defaults + admin: + interface: 0 # when used, will be first vnet interface, untagged + vlan: native + network: 192.168.11.0 + mask: 24 + mgmt: + interface: 1 # when used, will be second vnet interface, untagged + vlan: native + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 4 # when used, will be fifth vnet interface, untagged + vlan: native + network: 192.168.20.0 + mask: 24 + private: + interface: 2 # when used, will be third vnet interface, untagged + vlan: 1000-1999 + network: 10.1.0.0 + mask: 24 + public: + interface: 3 # when used, will be fourth vnet interface, untagged + vlan: native + network: 10.16.0.0 + ip-range: 10.16.0.100-10.16.0.254 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.16.0.1 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: ~ + mgmt: ~ + private: ~ + public: ~ + network: + interface_mtu: 9000 + ntp_strata_host1: 1.se.pool.ntp.org + ntp_strata_host2: 0.se.pool.ntp.org + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'ens3' + - 'ens4' + - 'ens5' + - 'ens6' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0000:00:03.0' + - '0000:00:04.0' + - '0000:00:05.0' + - '0000:00:06.0' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + reclass: + node: + - compute_params: &compute_params + common: &compute_params_common + compute_hugepages_size: 2M + compute_hugepages_count: 5120 + compute_hugepages_mount: /mnt/hugepages_2M + dpdk: + <<: *compute_params_common + compute_dpdk_driver: uio + compute_ovs_pmd_cpu_mask: "0x6" + compute_ovs_dpdk_socket_mem: "3072" + compute_ovs_dpdk_lcore_mask: "0x8" + compute_ovs_memory_channels: "2" + dpdk0_driver: igb_uio + dpdk0_n_rxq: 2 + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params diff --git a/labs/ericsson/idf-virtual2.yaml b/labs/ericsson/idf-virtual2.yaml new file mode 100644 index 00000000..1b200778 --- /dev/null +++ b/labs/ericsson/idf-virtual2.yaml @@ -0,0 +1,105 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ericsson-virtual2 Installer descriptor file ### + +idf: + version: 0.1 + net_config: + # NOTE: Network names are likely to change after the PDF spec is updated + oob: + interface: 0 + ip-range: ~ + vlan: native + mask: 24 + # All networks (except OOB) are virtual networks managed by `libvirt` + # Interface indexes are based on Fuel installer defaults + admin: + interface: 0 # when used, will be first vnet interface, untagged + vlan: native + network: 192.168.11.0 + mask: 24 + mgmt: + interface: 1 # when used, will be second vnet interface, untagged + vlan: native + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 4 # when used, will be fifth vnet interface, untagged + vlan: native + network: 192.168.20.0 + mask: 24 + private: + interface: 2 # when used, will be third vnet interface, untagged + vlan: 1000-1999 + network: 10.1.0.0 + mask: 24 + public: + interface: 3 # when used, will be fourth vnet interface, untagged + vlan: native + network: 10.16.0.0 + ip-range: 10.16.0.100-10.16.0.254 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.16.0.1 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: ~ + mgmt: ~ + private: ~ + public: ~ + network: + interface_mtu: 9000 + ntp_strata_host1: 1.se.pool.ntp.org + ntp_strata_host2: 0.se.pool.ntp.org + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'ens3' + - 'ens4' + - 'ens5' + - 'ens6' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0000:00:03.0' + - '0000:00:04.0' + - '0000:00:05.0' + - '0000:00:06.0' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + reclass: + node: + - compute_params: &compute_params + common: &compute_params_common + compute_hugepages_size: 2M + compute_hugepages_count: 5120 + compute_hugepages_mount: /mnt/hugepages_2M + dpdk: + <<: *compute_params_common + compute_dpdk_driver: uio + compute_ovs_pmd_cpu_mask: "0x6" + compute_ovs_dpdk_socket_mem: "3072" + compute_ovs_dpdk_lcore_mask: "0x8" + compute_ovs_memory_channels: "2" + dpdk0_driver: igb_uio + dpdk0_n_rxq: 2 + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params diff --git a/labs/ericsson/idf-virtual3.yaml b/labs/ericsson/idf-virtual3.yaml new file mode 100644 index 00000000..86d7b3b0 --- /dev/null +++ b/labs/ericsson/idf-virtual3.yaml @@ -0,0 +1,105 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ericsson-virtual3 Installer descriptor file ### + +idf: + version: 0.1 + net_config: + # NOTE: Network names are likely to change after the PDF spec is updated + oob: + interface: 0 + ip-range: ~ + vlan: native + mask: 24 + # All networks (except OOB) are virtual networks managed by `libvirt` + # Interface indexes are based on Fuel installer defaults + admin: + interface: 0 # when used, will be first vnet interface, untagged + vlan: native + network: 192.168.11.0 + mask: 24 + mgmt: + interface: 1 # when used, will be second vnet interface, untagged + vlan: native + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 4 # when used, will be fifth vnet interface, untagged + vlan: native + network: 192.168.20.0 + mask: 24 + private: + interface: 2 # when used, will be third vnet interface, untagged + vlan: 1000-1999 + network: 10.1.0.0 + mask: 24 + public: + interface: 3 # when used, will be fourth vnet interface, untagged + vlan: native + network: 10.16.0.0 + ip-range: 10.16.0.100-10.16.0.254 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.16.0.1 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: ~ + mgmt: ~ + private: ~ + public: ~ + network: + interface_mtu: 9000 + ntp_strata_host1: 1.se.pool.ntp.org + ntp_strata_host2: 0.se.pool.ntp.org + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'ens3' + - 'ens4' + - 'ens5' + - 'ens6' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0000:00:03.0' + - '0000:00:04.0' + - '0000:00:05.0' + - '0000:00:06.0' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + reclass: + node: + - compute_params: &compute_params + common: &compute_params_common + compute_hugepages_size: 2M + compute_hugepages_count: 5120 + compute_hugepages_mount: /mnt/hugepages_2M + dpdk: + <<: *compute_params_common + compute_dpdk_driver: uio + compute_ovs_pmd_cpu_mask: "0x6" + compute_ovs_dpdk_socket_mem: "3072" + compute_ovs_dpdk_lcore_mask: "0x8" + compute_ovs_memory_channels: "2" + dpdk0_driver: igb_uio + dpdk0_n_rxq: 2 + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params diff --git a/labs/ericsson/idf-virtual4.yaml b/labs/ericsson/idf-virtual4.yaml new file mode 100644 index 00000000..6d93173b --- /dev/null +++ b/labs/ericsson/idf-virtual4.yaml @@ -0,0 +1,105 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ericsson-virtual4 Installer descriptor file ### + +idf: + version: 0.1 + net_config: + # NOTE: Network names are likely to change after the PDF spec is updated + oob: + interface: 0 + ip-range: ~ + vlan: native + mask: 24 + # All networks (except OOB) are virtual networks managed by `libvirt` + # Interface indexes are based on Fuel installer defaults + admin: + interface: 0 # when used, will be first vnet interface, untagged + vlan: native + network: 192.168.11.0 + mask: 24 + mgmt: + interface: 1 # when used, will be second vnet interface, untagged + vlan: native + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 4 # when used, will be fifth vnet interface, untagged + vlan: native + network: 192.168.20.0 + mask: 24 + private: + interface: 2 # when used, will be third vnet interface, untagged + vlan: 1000-1999 + network: 10.1.0.0 + mask: 24 + public: + interface: 3 # when used, will be fourth vnet interface, untagged + vlan: native + network: 10.16.0.0 + ip-range: 10.16.0.100-10.16.0.254 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.16.0.1 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: ~ + mgmt: ~ + private: ~ + public: ~ + network: + interface_mtu: 9000 + ntp_strata_host1: 1.se.pool.ntp.org + ntp_strata_host2: 0.se.pool.ntp.org + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'ens3' + - 'ens4' + - 'ens5' + - 'ens6' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0000:00:03.0' + - '0000:00:04.0' + - '0000:00:05.0' + - '0000:00:06.0' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + reclass: + node: + - compute_params: &compute_params + common: &compute_params_common + compute_hugepages_size: 2M + compute_hugepages_count: 5120 + compute_hugepages_mount: /mnt/hugepages_2M + dpdk: + <<: *compute_params_common + compute_dpdk_driver: uio + compute_ovs_pmd_cpu_mask: "0x6" + compute_ovs_dpdk_socket_mem: "3072" + compute_ovs_dpdk_lcore_mask: "0x8" + compute_ovs_memory_channels: "2" + dpdk0_driver: igb_uio + dpdk0_n_rxq: 2 + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params diff --git a/labs/ericsson/idf-virtual5.yaml b/labs/ericsson/idf-virtual5.yaml new file mode 100644 index 00000000..3d6a366a --- /dev/null +++ b/labs/ericsson/idf-virtual5.yaml @@ -0,0 +1,105 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ericsson-virtual5 Installer descriptor file ### + +idf: + version: 0.1 + net_config: + # NOTE: Network names are likely to change after the PDF spec is updated + oob: + interface: 0 + ip-range: ~ + vlan: native + mask: 24 + # All networks (except OOB) are virtual networks managed by `libvirt` + # Interface indexes are based on Fuel installer defaults + admin: + interface: 0 # when used, will be first vnet interface, untagged + vlan: native + network: 192.168.11.0 + mask: 24 + mgmt: + interface: 1 # when used, will be second vnet interface, untagged + vlan: native + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 4 # when used, will be fifth vnet interface, untagged + vlan: native + network: 192.168.20.0 + mask: 24 + private: + interface: 2 # when used, will be third vnet interface, untagged + vlan: 1000-1999 + network: 10.1.0.0 + mask: 24 + public: + interface: 3 # when used, will be fourth vnet interface, untagged + vlan: native + network: 10.16.0.0 + ip-range: 10.16.0.100-10.16.0.254 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.16.0.1 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: ~ + mgmt: ~ + private: ~ + public: ~ + network: + interface_mtu: 9000 + ntp_strata_host1: 1.se.pool.ntp.org + ntp_strata_host2: 0.se.pool.ntp.org + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'ens3' + - 'ens4' + - 'ens5' + - 'ens6' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0000:00:03.0' + - '0000:00:04.0' + - '0000:00:05.0' + - '0000:00:06.0' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + reclass: + node: + - compute_params: &compute_params + common: &compute_params_common + compute_hugepages_size: 2M + compute_hugepages_count: 5120 + compute_hugepages_mount: /mnt/hugepages_2M + dpdk: + <<: *compute_params_common + compute_dpdk_driver: uio + compute_ovs_pmd_cpu_mask: "0x6" + compute_ovs_dpdk_socket_mem: "3072" + compute_ovs_dpdk_lcore_mask: "0x8" + compute_ovs_memory_channels: "2" + dpdk0_driver: igb_uio + dpdk0_n_rxq: 2 + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params diff --git a/labs/ericsson/pod1.yaml b/labs/ericsson/pod1.yaml index ae04b309..5059eabf 100644 --- a/labs/ericsson/pod1.yaml +++ b/labs/ericsson/pod1.yaml @@ -8,6 +8,7 @@ --- ### POD descriptor file ### +version: 1.0 details: pod_owner: Jose Lausuch contact: jose.lausuch@ericsson.com @@ -39,8 +40,26 @@ jumphost: versions: - 1.0 - 2.0 - user: - pass: + user: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAuQkYMXyWaXfQQUhqa1uKr3idY/TDnYF+fMyb + uuI1EFGnqXyJyY5C6CxyR61sTBrni49LPh/EmuLWzv0SLclJYnIfSOQrCbO5 + Sy4IFen6eMGd4x8OLLN0cQBSRnpxFRnmGnnqdLjcZYDYSfvP8U0vE46cRFM+ + PWRBMJm9+2iz/+wPY8z1aqQ03YycSgKo7R7hEXlarqjJexr/mnP+WLXnz/yN + qi0/E9q93X8e0JnQnxRG69K/AOih4pjW4kW8T53JbFmSq5whTdF7SpGAsUqt + +5pr5Bs/9yMk9g00XqDmhiCNlNO8ADSDKW1YWQXWHQFMazwZI4GipQA9P/I6 + CXRrKTA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBCtE4yYqripA3lKyuS4 + O7T2gBBL83JWGyHgxbluxLakRfZx] + pass: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAcNPG79QTsU1TDQZBWMENe+jI9rOfqabAiXJb + K+fbSVRY9gUTis2Bxaq/fWq4VGycPDfeZIKfGK5lgwaxd+yWbfHpHU2Itfav + L5s7zoH8yCk6vvfdTGEa+rM/CupqMRF0l/N/bFHMjf1TpUycw37KfaEcpV8T + /+ZJdpNCt+C5n67liLWr/fIGtcZB7HVFlIJOfniVoF9EfSwrNkKAJ5vYSAGe + KYhqgbQ1EFWf9/dJdAq0A4HuKixiMpc6qOX/moNTLTRPd6jN2veT7t4blqZM + cQU8Y3avbnAurd6Bu5i52d9kGebkUfYqUnkNCzyObi6WU5ZuJ8oxdzcQghb3 + sIRM3jA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDA0e139hbToTK8gZ1/ + UoEfgBDHho1xQ2fi5kh1g0FyFTpw] remote_management: <<: *remoteparas address: 172.16.1.21/24 @@ -191,7 +210,7 @@ nodes: remote_management: <<: *remoteparas address: 172.16.1.19/24 - mac_address: "9C:B6:54:8E:C7:F0" + mac_address: "FC:15:B4:12:97:64" interfaces: - name: 'nic1' speed: 10gb diff --git a/labs/ericsson/pod2.yaml b/labs/ericsson/pod2.yaml index 8814c42d..5131ff95 100644 --- a/labs/ericsson/pod2.yaml +++ b/labs/ericsson/pod2.yaml @@ -1,6 +1,7 @@ --- ### POD descriptor file ### +version: 1.0 details: pod_owner: Jose Lausuch contact: jose.lausuch@ericsson.com @@ -32,160 +33,254 @@ jumphost: versions: - 1.0 - 2.0 - user: - pass: + user: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAZ+KIpufJFbXv6vcsevPYdhO2lBkYCnmoMKNa + lwDsynavzbIDeZmUlpf8xCOu/f7/VQfQdJCd6aZSScALlPSYgr39b0SPPfnr + Kx3jfOZnu8SEK+UJIalvebApmMdKM/vaKTWENV5PXyGcYwf8Q2lVxyXpxLVs + /FkDg1kB2VpdYaVfseY98LgLkP06uyfBPXH189BlQrxZcw3Af64BYgWfpDDt + w3RzIGCxAOMMZ8lEOnY4ofrsWaQA5YH12ezOT3Mwd/wkOuqcU19fOYaeS9Ou + 050m6H9DJDnR5btjLIrjjKINp5Nf6hHG5mngUc5JVdRKNvD0ONBi6Bj0cvGF + STfaXTA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDSD+x9ybRnBdCQaY7n + aDlygBA4t2kc8UOwZYE6ZZaFUgl1] + pass: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAkHaGqpTmg+YSLPS5AwhB1N6MBA9cXTA1oacT + 8bY1aLBi7HKbacJQjHOfr2FoIAABkgV7N+BXKfebMighfcDC9XtKGYnV3tCD + XpreNZgX8NmVaYOLP6sFkAk53oYljswKOVVUrAqXplZx4kBXYm0Az2beGg5J + 5LRNwu9Eh4SRYN4dFN/XKQMtsQzKjMWTBLde9snrbhYfOxSsAR0B4FD7WWik + viKQY82C6C3KbcBeESMPE/lgBj7KIPbYkpzk9N5GafK+XkUS2aopAAkQFGll + 60Y0/9LOwPzItCB1q/kEENgz1aw/nHeH3xQsErwepuZiW3SkMncPQ9L5Q5PR + hlricTA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBB8T/wzhjtvtwZ+Iz2Y + SKM7gBBWbUmwjBdGX6aurCiyVGv2] remote_management: <<: *remoteparas - address: 172.16.2.11/24 + address: 172.16.2.11 mac_address: "58:20:B1:01:8A:F2" interfaces: + - name: 'nic0' + speed: 1gb + features: 'dpdk|sriov' + address: "192.168.122.2" + mac_address: "ec:b1:d7:a1:a1:10" + vlan: native - name: 'nic1' speed: 10gb features: 'dpdk|sriov' - address: 100.64.201.5/24 + address: "172.29.236.10" mac_address: "5c:b9:01:8b:9f:e8" - vlan: 84 + vlan: native - name: 'nic2' speed: 10gb features: 'dpdk|sriov' - address: 100.64.201.5/24 + address: "192.168.122.2" mac_address: "5c:b9:01:8b:9f:e9" vlan: native - name: 'nic3' speed: 10gb features: 'dpdk|sriov' - address: 172.16.0.248/16 + address: "172.29.240.10" mac_address: "5c:b9:01:8b:9f:ec" - vlan: native + vlan: 3010 - name: 'nic4' speed: 10gb features: 'dpdk|sriov' - address: 172.16.0.248/16 + address: "172.29.242.10" mac_address: "5c:b9:01:8b:9f:ed" - vlan: native + vlan: 3010 ############################################################################## nodes: - - name: CI-ERICSSON-POD2-NODE1 + - name: node1 node: *nodeparams disks: *disks remote_management: <<: *remoteparas - address: 172.16.2.12/24 + address: 172.16.2.12 mac_address: "58:20:B1:01:8B:F0" interfaces: + - name: 'nic0' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "ec:b1:d7:a2:44:a0" + address: "192.168.122.3" + vlan: native - name: 'nic1' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:a6:94" + address: "172.29.236.11" + vlan: native - name: 'nic2' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:a6:95" + address: "192.168.122.3" + vlan: native - name: 'nic3' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:a6:80" + address: "172.29.240.11" + vlan: 3010 - name: 'nic4' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:a6:81" + address: "172.29.242.11" + vlan: 3010 ############################################################################ - - name: CI-ERICSSON-POD2-NODE2 + - name: node2 node: *nodeparams disks: *disks remote_management: <<: *remoteparas - address: 172.16.2.13/24 + address: 172.16.2.13 mac_address: "58:20:B1:01:8E:FC" interfaces: + - name: 'nic0' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "ec:b1:d7:a2:44:80" + address: "192.168.122.4" + vlan: native - name: 'nic1' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:a6:30" + address: "172.29.236.12" + vlan: native - name: 'nic2' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:a6:31" + address: "192.168.122.4" + vlan: native - name: 'nic3' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:99:64" + address: "172.29.240.12" + vlan: 3010 - name: 'nic4' speed: 10gb features: 'dpdk|sriov' - mac_address: "5c:b9:01:8b:99:65" # second port, no connection + mac_address: "5c:b9:01:8b:99:65" + address: "172.29.242.12" + vlan: 3010 ############################################################################ - - name: CI-ERICSSON-POD2-NODE3 + - name: node3 node: *nodeparams disks: *disks remote_management: <<: *remoteparas - address: 172.16.2.14/24 + address: 172.16.2.14 mac_address: "58:20:B1:01:8D:32" interfaces: + - name: 'nic0' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "ec:b1:d7:a2:43:c0" + address: "192.168.122.5" + vlan: native - name: 'nic1' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:9d:4c" + address: "172.29.236.13" + vlan: native - name: 'nic2' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:9d:4d" + address: "192.168.122.5" + vlan: native - name: 'nic3' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:9d:6c" + address: "172.29.240.13" + vlan: 3010 - name: 'nic4' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:9d:6d" + address: "172.29.242.13" + vlan: 3010 ############################################################################ - - name: CI-ERICSSON-POD2-NODE4 + - name: node4 node: *nodeparams disks: *disks remote_management: <<: *remoteparas - address: 172.16.2.15/24 + address: 172.16.2.15 mac_address: "58:20:B1:01:8B:FC" interfaces: + - name: 'nic0' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "ec:b1:d7:a1:8b:d0" + address: "192.168.122.6" + vlan: native - name: 'nic1' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:a5:fc" + address: "172.29.236.14" + vlan: native - name: 'nic2' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:a5:fd" + address: "192.168.122.6" + vlan: native - name: 'nic3' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:a6:08" + address: "172.29.240.14" + vlan: 3010 - name: 'nic4' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:a6:09" + address: "172.29.242.14" + vlan: 3010 ############################################################################ - - name: CI-ERICSSON-POD2-NODE5 + - name: node5 node: *nodeparams disks: *disks remote_management: <<: *remoteparas - address: 172.16.2.16/24 + address: 172.16.2.16 mac_address: "58:20:B1:01:8F:EA" interfaces: + - name: 'nic0' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "ec:b1:d7:a1:bd:60" + address: "192.168.122.7" + vlan: native - name: 'nic1' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:a6:e8" + address: "172.29.236.15" + vlan: native - name: 'nic2' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:a6:e9" + address: "192.168.122.7" + vlan: native - name: 'nic3' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:97:14" + address: "172.29.240.15" + vlan: 3010 - name: 'nic4' speed: 10gb features: 'dpdk|sriov' mac_address: "5c:b9:01:8b:97:15" + address: "172.29.242.15" + vlan: 3010 diff --git a/labs/ericsson/virtual-pod1bl01.yaml b/labs/ericsson/virtual-pod1bl01.yaml new file mode 100644 index 00000000..e565d54e --- /dev/null +++ b/labs/ericsson/virtual-pod1bl01.yaml @@ -0,0 +1,170 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ericsson-virtual-pod1bl01 POD descriptor file ### + +version: 1.0 +details: + pod_owner: Dianfeng Du + contact: dianfeng.du@ericsson.com + lab: Ericsson + location: Rosersberg, Sweden + type: production + link: https://wiki.opnfv.org/display/pharos/Ericsson+Hosting +############################################################################## +jumphost: + name: ericsson-virtual-pod1bl01 + node: &jumpparams + type: baremetal + vendor: HP + model: ProLiant BL460c Gen8 + arch: x86_64 + cpus: 2 + cpu_cflags: ivybridge + cores: 10 + memory: 64G + disks: + - name: 'disk1' + disk_capacity: 800G + disk_type: hdd + disk_interface: scsi + disk_rotation: &diskrotation 15000 + os: ubuntu-16.04 + remote_params: &remoteparas + type: ipmi + versions: + - 1.0 + - 2.0 + user: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEALPkR/vkbjmLE/rA1i7SP1IOyHTrfwu9GvoqB + 0FyW7YTsN0aJAzoxkV7MG5qCEV6c6HQvwzXIlhPHkdQ24bAR4VRlOM+fpLnf + Rfex4/XpdT+tpV6maluefRBL4FSeac9B6XQ3ALwx019DPtILEJJ0ueUippXO + eR2Nkx5aEF9T97vLxvgUyRoAHQ26TMkUDMu+VjKO/zgYZoi8usn8mqdXLDie + jOeeDX/R2vF6bMOxjkda4FnNAJz0iennuV06IgyB5cnKY0K4sqRkH5418GV+ + J+l5YELcTPtDaoNFDRdJgBQi2D8QFn00FX+bX1pqVzNktPrRBB3BKBeyjdIJ + Fx+m7jA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBBaStL9eL/te0mPFTBJ + BaldgBD3BywLaQZpEPZKKZwR+1Hl] + pass: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAC/FDzRD/3jWyEuFNmQ2eXZff46rvKr9DrSn5 + yaLdOaSWLsoxYljwCzagzgtjr37VkjizZlRcwf/yXcDTTIGASUFCkZM8P2LS + OksmEBZS2JlaTSCmkEp3vu494/7NWtAHs74cxGOybt5LhyEwMFRL0etrY/6h + Y2UWwD/oRv0axH8SNUS+QMOuEDaTbDTl7iOwAbP90qkttZD6tUUb0obnVUh9 + UAhbrUfO8CcRYvtWOyF9SmRaL0vfoirczWL68TwrVSyEsJ0mrZO5xgKtPmDD + KGCTSr3R09fR3QnVq3Y0ysw62cFx2tJ5M88sHbU3PZMEzUwK6PyxZYcAHC4j + jdBQ8DA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBA51b+Wam6rkCgCqXEC + WA0ugBBPILXqYWqCvFANFX+cFj5q] + remote_management: + <<: *remoteparas + address: 172.16.1.11/24 + mac_address: "14:58:D0:5D:AB:47" + interfaces: + - name: 'nic1' + speed: 10gb + features: 'dpdk|sriov' + address: 100.64.215.10/24 + mac_address: "38:ea:a7:17:6a:34" + - name: 'nic2' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:17:6a:35" + - name: 'nic3' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:17:6a:c4" + - name: 'nic4' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:17:6a:c5" + - name: 'nic5' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "14:58:D0:54:7A:D8" + - name: 'nic6' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "14:58:D0:54:7A:DC" +############################################################################## +nodes: + - name: node-1 + node: &nodeparams + <<: *jumpparams + # Fuel overrides certain params (e.g. cpus, mem) based on node role later + type: virtual + vendor: libvirt + model: virt + cpus: 1 + cores: 4 + memory: 6G + disks: &disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: &remotemgmt + type: libvirt + user: changeme + pass: changeme + address: 'qemu:///system' + interfaces: &interfaces + - name: 'nic1' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" # MACs will be assigned by libvirt + vlan: native + - name: 'nic2' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic3' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic4' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + ############################################################################ + - name: node-2 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-3 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-4 + node: *nodeparams + disks: &compute_disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + - name: 'disk2' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-5 + node: *nodeparams + disks: *compute_disks + remote_management: *remotemgmt + interfaces: *interfaces diff --git a/labs/ericsson/virtual1.yaml b/labs/ericsson/virtual1.yaml new file mode 100644 index 00000000..57f855bc --- /dev/null +++ b/labs/ericsson/virtual1.yaml @@ -0,0 +1,170 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ericsson-virtual1 POD descriptor file ### + +version: 1.0 +details: + pod_owner: Dianfeng Du + contact: dianfeng.du@ericsson.com + lab: Ericsson + location: Rosersberg, Sweden + type: production + link: https://wiki.opnfv.org/display/pharos/Ericsson+Hosting +############################################################################## +jumphost: + name: ericsson-virtual1 + node: &jumpparams + type: baremetal + vendor: HP + model: ProLiant BL460c Gen8 + arch: x86_64 + cpus: 2 + cpu_cflags: ivybridge + cores: 10 + memory: 64G + disks: + - name: 'disk1' + disk_capacity: 800G + disk_type: hdd + disk_interface: scsi + disk_rotation: &diskrotation 15000 + os: ubuntu-16.04 + remote_params: &remoteparas + type: ipmi + versions: + - 1.0 + - 2.0 + user: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAAs3kLIVkEqhUWd/pfTCGlq2uau+dzvox/HXY + G6ccXNZfwFV1mV1z7S0Bg5NME/xF2PU4sUkk9wbK/+yYG8CF6tHCzJMIy6wO + fOfW5rzmM56GFRqsc0rr5qAVpRrOVNiLjiheAwmyVzfRWq0efLayflg3pnZm + j4Z1Uad9YVPeovD8zYsnNWQktaIKwX1TBAg9awZ7dRX43tJthwRNSBU+t3XJ + wiMtbJIOeLKpCQ+DoQ//was7juO82oZXcAz/ds7Ec1/8Vh4qB2XcURzgM7tJ + Gj5U2OXC0pCvH9PKih93OTIGqlboyOn7kqLXN1cIdd+I/OoO/lLpjyCsLmDP + GZhoXDA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBBQUeVPp2xAdVKUvwCg + B9rcgBC8DoeAeBhrJ/KJmCPVjSF+] + pass: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAQSVWy2cbhjfPeMfXjsrOMyvjDSCQY3Xj+DvK + bp1uBqYbgoJXjaLcU/OVTrJqUTC6aA7CZuFeXbqcc+xay2gznXju2o+gB/wk + wNo0p6bfLsGbqDgO1NIGm6KHX2sHsgFUxmOZB3K63PrNEdQRdK0F0rxg9es8 + am0sHEdeteG91rVgHj1FyEaSH1R5xC5Rm4l/AIcGTnhPtGi9gDVdik/zHUh1 + mDDwwIxlhsFCK7B8BJxIXnQe+KdaRRbbdusDafoOgQMpefmNxusr4ljaX0vp + 7WXFtikERCUy6MCZKU55tSTu6sMeSO44tw419EKGEhsAnELIxWoYKiUnM/vB + a3XIujA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBBLLgA3biEw8bloqg38 + m+WpgBBgGzF7DTMsUBVS+pa2DUbI] + remote_management: + <<: *remoteparas + address: 172.16.1.22/24 + mac_address: "9C:B6:54:8E:D7:80" + interfaces: + - name: 'nic1' + speed: 10gb + features: 'dpdk|sriov' + address: 100.64.202.5/24 + mac_address: "38:ea:a7:8e:16:c8" + - name: 'nic2' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:8e:16:c9" + - name: 'nic3' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:8e:17:e4" + - name: 'nic4' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:8e:17:e5" + - name: 'nic5' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "9C:B6:54:89:BD:18" + - name: 'nic6' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "9C:B6:54:89:BD:1C" +############################################################################## +nodes: + - name: node-1 + node: &nodeparams + <<: *jumpparams + # Fuel overrides certain params (e.g. cpus, mem) based on node role later + type: virtual + vendor: libvirt + model: virt + cpus: 1 + cores: 4 + memory: 6G + disks: &disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: &remotemgmt + type: libvirt + user: changeme + pass: changeme + address: 'qemu:///system' + interfaces: &interfaces + - name: 'nic1' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" # MACs will be assigned by libvirt + vlan: native + - name: 'nic2' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic3' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic4' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + ############################################################################ + - name: node-2 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-3 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-4 + node: *nodeparams + disks: &compute_disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + - name: 'disk2' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-5 + node: *nodeparams + disks: *compute_disks + remote_management: *remotemgmt + interfaces: *interfaces diff --git a/labs/ericsson/virtual2.yaml b/labs/ericsson/virtual2.yaml new file mode 100644 index 00000000..cab58ee4 --- /dev/null +++ b/labs/ericsson/virtual2.yaml @@ -0,0 +1,170 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ericsson-virtual2 POD descriptor file ### + +version: 1.0 +details: + pod_owner: Dianfeng Du + contact: dianfeng.du@ericsson.com + lab: Ericsson + location: Rosersberg, Sweden + type: production + link: https://wiki.opnfv.org/display/pharos/Ericsson+Hosting +############################################################################## +jumphost: + name: ericsson-virtual2 + node: &jumpparams + type: baremetal + vendor: HP + model: ProLiant BL460c Gen8 + arch: x86_64 + cpus: 2 + cpu_cflags: ivybridge + cores: 10 + memory: 64G + disks: + - name: 'disk1' + disk_capacity: 800G + disk_type: hdd + disk_interface: scsi + disk_rotation: &diskrotation 15000 + os: ubuntu-16.04 + remote_params: &remoteparas + type: ipmi + versions: + - 1.0 + - 2.0 + user: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAAroWc9yjyHzrNX53MKycctdvYntD/EQoA6x6 + hOFcyQZp8Kkeu164EZ3XxFN2uJ59oSj4YRXXGamEe7CBDZn+QugArGc2tt3h + Ujsad9FW9WRBO+AqF2ZrWBA5bj0ArflnBBsdLQywNrnDnco4H7XbTTl5MtTQ + XJllUBve9Jly918mHA86Dsi3BlOn/M3iE8TeOWcQ8Ip83mgq1MlIERr0kIy9 + pVpsi87Xap+Sxebc83dn8BsZ6vl01QLLoPRAqgOtkrjvDp09XLB2MGZaOx7t + fEtJcdauRXjL/pnw4lqxaIK9TLoPewzVK7u5joOiTGGD6wtyd6/G4z2ujcQJ + bU2ZiDA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBBQVQ9dnzBdnwa1m2Kr + bmESgBC2/rlVIctf0KcSFZE9xFY1] + pass: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAceABHBxWIAfLtPeNf3a5RCbjgoIm34Rgbfh4 + 9Ch272ahZpT4USuoxG1jMTCMA+dukSlsMo04cK6j1g6Epupszr1qGCJYpg2E + OENsC1GLokWPufe2rskUF7gZxd1XoUBq7J+ga7Grz167MAOez0aE3AgftadQ + 8I3QNI/YX8q4s6xWZxe7r2gF+iFVaRatS0yUgex0rX9qOcG7VTNGc+vPKfIQ + XRF/xJi1nkmxde3haHYirXHHUbXHnm2/WrDYrALTLPGPU0W+BTUs4F4lfhDb + n1Vx94NtV+u43luxIRSkekaZCuH+/s/poxqu8jButheEqEZMfZ34vu0vdKMK + iXyUBDA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDBOx/+ZJsIIcMMefgU + xK/6gBBorR0SDEFAyb4p0pd7SfnD] + remote_management: + <<: *remoteparas + address: 172.16.1.23/24 + mac_address: "9C:B6:54:8E:B7:09" + interfaces: + - name: 'nic1' + speed: 10gb + features: 'dpdk|sriov' + address: 100.64.203.5/24 + mac_address: "38:ea:a7:8f:53:74" + - name: 'nic2' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:8f:53:75" + - name: 'nic3' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:8f:53:6c" + - name: 'nic4' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:8f:53:6d" + - name: 'nic5' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "9C:B6:54:8A:04:C8" + - name: 'nic6' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "9C:B6:54:8A:04:CC" +############################################################################## +nodes: + - name: node-1 + node: &nodeparams + <<: *jumpparams + # Fuel overrides certain params (e.g. cpus, mem) based on node role later + type: virtual + vendor: libvirt + model: virt + cpus: 1 + cores: 4 + memory: 6G + disks: &disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: &remotemgmt + type: libvirt + user: changeme + pass: changeme + address: 'qemu:///system' + interfaces: &interfaces + - name: 'nic1' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" # MACs will be assigned by libvirt + vlan: native + - name: 'nic2' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic3' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic4' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + ############################################################################ + - name: node-2 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-3 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-4 + node: *nodeparams + disks: &compute_disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + - name: 'disk2' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-5 + node: *nodeparams + disks: *compute_disks + remote_management: *remotemgmt + interfaces: *interfaces diff --git a/labs/ericsson/virtual3.yaml b/labs/ericsson/virtual3.yaml new file mode 100644 index 00000000..d4011712 --- /dev/null +++ b/labs/ericsson/virtual3.yaml @@ -0,0 +1,170 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ericsson-virtual3 POD descriptor file ### + +version: 1.0 +details: + pod_owner: Dianfeng Du + contact: dianfeng.du@ericsson.com + lab: Ericsson + location: Rosersberg, Sweden + type: production + link: https://wiki.opnfv.org/display/pharos/Ericsson+Hosting +############################################################################## +jumphost: + name: ericsson-virtual3 + node: &jumpparams + type: baremetal + vendor: HP + model: ProLiant BL460c Gen8 + arch: x86_64 + cpus: 2 + cpu_cflags: ivybridge + cores: 10 + memory: 64G + disks: + - name: 'disk1' + disk_capacity: 800G + disk_type: hdd + disk_interface: scsi + disk_rotation: &diskrotation 15000 + os: ubuntu-16.04 + remote_params: &remoteparas + type: ipmi + versions: + - 1.0 + - 2.0 + user: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAW9xsuZIaMrtyFNX+kmgZ6G5TV2W/Yrnh0rB9 + JC17tjEQSlHD9G1VaIqFWInlBf3AVZuLBE6DJBNK8nIxurR0AUAvs5+t9WZD + RhNF9uEFFdX038gK56otTluDijjoIrwSOZvqPc/cZcxIuadlg01fuKNVmCT9 + /mTeWgyRHryJ/OzuO4OON15U8Ed3ffvdphjs3IHbQlc6ylNWnr1BIvWPuPvH + LtOSxmfivoBPpEHVwsJO92WoeNu3+mps4O+okUFI5ToyPGhUvfO1VdGEDrBg + TgjLixsWrqA8RB1Nf1C2du1dIulv82IMlq0qHDJWy4AR+RSwRpOeeWb6O9W0 + 746e9TA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBD6rNLcW8y8NWcxgemu + w/HAgBCFKurNj+4kAytFQ3CG29SM] + pass: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEADP87YPoTA+BhT6sgaAVJnpbbBrTCc16luuJw + UvSCPTa54Qq3L/3Q0HVb1PJntVKM4ldU/YaFsczYCzTXFE/XcYVTMEbbIudX + j8l71agdfGTlHn3fA2BQFAAz+GOuMV0eBwBpwiYAeQTd178c1/L7l8HNVEHY + DUPN7xXXog7P/2UR1oo90JZDfB9bv4oirOma2YQUaGEiJZqvs1xAui0ZEYj0 + OGfpDVP9k5nR7tL3J2nDxoOJOBiMpG6+4GpyyxckS3ZSUf7CuT+dAsMX96JS + qzxdMMk12VEHCGf5udI744ARfXP0z0TZy9b1x4bHdO0Xwm5J4I/srX/U4TOX + ylAlFTA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAyLCfIpXiYn5L1aJBK + oNJ8gBByECriHR0ou3/1J+aBXSYE] + remote_management: + <<: *remoteparas + address: 172.16.1.24/24 + mac_address: "A4:5D:36:FE:78:D0" + interfaces: + - name: 'nic1' + speed: 10gb + features: 'dpdk|sriov' + address: 100.64.204.5/24 + mac_address: "38:ea:a7:8f:07:0c" + - name: 'nic2' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:8f:07:0d" + - name: 'nic3' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:8e:16:c4" + - name: 'nic4' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:8e:16:c5" + - name: 'nic5' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "9C:B6:54:8A:F0:50" + - name: 'nic6' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "9C:B6:54:8A:F0:54" +############################################################################## +nodes: + - name: node-1 + node: &nodeparams + <<: *jumpparams + # Fuel overrides certain params (e.g. cpus, mem) based on node role later + type: virtual + vendor: libvirt + model: virt + cpus: 1 + cores: 4 + memory: 6G + disks: &disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: &remotemgmt + type: libvirt + user: changeme + pass: changeme + address: 'qemu:///system' + interfaces: &interfaces + - name: 'nic1' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" # MACs will be assigned by libvirt + vlan: native + - name: 'nic2' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic3' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic4' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + ############################################################################ + - name: node-2 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-3 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-4 + node: *nodeparams + disks: &compute_disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + - name: 'disk2' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-5 + node: *nodeparams + disks: *compute_disks + remote_management: *remotemgmt + interfaces: *interfaces diff --git a/labs/ericsson/virtual4.yaml b/labs/ericsson/virtual4.yaml new file mode 100644 index 00000000..effa8610 --- /dev/null +++ b/labs/ericsson/virtual4.yaml @@ -0,0 +1,170 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ericsson-virtual4 POD descriptor file ### + +version: 1.0 +details: + pod_owner: Dianfeng Du + contact: dianfeng.du@ericsson.com + lab: Ericsson + location: Rosersberg, Sweden + type: production + link: https://wiki.opnfv.org/display/pharos/Ericsson+Hosting +############################################################################## +jumphost: + name: ericsson-virtual4 + node: &jumpparams + type: baremetal + vendor: HP + model: ProLiant BL460c Gen8 + arch: x86_64 + cpus: 2 + cpu_cflags: ivybridge + cores: 10 + memory: 64G + disks: + - name: 'disk1' + disk_capacity: 800G + disk_type: hdd + disk_interface: scsi + disk_rotation: &diskrotation 15000 + os: ubuntu-16.04 + remote_params: &remoteparas + type: ipmi + versions: + - 1.0 + - 2.0 + user: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAFUn+IQZZAIVg12z8+x3O+OZuKI0AVIN7gCZD + Q0PINvtvjRIPbi04ohcyor3PSqsrXt9CMRidAoXUYVrYZGyZvJ+bMQrR3Y2x + IFYGpfz3CSxx/faibTd0aSAJ2Ygix34tTjImpJttS6d7tDhLGdzqflnuK5wv + cLSuwDmMe5PLLOsvFF2NqAhBb5gdcYUNY409Fdo9r8COzw/H98OgPkus5ioR + ojfgpkmSWuFySVBtU7g2ytzUpHStUOwfjnAGhEq/kaPcm7GmfKxDK9dY/lNb + NoG/G1GcFE2OvnmwOYDxYZR4Nh2qFzF1Tvv6lygni+rlulKmnAxlvekeHnFR + ChhPJTA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAyuGVpeDkIKR1f+ShE + eSumgBAPyTlU4OKeQ1zT8ppewA+k] + pass: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAmcwE28BvEB7SWKN9wPOCn3jeG+nf5kO4eHN2 + sViK+cUouSbORPgRA3GWXNz3q4GPAOj7oi6t6zZiApOnNqQWVh+813XOi36R + IsXNmx5os5gefOoQC5dZYs3RhiBOOOYMadn6Z89qdNrDaKQX5hhuZJeerMX4 + 6oUEPhApfpuAH7rCoGav6hb+cpKe0Qfd76M62TiCJmID5v4e7mK7lnr/ELdA + PLMdTL8ckiMQxFNfcp4lfyhAFop1t+g231J9+D5Y6i5Vrteq70RYdhN1EcRV + ZMVRO8d8jc90a669aMaZDnSZWO1QgrQe2EpgnM2zWdjLx26F8E9Qb0Wy72Rk + UP9c3TA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBClcUWaTi1pHCq78qjw + gKFJgBD4aofV/0UYFmnfqikTPEYe] + remote_management: + <<: *remoteparas + address: 172.16.1.25/24 + mac_address: "9C:B6:54:8E:D7:0D" + interfaces: + - name: 'nic1' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:8f:07:58" + - name: 'nic2' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:8f:07:59" + - name: 'nic3' + speed: 10gb + features: 'dpdk|sriov' + address: 100.64.205.5/24 + mac_address: "38:ea:a7:8d:e6:f8" + - name: 'nic4' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "38:ea:a7:8d:e6:f9" + - name: 'nic5' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "9C:B6:54:8A:25:C0" + - name: 'nic6' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "9C:B6:54:8A:25:C4" +############################################################################## +nodes: + - name: node-1 + node: &nodeparams + <<: *jumpparams + # Fuel overrides certain params (e.g. cpus, mem) based on node role later + type: virtual + vendor: libvirt + model: virt + cpus: 1 + cores: 4 + memory: 6G + disks: &disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: &remotemgmt + type: libvirt + user: changeme + pass: changeme + address: 'qemu:///system' + interfaces: &interfaces + - name: 'nic1' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" # MACs will be assigned by libvirt + vlan: native + - name: 'nic2' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic3' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic4' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + ############################################################################ + - name: node-2 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-3 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-4 + node: *nodeparams + disks: &compute_disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + - name: 'disk2' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-5 + node: *nodeparams + disks: *compute_disks + remote_management: *remotemgmt + interfaces: *interfaces diff --git a/labs/ericsson/virtual5.yaml b/labs/ericsson/virtual5.yaml new file mode 100644 index 00000000..b49d6e87 --- /dev/null +++ b/labs/ericsson/virtual5.yaml @@ -0,0 +1,162 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ericsson-virtual5 POD descriptor file ### + +version: 1.0 +details: + pod_owner: Dianfeng Du + contact: dianfeng.du@ericsson.com + lab: Ericsson + location: Rosersberg, Sweden + type: production + link: https://wiki.opnfv.org/display/pharos/Ericsson+Hosting +############################################################################## +jumphost: + name: ericsson-virtual5 + node: &jumpparams + type: baremetal + vendor: HP + model: ProLiant BL460c Gen9 + arch: x86_64 + cpus: 2 + cpu_cflags: haswell + cores: 12 + memory: 128G + disks: + - name: 'disk1' + disk_capacity: 1200G + disk_type: hdd + disk_interface: scsi + disk_rotation: &diskrotation 15000 + os: ubuntu-16.04 + remote_params: &remoteparas + type: ipmi + versions: + - 1.0 + - 2.0 + user: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAFISXqW+J4fwIdnolsHMTtlecdX0jiXpL+PsO + trAO6QViFl96nBuV7TqVc2JKkHwEN7hpwd7EnD/UEHf8Bb1vmfHRdo9NG18w + wtwxpw2hxq66u3wWbe3VYCO11aWJqUgEc+xcR8AHNRXpLpIIU1SeEtHW6pRc + 4P5lQnH4PH/4NDfc2B7i9Snhku/YMB/WXuOoRXmu7/d3ALHj9LPdAPwUe8fa + AZoStmdj17uNl+8i9B0hPHcIt+++PSVDunTlCC23lbL8ZumJl6TqobQHH40Q + O5lPFJQrisqR3fI1m3FNiLHX2iQ+izKxbuPCoeyVeTVCUJzeb9kJfC+NNeb+ + DLx1ozA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBCYhkIxgVTaW7bYpvXp + eIn+gBDmBObxaNDpPqa4fF7VbiL/] + pass: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEANbnWOLMbgCt8fCT+gYHqSRglnL/cfICb6FMY + oOqw08FEmyi03Im3O/Ct9z7ZnYMuC1tivTo8fVriuVDK9LqGH3riFFkabkax + Z3Qmn9/ej6zeJH93NglmurbN2uyNF4YBThmma8s6esi1RCarj5M+KSZuvTNv + ByMwoAcK2Z+DGNxDO7QFM08pxvzjPU2cpBfvLL1gKweJWFla3kRYu/i/DWM3 + 7y0f6K1R/8CkUeiMqxdlRAIV+iFiQZwFrigLvjr2vN7mh0GtyzmXacP2882b + /XMoy57aSu6wm6Pb/Z8Hr8Yhs+nJKh1btk3Lgvb+UFmCvC46kLmZwHfU5C6+ + yRGugDA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBBOffpyurEo1+BNsdXI + HstDgBDpJ5nBblIOUA6lywX0TqSi] + remote_management: + <<: *remoteparas + address: 172.16.2.21/24 + mac_address: "58:20:B1:01:8E:F8" + interfaces: + - name: 'nic1' + speed: 10gb + features: 'dpdk|sriov' + address: 100.64.207.10/24 + mac_address: "5c:b9:01:8b:a6:50" + - name: 'nic2' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "5c:b9:01:8b:a6:51" + - name: 'nic3' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "5c:b9:01:8b:99:38" + - name: 'nic4' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "5c:b9:01:8b:99:39" +############################################################################## +nodes: + - name: node-1 + node: &nodeparams + <<: *jumpparams + # Fuel overrides certain params (e.g. cpus, mem) based on node role later + type: virtual + vendor: libvirt + model: virt + cpus: 1 + cores: 4 + memory: 6G + disks: &disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: &remotemgmt + type: libvirt + user: changeme + pass: changeme + address: 'qemu:///system' + interfaces: &interfaces + - name: 'nic1' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" # MACs will be assigned by libvirt + vlan: native + - name: 'nic2' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic3' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic4' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + ############################################################################ + - name: node-2 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-3 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-4 + node: *nodeparams + disks: &compute_disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + - name: 'disk2' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-5 + node: *nodeparams + disks: *compute_disks + remote_management: *remotemgmt + interfaces: *interfaces diff --git a/labs/huawei/idf-pod1.yaml b/labs/huawei/idf-pod1.yaml index 44fb4a06..00933bc4 100644 --- a/labs/huawei/idf-pod1.yaml +++ b/labs/huawei/idf-pod1.yaml @@ -11,7 +11,8 @@ idf: version: 0.1 - # netconfig + # NOTE: Fuel checking is disabled until 'idf.fuel' is defined below + installer: ['apex', 'compass4nfv', 'daisy'] net_config: mgmt: interface: 1 diff --git a/labs/huawei/pod1.yaml b/labs/huawei/pod1.yaml index f48d8239..807c6f3e 100644 --- a/labs/huawei/pod1.yaml +++ b/labs/huawei/pod1.yaml @@ -9,6 +9,7 @@ --- ### POD descriptor file ### +version: 1.0 details: pod_owner: Tianwei Wu contact: wutianwei1@hauwei.com diff --git a/labs/intel/idf-pod18.yaml b/labs/intel/idf-pod18.yaml new file mode 100644 index 00000000..e219e3b9 --- /dev/null +++ b/labs/intel/idf-pod18.yaml @@ -0,0 +1,103 @@ +############################################################################## +# Copyright (c) 2018 Intel Corporation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +idf: + version: 0.1 + installer: ['joid', 'fuel'] + net_config: + # NOTE: Network names are likely to change after the PDF spec is updated + oob: + interface: 0 + ip-range: 10.10.180.10-10.10.180.15 + vlan: native + mask: 24 + admin: # admin + interface: 1 + vlan: native + network: 10.10.181.0 + mask: 24 + bridge: brAdm + mgmt: # data + interface: 2 + vlan: 184 + network: 10.10.184.0 + ip-range: 10.10.184.10-10.10.184.254 + mask: 24 + storage: # storage + interface: 3 + vlan: native + network: 10.10.183.0 + mask: 24 + private: # floating + interface: 2 + vlan: 1000-1030 + network: 10.10.182.0 + mask: 24 + bridge: brExt + public: # public + interface: 3 + vlan: 1183 + network: 10.10.185.0 + ip-range: 10.10.185.100-10.10.185.253 + mask: 24 + gateway: 10.10.185.1 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: 'brAdm' + mgmt: 'mgmt18_br0' + private: ~ + public: 'brExt' + maas: + # MaaS timeouts (in minutes) + timeout_comissioning: 10 + timeout_deploying: 15 + network: + ntp_strata_host1: 1.pool.ntp.org + ntp_strata_host2: 0.pool.ntp.org + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'eno1' + - 'eno2' + - 'ens785f0' + - 'ens785f1' + - 'ens785f2' + - 'ens785f3' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0000:03:00.0' + - '0000:03:00.3' + - '0000:05:00.0' + - '0000:05:00.1' + - '0000:05:00.2' + - '0000:05:00.3' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: + - 'eno1' + - 'enp3s0f3' + - 'ens785f0' + - 'ens785f1' + - 'ens785f2' + - 'ens785f3' + busaddr: + - '0000:03:00.0' + - '0000:03:00.3' + - '0000:05:00.0' + - '0000:05:00.1' + - '0000:05:00.2' + - '0000:05:00.3' diff --git a/labs/intel/pod18.yaml b/labs/intel/pod18.yaml index b1123b7e..73ab232d 100644 --- a/labs/intel/pod18.yaml +++ b/labs/intel/pod18.yaml @@ -2,6 +2,7 @@ ### POD descriptor file ### +version: 1.0 details: pod_owner: Jack Morgan contact: jack.morgan@intel.com @@ -32,27 +33,31 @@ jumphost: disk_type: hdd disk_interface: sas disk_rotation: 15000 - os: centos-7.2.1611 + os: ubuntu-16.04 remote_params: &remoteparas type: ipmi versions: - 1.0 - 2.0 - user: - pass: + user: root + pass: root remote_management: <<: *remoteparas address: 10.10.180.10 mac_address: "A4:BF:01:16:31:98" interfaces: - name: 'nic1' - address: 10.10.180.20/24 + address: 10.10.180.20 mac_address: "A4:BF:01:16:31:96" vlan: native - name: 'nic2' - address: 10.10.181.20/24 + address: 10.10.182.20 mac_address: "A4:BF:01:16:31:97" vlan: native + - name: 'nic3' + address: 10.10.181.20 + mac_address: "3c:fd:fe:a4:9c:f1" + vlan: native nodes: - name: pod18-node1 node: &nodeparas @@ -77,43 +82,43 @@ nodes: disk_rotation: 15000 remote_management: <<: *remoteparas - address: 10.10.180.11/24 + address: 10.10.180.11 mac_address: "A4:BF:01:14:40:18" interfaces: - name: 'nic1' speed: 1gb features: - address: 10.10.180.21/24 + address: 10.10.180.21 mac_address: "A4:BF:01:14:40:16" vlan: native - name: 'nic2' speed: 1gb features: - address: 10.10.181.21/24 + address: 10.10.181.21 mac_address: "A4:BF:01:14:40:17" - vlan: native + vlan: 184 - name: 'nic3' speed: 10gb features: 'dpdk|sriov' - address: 10.10.182.21/24 + address: 10.10.182.21 mac_address: "3C:FD:FE:A4:9F:A0" vlan: native - name: 'nic4' speed: 10gb features: 'dpdk|sriov' - address: 10.10.183.21/24 + address: 10.10.183.21 mac_address: "3C:FD:FE:A4:9F:A1" - vlan: native + vlan: 1183 - name: 'nic5' speed: 10gb features: 'dpdk|sriov' - address: 10.10.184.21/24 + address: 10.10.184.21 mac_address: "3C:FD:FE:A4:9F:A2" vlan: native - name: 'nic6' speed: 10gb features: 'dpdk|sriov' - address: 10.10.185.21/24 + address: 10.10.185.21 mac_address: "3C:FD:FE:A4:9F:A3" vlan: native - name: pod18-node2 @@ -121,43 +126,43 @@ nodes: disks: *disks remote_management: <<: *remoteparas - address: 10.10.180.12/24 - mac_address: "A4:BF:01:16:31:1G" + address: 10.10.180.12 + mac_address: "A4:BF:01:16:31:1F" interfaces: - name: 'nic1' speed: 1gb features: - address: 10.10.180.22/24 + address: 10.10.180.22 mac_address: "A4:BF:01:16:31:1E" vlan: native - name: 'nic2' speed: 1gb features: - address: 10.10.181.22/24 + address: 10.10.181.22 mac_address: "A4:BF:01:16:31:1F" - vlan: native + vlan: 184 - name: 'nic3' speed: 10gb features: 'dpdk|sriov' - address: 10.10.182.22/24 + address: 10.10.182.22 mac_address: "3C:FD:FE:A4:A0:30" vlan: native - name: 'nic4' speed: 10gb features: 'dpdk|sriov' - address: 10.10.183.22/24 + address: 10.10.183.22 mac_address: "3C:FD:FE:A4:A0:31" - vlan: native + vlan: 1183 - name: 'nic5' speed: 10gb features: 'dpdk|sriov' - address: 10.10.184.22/24 + address: 10.10.184.22 mac_address: "3C:FD:FE:A4:A0:32" vlan: native - name: 'nic6' speed: 10gb features: 'dpdk|sriov' - address: 10.10.185.22/24 + address: 10.10.185.22 mac_address: "3C:FD:FE:A4:A0:33" vlan: native - name: pod18-node3 @@ -165,43 +170,43 @@ nodes: disks: *disks remote_management: <<: *remoteparas - address: 10.10.180.13/24 + address: 10.10.180.13 mac_address: "A4:BF:01:16:30:F8" interfaces: - name: 'nic1' speed: 1gb features: - address: 10.10.180.23/24 + address: 10.10.180.23 mac_address: "A4:BF:01:16:30:F6" vlan: native - name: 'nic2' speed: 1gb features: - address: 10.10.181.23/24 + address: 10.10.181.23 mac_address: "A4:BF:01:16:30:F7" - vlan: native + vlan: 184 - name: 'nic3' speed: 10gb features: 'dpdk|sriov' - address: 10.10.182.23/24 + address: 10.10.182.23 mac_address: "3C:FD:FE:A4:9E:48" vlan: native - name: 'nic4' speed: 10gb features: 'dpdk|sriov' - address: 10.10.183.23/24 + address: 10.10.183.23 mac_address: "3C:FD:FE:A4:9E:49" - vlan: native + vlan: 1183 - name: 'nic5' speed: 10gb features: 'dpdk|sriov' - address: 10.10.184.23/24 + address: 10.10.184.23 mac_address: "3C:FD:FE:A4:9E:4A" vlan: native - name: 'nic6' speed: 10gb features: 'dpdk|sriov' - address: 10.10.185.23/24 + address: 10.10.185.23 mac_address: "3C:FD:FE:A4:9E:4B" vlan: native - name: pod18-node4 @@ -209,43 +214,43 @@ nodes: disks: *disks remote_management: <<: *remoteparas - address: 10.10.180.14/24 + address: 10.10.180.14 mac_address: "A4:BF:01:14:72:0F" interfaces: - name: 'nic1' speed: 1gb features: - address: 10.10.180.24/24 + address: 10.10.180.24 mac_address: "A4:BF:01:14:72:0D" vlan: native - name: 'nic2' speed: 1gb features: - address: 10.10.181.24/24 + address: 10.10.181.24 mac_address: "A4:BF:01:14:72:0E" - vlan: native + vlan: 184 - name: 'nic3' speed: 10gb features: 'dpdk|sriov' - address: 10.10.182.24/24 + address: 10.10.182.24 mac_address: "3C:FD:FE:A4:9D:E8" vlan: native - name: 'nic4' speed: 10gb features: 'dpdk|sriov' - address: 10.10.183.24/24 + address: 10.10.183.24 mac_address: "3C:FD:FE:A4:9D:E9" - vlan: native + vlan: 1183 - name: 'nic5' speed: 10gb features: 'dpdk|sriov' - address: 10.10.184.24/24 + address: 10.10.184.24 mac_address: "3C:FD:FE:A4:9D:EA" vlan: native - name: 'nic6' speed: 10gb features: 'dpdk|sriov' - address: 10.10.185.24/24 + address: 10.10.185.24 mac_address: "3C:FD:FE:A4:9D:EB" vlan: native - name: pod18-node5 @@ -253,42 +258,42 @@ nodes: disks: *disks remote_management: <<: *remoteparas - address: 10.10.180.15/24 + address: 10.10.180.15 mac_address: "A4:BF:01:14:71:70" interfaces: - name: 'nic1' speed: 1gb features: - address: 10.10.180.25/24 + address: 10.10.180.25 mac_address: "A4:BF:01:14:71:68" vlan: native - name: 'nic2' speed: 1gb features: - address: 10.10.181.25/24 + address: 10.10.181.25 mac_address: "A4:BF:01:14:71:69" - vlan: native + vlan: 184 - name: 'nic3' speed: 10gb features: 'dpdk|sriov' - address: 10.10.182.25/24 + address: 10.10.182.25 mac_address: "3C:FD:FE:A4:A1:08" vlan: native - name: 'nic4' speed: 10gb features: 'dpdk|sriov' - address: 10.10.183.25/24 + address: 10.10.183.25 mac_address: "3C:FD:FE:A4:A1:09" - vlan: native + vlan: 1183 - name: 'nic5' speed: 10gb features: 'dpdk|sriov' - address: 10.10.184.25/24 + address: 10.10.184.25 mac_address: "3C:FD:FE:A4:A1:0A" vlan: native - name: 'nic6' speed: 10gb features: 'dpdk|sriov' - address: 10.10.185.25/24 + address: 10.10.185.25 mac_address: "3C:FD:FE:A4:A1:0B" vlan: native diff --git a/labs/itri/idf-pod1.yaml b/labs/itri/idf-pod1.yaml new file mode 100644 index 00000000..f88a913f --- /dev/null +++ b/labs/itri/idf-pod1.yaml @@ -0,0 +1,92 @@ +############################################################################## +# Copyright (c) 2019 ITRI. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ITRI POD 1 installer descriptor file ### + +idf: + version: 0.1 + installer: ['compass4nfv', 'fuel'] + net_config: + # NOTE: Network names are likely to change after the PDF spec is updated + admin: + interface: 0 + vlan: native + network: 10.1.0.0 + mask: 24 + storage: + interface: 1 + vlan: native + network: 172.16.2.0 + mask: 24 + oob: + interface: 1 + ip-range: 100.86.5.28-100.86.5.33 + vlan: native + public: + interface: 2 + vlan: native + network: 100.86.0.0 + mask: 16 + gateway: 100.86.0.254 + dns: + - 8.8.8.8 + - 8.8.4.4 + mgmt: + interface: 4 + vlan: 1001 + network: 172.16.3.0 + mask: 24 + private: + interface: 3 + vlan: 100 + network: 172.16.1.0 + mask: 24 + fuel: + jumphost: + bridges: + admin: 'pxebr' + mgmt: 'br-ctl' + private: '' + public: '' + network: + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: + # Ordered-list, index should be in sync with interface index in PDF + - 'eth0' + - 'eth1' + - 'eth2' + - 'eth3' + - 'eth4' + busaddr: + # Bus-info reported by `ethtool -i ethX` + - '0000:03:00.0' + - '0000:05:00.3' + - '0000:02:00.1' + - '0000:05:00.0' + - '0000:02:00.0' + - interfaces: &interfaces + - 'eth0' + - 'eth1' + - 'eth2' + - 'eth3' + - 'eth4' + busaddr: &busaddr + - '0000:03:00.0' + - '0000:04:00.1' + - '0000:02:00.1' + - '0000:05:00.1' + - '0000:02:00.0' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr diff --git a/labs/itri/pod1.yaml b/labs/itri/pod1.yaml new file mode 100644 index 00000000..06140900 --- /dev/null +++ b/labs/itri/pod1.yaml @@ -0,0 +1,295 @@ +############################################################################## +# Copyright (c) 2018 ITRI, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### ITRI POD 1 descriptor file ### + +version: 1.0 +details: + pod_owner: ITRI + contact: mhhsu@itri.org.tw + lab: ITRI Pharos Lab + location: Taiwan + type: production + link: https://wiki.opnfv.org/display/pharos/Community+Labs +############################################################################## +jumphost: + name: pod1-jump + node: + type: baremetal + vendor: Dell + model: PowerEdge R730 + arch: x86_64 + cpus: 2 + cpu_cflags: Broadwell + cores: 24 + memory: 64G + disks: &disks + - name: 'disk1' + disk_capacity: 480G + disk_type: ssd + disk_interface: ssd + disk_rotation: 0 + - name: 'disk2' + disk_capacity: 480G + disk_type: ssd + disk_interface: ssd + disk_rotation: 0 + - name: 'disk3' + disk_capacity: 480G + disk_type: ssd + disk_interface: ssd + disk_rotation: 0 + - name: 'disk4' + disk_capacity: 480G + disk_type: ssd + disk_interface: ssd + disk_rotation: 0 + - name: 'disk5' + disk_capacity: 1T + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + - name: 'disk6' + disk_capacity: 1T + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + - name: 'disk7' + disk_capacity: 1T + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + - name: 'disk8' + disk_capacity: 1T + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + os: ubuntu-16.04 + remote_params: &remote_params + type: ipmi + versions: + - 2.0 + user: admin + pass: admin + remote_management: + <<: *remote_params + address: 100.86.5.23 + mac_address: "10:98:36:b5:6f:79" + interfaces: + - mac_address: "52:54:00:7c:d6:b4" + speed: 1gb + features: 'dpdk|sriov' + address: 10.1.0.1 + name: 'nic1' +############################################################################## +nodes: + - name: pod1-node1 + node: &nodeparams + type: baremetal + vendor: Dell + model: PowerEdge R730 + arch: x86_64 + cpus: 2 + cpu_cflags: Broadwell + cores: 24 + memory: 128G + disks: *disks + remote_management: + <<: *remote_params + address: 100.86.5.28 + mac_address: "18:66:da:a3:f0:99" + interfaces: + - mac_address: "18:66:da:a3:f0:97" + speed: 1gb + features: 'dpdk|sriov' + address: 10.1.0.50 + name: 'nic1' + - mac_address: "3c:fd:fe:12:29:c6" + speed: 10gb + features: 'dpdk|sriov' + address: 172.16.2.1 + name: 'nic2' + - mac_address: "18:66:da:a3:f0:96" + speed: 1gb + features: 'dpdk|sriov' + address: 100.86.88.10 + name: 'nic3' + - mac_address: "3c:fd:fe:12:29:c0" + speed: 10gb + features: 'dpdk|sriov' + address: 172.16.1.1 + name: 'nic4' + - mac_address: "18:66:da:a3:f0:95" + speed: 1gb + features: 'dpdk|sriov' + name: 'nic5' + ############################################################################ + - name: pod1-node2 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 100.86.5.29 + mac_address: "18:66:da:a3:f3:c9" + interfaces: + - mac_address: "18:66:da:a3:f3:c7" + speed: 1gb + features: 'dpdk|sriov' + address: 10.1.0.51 + name: 'nic1' + - mac_address: "3c:fd:fe:1a:e0:02" + speed: 10gb + features: 'dpdk|sriov' + address: 172.16.2.2 + name: 'nic2' + - mac_address: "18:66:da:a3:f3:c6" + speed: 1gb + features: 'dpdk|sriov' + address: 100.86.88.11 + name: 'nic3' + - mac_address: "3c:fd:fe:12:09:e2" + speed: 10gb + features: 'dpdk|sriov' + address: 172.16.1.2 + name: 'nic4' + - mac_address: "18:66:da:a3:f3:c5" + speed: 1gb + features: 'dpdk|sriov' + name: 'nic5' + ############################################################################ + - name: pod1-node3 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 100.86.5.30 + mac_address: "18:66:da:a3:c2:c6" + interfaces: + - mac_address: "18:66:da:a3:c2:c4" + speed: 1gb + features: 'dpdk|sriov' + address: 10.1.0.52 + name: 'nic1' + - mac_address: "3c:fd:fe:1b:23:62" + speed: 10gb + features: 'dpdk|sriov' + address: 172.16.2.3 + name: 'nic2' + - mac_address: "18:66:da:a3:c2:c3" + speed: 1gb + features: 'dpdk|sriov' + address: 100.86.88.12 + name: 'nic3' + - mac_address: "3c:fd:fe:12:29:e2" + speed: 10gb + features: 'dpdk|sriov' + address: 172.16.1.3 + name: 'nic4' + - mac_address: "18:66:da:a3:c2:c2" + speed: 1gb + features: 'dpdk|sriov' + name: 'nic5' + ############################################################################ + - name: pod1-node4 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 100.86.5.31 + mac_address: "18:66:da:a3:bd:dd" + interfaces: + - mac_address: "18:66:da:a3:bd:db" + speed: 1gb + features: 'dpdk|sriov' + address: 10.1.0.53 + name: 'nic1' + - mac_address: "3c:fd:fe:1a:c6:c2" + speed: 10gb + features: 'dpdk|sriov' + address: 172.16.2.4 + name: 'nic2' + - mac_address: "18:66:da:a3:bd:da" + speed: 1gb + features: 'dpdk|sriov' + address: 100.86.88.13 + name: 'nic3' + - mac_address: "3c:fd:fe:12:2b:22" + speed: 10gb + features: 'dpdk|sriov' + address: 172.16.1.4 + name: 'nic4' + - mac_address: "18:66:da:a3:bd:d9" + speed: 1gb + features: 'dpdk|sriov' + name: 'nic5' + ############################################################################ + - name: pod1-node5 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 100.86.5.32 + mac_address: "18:66:da:a3:b9:8e" + interfaces: + - mac_address: "18:66:da:a3:b9:8c" + speed: 1gb + features: 'dpdk|sriov' + address: 10.1.0.54 + name: 'nic1' + - mac_address: "3c:fd:fe:1b:22:e2" + speed: 10gb + features: 'dpdk|sriov' + address: 172.16.2.5 + name: 'nic2' + - mac_address: "18:66:da:a3:b9:8b" + speed: 1gb + features: 'dpdk|sriov' + address: 100.86.88.14 + name: 'nic3' + - mac_address: "3c:fd:fe:12:29:a2" + speed: 10gb + features: 'dpdk|sriov' + address: 172.16.1.5 + name: 'nic4' + - mac_address: "18:66:da:a3:b9:8a" + speed: 1gb + features: 'dpdk|sriov' + name: 'nic5' + ############################################################################ + - name: pod1-node6 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 100.86.5.33 + mac_address: "18:66:da:a3:c7:5b" + interfaces: + - mac_address: "18:66:da:a3:c7:59" + speed: 1gb + features: 'dpdk|sriov' + address: 10.1.0.55 + name: 'nic1' + - mac_address: "3c:fd:fe:1b:00:82" + speed: 10gb + features: 'dpdk|sriov' + address: 172.16.2.6 + name: 'nic2' + - mac_address: "18:66:da:a3:c7:58" + speed: 1gb + features: 'dpdk|sriov' + address: 100.86.88.15 + name: 'nic3' + - mac_address: "3c:fd:fe:12:2a:c2" + speed: 10gb + features: 'dpdk|sriov' + address: 172.16.1.6 + name: 'nic4' + - mac_address: "18:66:da:a3:c7:57" + speed: 1gb + features: 'dpdk|sriov' + name: 'nic5' diff --git a/labs/lf/idf-pod2.yaml b/labs/lf/idf-pod2.yaml index a2c00967..b54e2ce7 100644 --- a/labs/lf/idf-pod2.yaml +++ b/labs/lf/idf-pod2.yaml @@ -1,21 +1,23 @@ ############################################################################## -# Copyright (c) 2018 Linux Foundation, Enea AB and others. +# Copyright (c) 2018 Linux Foundation, Mirantis Inc., Enea AB and others. # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## --- -### LF POD 5 installer descriptor file ### +### LF POD 2 installer descriptor file ### idf: version: 0.1 + installer: ['apex', 'compass4nfv', 'daisy', 'fuel'] net_config: # NOTE: Network names are likely to change after the PDF spec is updated oob: interface: 0 ip-range: 172.30.8.65-172.30.8.75 vlan: 410 + mask: 26 admin: interface: 0 vlan: native @@ -25,6 +27,7 @@ idf: interface: 0 vlan: 300 network: 10.167.4.0 # Tagged, 'vlan 300' on wiki + ip-range: 10.167.4.10-10.167.4.254 # Some IPs are in use by lab infra mask: 24 storage: interface: 3 @@ -33,13 +36,14 @@ idf: mask: 24 private: interface: 1 - vlan: 1000 + vlan: 1000-1030 network: 10.1.0.0 # Tagged, not the same with 'private' on wiki mask: 24 public: interface: 2 vlan: native network: 172.30.10.0 # Untagged, 'public' on wiki + ip-range: 172.30.10.100-172.30.10.254 # Some IPs are in use by lab infra mask: 24 gateway: 172.30.10.1 dns: @@ -48,21 +52,27 @@ idf: fuel: jumphost: bridges: - admin: ~ - mgmt: ~ + admin: 'pxebr' + mgmt: 'br-ctl' private: ~ public: ~ network: + ntp_strata_host1: 1.pool.ntp.org + ntp_strata_host2: 0.pool.ntp.org node: # Ordered-list, index should be in sync with node index in PDF - interfaces: &interfaces # Ordered-list, index should be in sync with interface index in PDF - - ~ - - ~ + - 'enp6s0' + - 'enp7s0' + - 'enp8s0' + - 'enp9s0' busaddr: &busaddr # Bus-info reported by `ethtool -i ethX` - - ~ - - ~ + - '0000:06:00.0' + - '0000:07:00.0' + - '0000:08:00.0' + - '0000:09:00.0' - interfaces: *interfaces busaddr: *busaddr - interfaces: *interfaces diff --git a/labs/lf/idf-pod4.yaml b/labs/lf/idf-pod4.yaml new file mode 100644 index 00000000..c0a1b17e --- /dev/null +++ b/labs/lf/idf-pod4.yaml @@ -0,0 +1,148 @@ +############################################################################## +# Copyright (c) 2018 Linux Foundation, Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### LF POD 4 installer descriptor file ### + +idf: + version: 0.1 + installer: ['apex', 'compass4nfv', 'daisy', 'fuel'] + net_config: &net_config + oob: + interface: 0 + ip-range: 172.30.8.83-172.30.8.88 + vlan: 410 + mask: 29 + admin: + interface: 0 + vlan: native + network: 192.168.12.0 + gateway: 192.168.12.1 + dns: 8.8.8.8 + mask: 24 + mgmt: + interface: 1 + vlan: 450 + network: 192.168.3.0 + mask: 24 + storage: + interface: 3 + vlan: 451 + network: 192.168.4.0 + mask: 24 + private: + interface: 2 + vlan: 452 + network: 192.168.5.0 + mask: 24 + public: + interface: 4 + vlan: 414 + network: 172.30.12.64 + mask: 26 + gateway: 172.30.12.1 + dns: + - 8.8.8.8 + - 8.8.4.4 + osa: &idf_osa + nodes_roles: + opnfv: [deployment] + node1: [controller] + node2: [compute, storage] + node3: [compute, storage] + node4: [controller] + node5: [controller] + groups: + openstack: + - controller + - compute + - storage + hostnames: + opnfv: opnfv + node1: controller00 + node2: compute00 + node3: compute01 + node4: controller01 + node5: controller02 + network: + # network mapping + network_mapping: + # Management network used by installer components to communicate + net-mgmt: mgmt + # Storage Network + net-storage: storage + # Internal network for communication between VNF + net-internal: private + # Public network for VNF remote acces (ext-net in Openstack) + net-vnf: public + deployment_host_interfaces: + # Ordered-list, index should be in sync with interface index in PDF + - 'eno1' + - 'eno3.450' + - 'eno3.452' + - 'eno4.451' + - 'eno4.414' + fuel: + jumphost: + bridges: + admin: 'pxebr' + mgmt: 'br-ctl' + private: ~ + public: ~ + network: + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'eno1' + - 'eno3' + - 'eno4' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0000:04:00.0' + - '0000:02:00.0' + - '0000:02:00.1' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr +xci: + pod_name: lf-pod4 + net_config: *net_config + nodes_roles: + opnfv_host: [opnfv_host] + pod4-node1: [compute, storage] + pod4-node2: [compute, storage] + pod4-node3: [controller, storage] + pod4-node4: [controller, storage] + pod4-node5: [controller, storage] + + # net_config network to be used by the PXE + pxe_network: admin + + # As the MAC of generated bridges are generated, we use a list of local + # bridges to create libvirt networks + jumphost_interfaces_bridges: + - name: br_admin + ip: + + extra_addresses: + opnfv_host: 192.168.12.2 + + # network mapping + network_mapping: + net-mgmt: admin + net-storage: storage + net-internal: private + net-vnf: public + + installers: + osa: *idf_osa diff --git a/labs/lf/idf-pod5.yaml b/labs/lf/idf-pod5.yaml index 59064f3c..01778907 100644 --- a/labs/lf/idf-pod5.yaml +++ b/labs/lf/idf-pod5.yaml @@ -10,43 +10,47 @@ idf: version: 0.1 + installer: ['apex', 'compass4nfv', 'daisy', 'fuel'] net_config: oob: interface: 0 ip-range: 172.30.8.89-172.30.8.94 vlan: 410 + mask: 29 admin: interface: 0 vlan: native - network: 10.20.0.128 - mask: 25 - gateway: 10.20.0.129 - dns: 10.20.0.129 + network: 192.168.11.0 + mask: 24 mgmt: interface: 1 vlan: 450 - network: 192.168.0.128 - mask: 25 + network: 192.168.0.0 + mask: 24 storage: interface: 2 vlan: 451 - network: 192.168.1.128 - mask: 25 + network: 192.168.1.0 + mask: 24 private: interface: 1 vlan: 452 - network: 192.168.2.128 - mask: 25 + network: 192.168.2.0 + mask: 24 public: interface: 2 vlan: 415 network: 172.30.13.64 mask: 26 + gateway: 172.30.13.1 + dns: + - 8.8.8.8 + - 8.8.4.4 fuel: jumphost: bridges: - admin: ~ - mgmt: ~ + admin: 'pxebr' + mgmt: 'br-ctl' private: ~ public: ~ network: @@ -54,12 +58,14 @@ idf: # Ordered-list, index should be in sync with node index in PDF - interfaces: &interfaces # Ordered-list, index should be in sync with interface index in PDF - - ~ - - ~ + - 'eno1' + - 'eno3' + - 'eno4' busaddr: &busaddr # Bus-info reported by `ethtool -i ethX` - - ~ - - ~ + - '0000:04:00.0' + - '0000:02:00.0' + - '0000:02:00.1' - interfaces: *interfaces busaddr: *busaddr - interfaces: *interfaces diff --git a/labs/lf/pod2.yaml b/labs/lf/pod2.yaml index ab60bdb8..219b2a68 100644 --- a/labs/lf/pod2.yaml +++ b/labs/lf/pod2.yaml @@ -8,6 +8,7 @@ --- ### LF POD 2 descriptor file ### +version: 1.0 details: pod_owner: Trevor Bramwell contact: tbramwell@linuxfoundation.org diff --git a/labs/lf/pod4.yaml b/labs/lf/pod4.yaml new file mode 100644 index 00000000..32a51b61 --- /dev/null +++ b/labs/lf/pod4.yaml @@ -0,0 +1,203 @@ +############################################################################## +# Copyright (c) 2018 Linux Foundation, Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### LF POD 4 descriptor file ### + +version: 1.0 +details: + pod_owner: Trevor Bramwell + contact: tbramwell@linuxfoundation.org + lab: Linux Foundation + location: Portland, Oregon, USA + type: development + link: https://wiki.opnfv.org/display/pharos/LF+POD+4 +jumphost: + name: pod4-jump + node: &nodeparams + type: baremetal + vendor: Intel Corporation + model: S2600WT2R + arch: x86_64 + cpus: 88 + cpu_cflags: haswell + cores: 22 + memory: 62G + disks: &disks + - name: 'disk1' + disk_capacity: 480G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + os: centos-7 + remote_params: &remote_params + type: ipmi + versions: + - 2.0 + user: admin + pass: octopus + remote_management: + <<: *remote_params + address: 172.30.8.83 + mac_address: "a4:bf:01:01:b0:bb" + interfaces: + - &interface_common_nic1 # admin + name: nic1 + speed: 1gb + features: 'dpdk|sriov' + vlan: native + mac_address: "a4:bf:01:01:b0:b9" + address: 192.168.12.1 + - &interface_common_nic2 # mgmt + name: nic2 + speed: 10gb + features: 'dpdk|sriov' + vlan: 450 + mac_address: "00:1e:67:fd:9a:04" + address: 192.168.0.2 + - &interface_common_nic3 # private + name: nic3 + speed: 10gb + features: 'dpdk|sriov' + vlan: 452 + mac_address: "00:1e:67:fd:9a:04" + address: 192.168.2.2 + - &interface_common_nic4 # storage + name: nic4 + speed: 10gb + features: 'dpdk|sriov' + vlan: 451 + mac_address: "00:1e:67:fd:9a:05" + address: 192.168.1.2 + - &interface_common_nic5 # public + name: nic5 + speed: 10gb + features: 'dpdk|sriov' + vlan: 414 + mac_address: "00:1e:67:fd:9a:05" + address: 172.30.12.83 +############################################################################## +nodes: + - name: pod4-node1 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 172.30.8.84 + mac_address: "a4:bf:01:01:ab:b6" + interfaces: + - mac_address: "a4:bf:01:01:ab:b4" + address: 192.168.12.4 + <<: *interface_common_nic1 + - mac_address: "00:1e:67:fd:9b:32" + address: 192.168.0.4 + <<: *interface_common_nic2 + - mac_address: "00:1e:67:fd:9b:32" + address: 192.168.2.4 + <<: *interface_common_nic3 + - mac_address: "00:1e:67:fd:9b:33" + address: 192.168.1.4 + <<: *interface_common_nic4 + - mac_address: "00:1e:67:fd:9b:33" + address: 172.30.12.84 + <<: *interface_common_nic5 + ############################################################################ + - name: pod4-node2 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 172.30.8.85 + mac_address: "a4:bf:01:01:b6:97" + interfaces: + - mac_address: "a4:bf:01:01:b6:95" + address: 192.168.12.5 + <<: *interface_common_nic1 + - mac_address: "00:1e:67:fd:98:e2" + address: 192.168.0.5 + <<: *interface_common_nic2 + - mac_address: "00:1e:67:fd:98:e2" + address: 192.168.2.5 + <<: *interface_common_nic3 + - mac_address: "00:1e:67:fd:98:e3" + address: 192.168.1.5 + <<: *interface_common_nic4 + - mac_address: "00:1e:67:fd:98:e3" + address: 172.30.12.85 + <<: *interface_common_nic5 + ############################################################################ + - name: pod4-node3 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 172.30.8.86 + mac_address: "a4:bf:01:01:66:fe" + interfaces: + - mac_address: "a4:bf:01:01:66:fc" + address: 192.168.12.6 + <<: *interface_common_nic1 + - mac_address: "00:1e:67:fd:9c:c8" + address: 192.168.0.6 + <<: *interface_common_nic2 + - mac_address: "00:1e:67:fd:9c:c8" + address: 192.168.2.6 + <<: *interface_common_nic3 + - mac_address: "00:1e:67:fd:9c:c9" + address: 192.168.1.6 + <<: *interface_common_nic4 + - mac_address: "00:1e:67:fd:9c:c9" + address: 172.30.12.86 + <<: *interface_common_nic5 + ############################################################################ + - name: pod4-node4 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 172.30.8.87 + mac_address: "a4:bf:01:01:b2:f5" + interfaces: + - mac_address: "a4:bf:01:01:b2:f3" + address: 192.168.12.7 + <<: *interface_common_nic1 + - mac_address: "00:1e:67:fd:9b:38" + address: 192.168.0.7 + <<: *interface_common_nic2 + - mac_address: "00:1e:67:fd:9b:38" + address: 192.168.2.7 + <<: *interface_common_nic3 + - mac_address: "00:1e:67:fd:9b:39" + address: 192.168.1.7 + <<: *interface_common_nic4 + - mac_address: "00:1e:67:fd:9b:39" + address: 172.30.12.87 + <<: *interface_common_nic5 + ############################################################################ + - name: pod4-node5 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 172.30.8.88 + mac_address: "a4:bf:01:01:b5:11" + interfaces: + - mac_address: "a4:bf:01:01:b5:0f" + address: 192.168.12.8 + <<: *interface_common_nic1 + - mac_address: "00:1e:67:fd:99:40" + address: 192.168.0.8 + <<: *interface_common_nic2 + - mac_address: "00:1e:67:fd:99:40" + address: 192.168.2.8 + <<: *interface_common_nic3 + - mac_address: "00:1e:67:fd:99:41" + address: 192.168.1.8 + <<: *interface_common_nic4 + - mac_address: "00:1e:67:fd:99:41" + address: 172.30.12.88 + <<: *interface_common_nic5 diff --git a/labs/lf/pod5.yaml b/labs/lf/pod5.yaml index 60ab4029..47ebc9e8 100644 --- a/labs/lf/pod5.yaml +++ b/labs/lf/pod5.yaml @@ -8,6 +8,7 @@ --- ### LF POD 5 descriptor file ### +version: 1.0 details: pod_owner: Trevor Bramwell contact: tbramwell@linuxfoundation.org @@ -17,7 +18,7 @@ details: link: https://wiki.opnfv.org/display/pharos/LF+POD+5 jumphost: name: pod5-jump - node: &nodeparas + node: &nodeparams type: baremetal vendor: Intel Corporation model: S2600WT2R @@ -47,7 +48,7 @@ jumphost: - mac_address: "a4:bf:01:01:ad:71" speed: 1gb features: 'dpdk|sriov' - address: 10.20.0.129 + address: 192.168.11.1 name: 'nic1' - mac_address: "00:1e:67:fd:9c:c2" speed: 10gb @@ -59,7 +60,7 @@ jumphost: name: 'nic3' nodes: - name: pod5-node1 - node: *nodeparas + node: *nodeparams disks: *disks remote_management: <<: *remote_params @@ -79,7 +80,7 @@ nodes: features: 'dpdk|sriov' name: 'nic3' - name: pod5-node2 - node: *nodeparas + node: *nodeparams disks: *disks remote_management: <<: *remote_params @@ -99,7 +100,7 @@ nodes: features: 'dpdk|sriov' name: 'nic3' - name: pod5-node3 - node: *nodeparas + node: *nodeparams disks: *disks remote_management: <<: *remote_params @@ -119,7 +120,7 @@ nodes: features: 'dpdk|sriov' name: 'nic3' - name: pod5-node4 - node: *nodeparas + node: *nodeparams disks: *disks remote_management: <<: *remote_params @@ -139,7 +140,7 @@ nodes: features: 'dpdk|sriov' name: 'nic3' - name: pod5-node5 - node: *nodeparas + node: *nodeparams disks: *disks remote_management: <<: *remote_params diff --git a/labs/nokia/idf-pod1.yaml b/labs/nokia/idf-pod1.yaml new file mode 100644 index 00000000..3fc47e20 --- /dev/null +++ b/labs/nokia/idf-pod1.yaml @@ -0,0 +1,12 @@ +############################################################################## +# Copyright (c) 2018 Nokia, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +idf: + version: 0.1 + # NOTE: Fuel checking is disabled until 'idf.fuel' is defined below + installer: ['apex', 'compass4nfv', 'daisy'] diff --git a/labs/nokia/pod1.yaml b/labs/nokia/pod1.yaml new file mode 100644 index 00000000..6b684aeb --- /dev/null +++ b/labs/nokia/pod1.yaml @@ -0,0 +1,244 @@ +############################################################################## +# Copyright (c) 2018 Nokia, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### Nokia POD descriptor file ### + +version: 1.0 +details: + pod_owner: Mika Rautakumpu + contact: opnfv-public-lab-admin@list.nokia.com + lab: Nokia Pharos Lab + location: Espoo, Finland + type: development + link: https://wiki.opnfv.org/display/pharos/Nokia+Hosting +########################################################### + +jumphost: + name: nokiapod-jumpserver + node: &nodeparamscomp + type: baremetal + vendor: Intel + model: E5-2680 + arch: x86_64 + cpus: 2 + cpu_cflags: broadwell + cores: 14 + memory: 128G + disks: &disks + - name: 'disk1' + disk_capacity: 1TB + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + - name: 'disk2' + disk_capacity: 1TB + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + os: centos-7 + remote_params: &remote_params + type: ipmi + versions: + - 1.0 + - 2.0 + user: admin + pass: admin + remote_management: + <<: *remote_params + address: 192.168.1.10 + mac_address: "54:ab:3a:14:11:e9" + interfaces: + - mac_address: "90:e2:ba:b0:b6:4d" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic1' + - mac_address: "90:e2:ba:b0:b6:4c" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "54:ab:3a:09:99:06" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "54:ab:3a:09:99:05" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "54:ab:3a:14:11:e8" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "54:ab:3a:14:11:e7" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic6' +#################################################### +nodes: + - name: nokiapod-node1 + node: &nodeparams + type: baremetal + vendor: Intel + model: E5-2630 + arch: x86_64 + cpus: 2 + cpu_cflags: haswell + cores: 8 + memory: 64G + disks: &diskscont + - name: 'disk1' + disk_capacity: 800GB + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + - name: 'disk2' + disk_capacity: 1TB + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + - name: 'disk3' + disk_capacity: 1TB + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + remote_management: + <<: *remote_params + address: 192.168.1.20 + mac_address: "54:ab:3a:29:18:38" + interfaces: + - mac_address: "54:ab:3a:24:3b:e2" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "54:ab:3a:24:3b:e1" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "54:ab:3a:29:18:37" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "54:ab:3a:29:18:36" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic6' + #################################################### + - name: nokiapod-node2 + node: *nodeparams + disks: *diskscont + remote_management: + <<: *remote_params + address: 192.168.1.21 + mac_address: "54:ab:3a:16:84:45" + interfaces: + - mac_address: "54:ab:3a:24:3f:ac" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "54:ab:3a:24:3f:ab" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "54:ab:3a:16:84:44" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "54:ab:3a:16:84:43" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic6' + #################################################### + - name: nokiapod-node3 + node: *nodeparams + disks: *diskscont + remote_management: + <<: *remote_params + address: 192.168.1.22 + mac_address: "54:ab:3a:16:84:6f" + interfaces: + - mac_address: "54:ab:3a:24:41:be" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "54:ab:3a:24:41:bd" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "54:ab:3a:16:84:6e" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "54:ab:3a:16:84:6d" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic6' + #################################################### + - name: nokiapod-node4 + node: *nodeparamscomp + disks: *disks + remote_management: + <<: *remote_params + address: 192.168.1.30 + mac_address: "54:ab:3a:13:72:9c" + interfaces: + - mac_address: "90:e2:ba:b0:f2:3d" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic1' + - mac_address: "90:e2:ba:b0:f2:3c" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "54:ab:3a:09:8b:84" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "54:ab:3a:09:8b:83" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "54:ab:3a:13:72:9b" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "54:ab:3a:13:72:9a" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic6' + #################################################### + - name: nokiapod-node5 + node: *nodeparamscomp + disks: *disks + remote_management: + <<: *remote_params + address: 192.168.1.31 + mac_address: "54:ab:3a:13:71:94" + interfaces: + - mac_address: "90:e2:ba:b0:a6:e5" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic1' + - mac_address: "90:e2:ba:b0:a6:e4" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic2' + - mac_address: "54:ab:3a:09:94:ea" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic3' + - mac_address: "54:ab:3a:09:94:e9" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic4' + - mac_address: "54:ab:3a:13:71:93" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic5' + - mac_address: "54:ab:3a:13:71:92" + speed: 10gb + features: 'dpdk|sriov' + name: 'nic6' diff --git a/labs/ool/idf-pod1.yaml b/labs/ool/idf-pod1.yaml new file mode 100644 index 00000000..d27b0acc --- /dev/null +++ b/labs/ool/idf-pod1.yaml @@ -0,0 +1,66 @@ +############################################################################## +# Copyright (c) 2018 Okinawa Open Labratory. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### This is a OOL Installer descriptor file ### + +idf: + version: 0.1 + # NOTE: Temporarily disable Daisy check, since it requires 'storage' network + # to be defined in 'idf.net_config' below. + installer: ['apex', 'fuel'] + net_config: + admin: + interface: 0 + vlan: native + network: 192.168.103.0 + mask: 24 + mgmt: + interface: 2 + vlan: 101 + network: 192.168.104.0 + mask: 24 + public: + interface: 2 + vlan: 102 + network: 192.168.106.0 + mask: 24 + private: + interface: 1 + vlan: native + network: 192.168.25.0 + mask: 24 + gateway: 192.168.20.254 + dns: + - 8.8.8.8 + fuel: + jumphost: + bridges: + admin: 'br-em1' + mgmt: 'br0' + public: 'br-ex' + private: ~ + network: + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'eno2' + - 'eno3' + - 'eno4' + busaddr: &busaddr + - '0000:01:00.0' + - '0000:07:00.0' + - '0000:07:00.1' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr diff --git a/labs/ool/pod1.yaml b/labs/ool/pod1.yaml new file mode 100644 index 00000000..befb3ab5 --- /dev/null +++ b/labs/ool/pod1.yaml @@ -0,0 +1,204 @@ +############################################################################## +# Copyright (c) 2018 Okinawa Open Labratory Inc. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### Okinawa Open Labratory POD descriptor file ### +version: 1.0 +details: + pod_owner: Hideayasu Hayashi + contact: opnfv-ool-member@okinawaopenlabs.org + lab: Okinawa Open Lab Testlab + location: Okinawa, Japan + type: development + link: https://wiki.opnfv.org/display/pharos/OOL+Hosting +########################################################### + +jumphost: + name: OPNFV-Jump + node: + type: baremetal + vendor: SuperMicro + model: SYS-5018R-WR + arch: x86_64 + cpus: 1 + cpu_cflags: Haswell + cores: 16 + memory: 32GB + disks: + - name: 'disk1' + disk_capacity: 2TB + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + os: ubuntu-16.04 + remote_params: &remote_params + type: ipmi + versions: + - 1.0 + - 2.0 + user: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEAF2ppKLPzAigPgVqFhC0wnAJPImX04Ql5kKr7 + cq3G8eiDIm4AfTOwW3iJf8srdChaVnseriher6cdietFwr3xoVYe/r1qD/Bp + IrmD79lNrbPMTwA8ESRmroKhxpxvRDziOUc5T9ev942n6BGs0iBjHMl96ZcN + UscPrV6iHtUfEN1ZaEx0kv217vSv5JWUp4gf10ZHJEN12gAxZBuuKRr59dbw + kGtn5QRjEQ1g7PKDTa3HIKUkxN9snPzAIrXtXsG4O/HmUl0UEUlJ4O5/+wBN + kE/a9/OqMs9+KWmFZ1PRw35WIFpk7vS2HI7HfLab3AHKRySBnTAoGIdnqd+I + se5pQzA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBBXF6x8Rg0xNCGXOUio + 2oqhgBCQ0jBbqpN9e904KFAjRZWA] + pass: > + ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw + DQYJKoZIhvcNAQEBBQAEggEARKDnZBM1SMOd3e/dxlRV21TGiIs5ezpHqG7f + CbKlOim5KW/siiHGN9S5JnTY62CDGLrSgen5Sstk7LzAOPNRJKxf3sjhE2jT + 1AlyQ7TuYYSeyOzgaV0Us5okOP3BcAZwM5Dvb4HLyg2S48Auy7Vx34DpWrTr + yxh6v3VJbLYyD2G5bhU4lHzNfaTifiYoV16lmCD4ZlCfQVqjVcKIqztQUGJ4 + NpoJhjAwE07+M3jQWYNdHKoHBTNqe3ZVT3w5ee80zQHZ8yhwISHYB5RWUwzG + FKGBBBl0LuxXJBGv7KorRso9v5TBB1m9V8Yl+k/4YHrOfeZBkU1kTjQ2WnNx + jbzBQzA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBA6Ipn6y8ilwzbgu3Xa + 2N/VgBBn8rx1meQwP0Wc7lYkqn/5] + remote_management: + <<: *remote_params + address: 192.168.25.10 + mac_address: "0c:c4:7a:6c:a2:b2" + interfaces: + - mac_address: "0c:c4:7a:6c:a2:b2" + speed: 1gb + features: null + name: 'nic1' + - mac_address: "0c:c4:7a:6c:a2:b3" + speed: 1gb + features: null + name: 'nic2' + +#################################################### +nodes: + - name: node-9 + node: &nodeparams + type: baremetal + vendor: FUJITSU + model: RX2530 M1 + arch: x86_64 + cpus: 1 + cpu_cflags: Haswell + cores: 16 + memory: 32GB + disks: &disks + - name: 'disk1' + disk_capacity: 2TB + disk_type: hdd + disk_interface: sata + disk_rotation: 7200 + - name: 'disk2' + disk_capacity: 100GB + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + remote_management: + <<: *remote_params + address: 192.168.1.20" + mac_address: "90:1b:0e:6b:e8:a8" + interfaces: + - mac_address: "90:1b:0e:6b:e8:a9" + speed: 1gb + features: null + name: 'nic2' + - mac_address: "90:1b:0e:6b:e8:aa" + speed: 1gb + features: null + name: 'nic3' + - mac_address: "90:1b:0e:6b:e8:ab" + speed: 1gb + features: null + name: 'nic4' + + #################################################### + - name: node-10 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 192.168.1.21" + mac_address: "90:1b:0e:6b:e3:00" + interfaces: + - mac_address: "90:1b:0e:6b:e3:01" + speed: 1gb + features: null + name: 'nic2' + - mac_address: "90:1b:0e:6b:e3:02" + speed: 1gb + features: null + name: 'nic3' + - mac_address: "90:1b:0e:6b:e3:03" + speed: 1gb + features: null + name: 'nic4' + + #################################################### + - name: node-11 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 192.168.1.22 + mac_address: "90:1b:0e:6b:e5:b4" + interfaces: + - mac_address: "90:1b:0e:6b:e5:b5" + speed: 1gb + features: null + name: 'nic2' + - mac_address: "90:1b:0e:6b:e5:b6" + speed: 1gb + features: null + name: 'nic3' + - mac_address: "90:1b:0e:6b:e5:b7" + speed: 1gb + features: null + name: 'nic4' + + #################################################### + - name: node-12 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 192.168.1.23 + mac_address: "90:1b:0e:6b:e8:a8" + interfaces: + - mac_address: "90:1b:0e:6b:e8:a9" + speed: 1gb + features: null + name: 'nic2' + - mac_address: "90:1b:0e:6b:e8:aa" + speed: 1gb + features: null + name: 'nic3' + - mac_address: "90:1b:0e:6b:e8:ab" + speed: 1gb + features: null + name: 'nic4' + + #################################################### + - name: node-13 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 192.168.1.24 + mac_address: "90:1b:0e:6b:e3:00" + interfaces: + - mac_address: "90:1b:0e:6b:e3:01" + speed: 1gb + features: null + name: 'nic2' + - mac_address: "90:1b:0e:6b:e3:02" + speed: 1gb + features: null + name: 'nic3' + - mac_address: "90:1b:0e:6b:e3:03" + speed: 1gb + features: null + name: 'nic4' diff --git a/labs/unh/idf-pod1.yaml b/labs/unh/idf-pod1.yaml new file mode 100644 index 00000000..e8a57f0d --- /dev/null +++ b/labs/unh/idf-pod1.yaml @@ -0,0 +1,113 @@ +############################################################################## +# Copyright (c) 2018 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### UNH ARM POD installer descriptor file ### + +idf: + version: 0.1 + installer: ['apex', 'compass4nfv', 'daisy', 'fuel'] + net_config: + oob: + ip-range: 10.10.52.10-10.10.52.15 + vlan: native + mask: 29 + admin: + interface: 0 + vlan: native + network: 10.10.53.0 + mask: 24 + mgmt: + interface: 0 + vlan: 55 + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 0 + vlan: 56 + network: 10.2.0.0 + mask: 24 + private: + interface: 0 + vlan: 57 + network: 10.1.0.0 + mask: 24 + public: + interface: 0 + vlan: 50 + network: 10.10.50.0 + ip-range: 10.10.50.100-10.10.50.253 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.10.50.1 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: 'admin1_br0' + mgmt: 'mgmt1_br0' + private: '' + public: 'public1_br0' + maas: + # MaaS timeouts (in minutes) + timeout_comissioning: 15 + timeout_deploying: 25 + network: + ntp_strata_host1: 1.pool.ntp.org + ntp_strata_host2: 0.pool.ntp.org + node: + # Ordered list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list + - 'enP2p1s0f1' + - 'enP2p1s0f2' + - 'enP2p1s0f3' + - 'enP2p1s0f4' + - 'enP2p1s0f5' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0002:01:00.1' + - '0002:01:00.2' + - '0002:01:00.3' + - '0002:01:00.4' + - '0002:01:00.5' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + reclass: + node: + - compute_params: &compute_params + common: + nova_cpu_pinning: &nova_cpu_pinning_common "8-47" + compute_hugepages_size: 2M + compute_hugepages_count: 8192 + compute_hugepages_mount: /mnt/hugepages_2M + compute_kernel_isolcpu: *nova_cpu_pinning_common + dpdk: + nova_cpu_pinning: "12-47" + compute_hugepages_size: 2M + compute_hugepages_count: 8192 + compute_hugepages_mount: /mnt/hugepages_2M + compute_kernel_isolcpu: *nova_cpu_pinning_common + compute_dpdk_driver: vfio + compute_ovs_pmd_cpu_mask: "0x300" + compute_ovs_dpdk_socket_mem: "2048" + compute_ovs_dpdk_lcore_mask: "0xC00" + compute_ovs_memory_channels: "2" + dpdk0_driver: vfio-pci + dpdk0_n_rxq: 2 + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params diff --git a/labs/unh/idf-virtual1.yaml b/labs/unh/idf-virtual1.yaml new file mode 100644 index 00000000..0ab8353a --- /dev/null +++ b/labs/unh/idf-virtual1.yaml @@ -0,0 +1,105 @@ +############################################################################## +# Copyright (c) 2019 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### unh-virtual1 Installer descriptor file ### + +idf: + version: 0.1 + net_config: + # NOTE: Network names are likely to change after the PDF spec is updated + oob: + interface: 0 + ip-range: ~ + vlan: native + mask: 24 + # All networks (except OOB) are virtual networks managed by `libvirt` + # Interface indexes are based on Fuel installer defaults + admin: + interface: 0 # when used, will be first vnet interface, untagged + vlan: native + network: 192.168.11.0 + mask: 24 + mgmt: + interface: 1 # when used, will be second vnet interface, untagged + vlan: native + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 4 # when used, will be fifth vnet interface, untagged + vlan: native + network: 192.168.20.0 + mask: 24 + private: + interface: 2 # when used, will be third vnet interface, untagged + vlan: 1000-1999 + network: 10.1.0.0 + mask: 24 + public: + interface: 3 # when used, will be fourth vnet interface, untagged + vlan: native + network: 10.16.0.0 + ip-range: 10.16.0.100-10.16.0.254 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.16.0.1 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: ~ + mgmt: ~ + private: ~ + public: ~ + network: + interface_mtu: 9000 + ntp_strata_host1: 1.pool.ntp.org + ntp_strata_host2: 0.pool.ntp.org + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'ens3' + - 'ens4' + - 'ens5' + - 'ens6' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0000:00:03.0' + - '0000:00:04.0' + - '0000:00:05.0' + - '0000:00:06.0' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + reclass: + node: + - compute_params: &compute_params + common: &compute_params_common + compute_hugepages_size: 2M + compute_hugepages_count: 5120 + compute_hugepages_mount: /mnt/hugepages_2M + dpdk: + <<: *compute_params_common + compute_dpdk_driver: uio + compute_ovs_pmd_cpu_mask: "0x6" + compute_ovs_dpdk_socket_mem: "3072" + compute_ovs_dpdk_lcore_mask: "0x8" + compute_ovs_memory_channels: "2" + dpdk0_driver: igb_uio + dpdk0_n_rxq: 2 + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params diff --git a/labs/unh/pod1.yaml b/labs/unh/pod1.yaml new file mode 100644 index 00000000..0932b58e --- /dev/null +++ b/labs/unh/pod1.yaml @@ -0,0 +1,268 @@ +############################################################################## +# Copyright (c) 2018 Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### UNH ARM POD 1 descriptor file ### + +version: 1.0 +details: + pod_owner: University of New Hampshire + contact: lincoln.lavoie@iol.unh.edu + lab: UNH lab + location: New Hampshire, USA + type: development + link: https://wiki.opnfv.org/pages/viewpage.action?pageId=12389095 +############################################# +jumphost: + name: jump-unh-pod1 + node: + type: baremetal + vendor: cavium + model: thunderx + arch: aarch64 + cpus: 1 + cpu_cflags: fp asimd evtstrm aes pmull sha1 sha2 crc32 + cores: 48 + memory: 64G + disks: + ## /dev/sda + - name: disk1 + disk_capacity: 447G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + os: ubuntu-16.04 + remote_params: &remote_params + type: ipmi + versions: + - 2.0 + user: admin + pass: password + remote_management: + <<: *remote_params + address: 10.10.52.12 + mac_address: "1c:1b:0d:e8:fb:8f" + interfaces: + ## enp2p1s0f1, not connected for now + - mac_address: "1c:1b:0d:e8:fb:87" + features: '' + name: 'nic1' + ## enp2p1s0f2, not connected for now + - mac_address: "1c:1b:0d:e8:fb:88" + speed: 10gb + features: '' + name: 'nic2' + ## enp2p1s0f3, not connected for now + - mac_address: "1c:1b:0d:e8:fb:89" + speed: 10gb + features: '' + name: 'nic3' + ## enp2p1s0f4, not connected for now + - mac_address: "1c:1b:0d:e8:fb:8a" + speed: 10gb + features: '' + name: 'nic4' + ## enp2p1s0f5, not connected for now + - mac_address: "1c:1b:0d:e8:fb:8b" + speed: 10gb + features: '' + name: 'nic5' +########################################## +nodes: + - name: small-cavium-2 + node: &nodeparams + type: baremetal + vendor: cavium + model: thunderx + arch: aarch64 + cpus: 1 + cpu_cflags: fp asimd evtstrm aes pmull sha1 sha2 crc32 + cores: 48 + memory: 64G + disks: &disks + - name: 'disk1' + disk_capacity: 447G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + remote_management: + <<: *remote_params + address: 10.10.52.13 + mac_address: "1c:1b:0d:e7:49:f1" + interfaces: + ## enp2p1s0f1 + - mac_address: "1c:1b:0d:e7:49:e9" + speed: 10gb + features: '' + name: 'nic1' + ## enp2p1s0f2 + - mac_address: "1c:1b:0d:e7:49:ea" + speed: 10gb + features: '' + name: 'nic2' + ## enp2p1s0f3 + - mac_address: "1c:1b:0d:e7:49:eb" + features: '' + name: 'nic3' + ## enp2p1s0f4 + - mac_address: "1c:1b:0d:e7:49:ec" + features: '' + name: 'nic4' + ## enp2p1s0f5 + - mac_address: "1c:1b:0d:e7:49:ed" + features: '' + name: 'nic5' + ########################################## + - name: small-cavium-3 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 10.10.52.14 + mac_address: "1c:1b:0d:e8:fb:2b" + interfaces: + ## enp2p1s0f1 + - mac_address: "1c:1b:0d:e8:fb:23" + speed: 10gb + features: '' + name: 'nic1' + ## enp2p1s0f2 + - mac_address: "1c:1b:0d:e8:fb:24" + speed: 10gb + features: '' + name: 'nic2' + ## enp2p1s0f3 + - mac_address: "1c:1b:0d:e8:fb:25" + features: '' + name: 'nic3' + ## enp2p1s0f4 + - mac_address: "1c:1b:0d:e8:fb:26" + features: '' + name: 'nic4' + ## enp2p1s0f5 + - mac_address: "1c:1b:0d:e8:fb:27" + features: '' + name: 'nic5' + ########################################## + - name: small-cavium-4 + node: *nodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 10.10.52.15 + mac_address: "1c:1b:0d:e8:fb:99" + interfaces: + ## enp2p1s0f1 + - mac_address: "1c:1b:0d:e8:fb:91" + speed: 10gb + features: '' + name: 'nic1' + ## enp2p1s0f2 + - mac_address: "1c:1b:0d:e8:fb:92" + speed: 10gb + features: '' + name: 'nic2' + ## enp2p1s0f3 + - mac_address: "1c:1b:0d:e8:fb:93" + features: '' + name: 'nic3' + ## enp2p1s0f4 + - mac_address: "1c:1b:0d:e8:fb:94" + features: '' + name: 'nic4' + ## enp2p1s0f5 + - mac_address: "1c:1b:0d:e8:fb:95" + features: '' + name: 'nic5' + ################################################# + - name: big-cavium-1 + node: &bignodeparams + type: baremetal + vendor: cavium + model: thunderx + arch: aarch64 + cpus: 2 + cpu_cflags: fp asimd evtstrm aes pmull sha1 sha2 crc32 + cores: 96 + memory: 128G + disks: *disks + remote_management: + <<: *remote_params + address: 10.10.52.10 + mac_address: "40:8d:5c:e0:9f:cb" + interfaces: + ## enp2p1s0f1 + - mac_address: "40:8d:5c:e0:9f:c4" + speed: 10gb + features: '' + name: 'nic1' + ## enp6p1s0f1 + - mac_address: "40:8d:5c:e0:9f:c9" + speed: 40gb + features: '' + name: 'nic2' + ## enp2p1s0f2 + - mac_address: "40:8d:5c:e0:9f:c5" + features: '' + name: 'nic3' + ## enp2p1s0f3 + - mac_address: "40:8d:5c:e0:9f:c6" + features: '' + name: 'nic4' + ## enp2p1s0f4 + - mac_address: "40:8d:5c:e0:9f:c7" + features: '' + name: 'nic5' + ## enp2p1s0f5 + - mac_address: "40:8d:5c:e0:9f:c8" + speed: 40gb + features: '' + name: 'nic6' + ## enp6p1s0f2 + - mac_address: "40:8d:5c:e0:9f:ca" + features: '' + name: 'nic7' + ########################################## + - name: big-cavium-2 + node: *bignodeparams + disks: *disks + remote_management: + <<: *remote_params + address: 10.10.52.11 + mac_address: "40:8d:5c:e0:9f:e6" + interfaces: + ## enp2p1s0f1 + - mac_address: "40:8d:5c:e0:9f:df" + speed: 10gb + features: '' + name: 'nic1' + ## enp6p1s0f1 + - mac_address: "40:8d:5c:e0:9f:e4" + speed: 40gb + features: '' + name: 'nic2' + ## enp2p1s0f2 + - mac_address: "40:8d:5c:e0:9f:e0" + features: '' + name: 'nic3' + ## enp2p1s0f3 + - mac_address: "40:8d:5c:e0:9f:e1" + features: '' + name: 'nic4' + ## enp2p1s0f4 + - mac_address: "40:8d:5c:e0:9f:e2" + features: '' + name: 'nic5' + ## enp2p1s0f5 + - mac_address: "40:8d:5c:e0:9f:e3" + speed: 40gb + features: '' + name: 'nic6' + ## enp6p1s0f2 + - mac_address: "40:8d:5c:e0:9f:e5" + features: '' + name: 'nic7' diff --git a/labs/unh/virtual1.yaml b/labs/unh/virtual1.yaml new file mode 100644 index 00000000..8dc2edda --- /dev/null +++ b/labs/unh/virtual1.yaml @@ -0,0 +1,164 @@ +############################################################################## +# Copyright (c) 2019 Ericsson AB, Mirantis Inc., Enea AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +### unh-virtual1 POD descriptor file ### + +version: 1.0 +details: + pod_owner: University of New Hampshire + contact: lincoln.lavoie@iol.unh.edu + lab: UNH lab + location: New Hampshire, USA + type: development + link: https://wiki.opnfv.org/display/INF/Lab+as+a+Service+2.0 +############################################################################## +jumphost: + name: unh-virtual1 + node: &jumpparams + type: baremetal + vendor: HP + model: ProLiant + arch: x86_64 + cpus: 2 + cpu_cflags: haswell + cores: 22 + memory: 512G + disks: + - name: 'disk1' + disk_capacity: 800G + disk_type: ssd + disk_interface: sata + disk_rotation: 0 + os: ubuntu-16.04 + remote_params: &remoteparas + type: ipmi + versions: + - 1.0 + - 2.0 + user: changeme + pass: changeme + remote_management: + <<: *remoteparas + address: 0.0.0.0/24 + mac_address: "00:00:00:00:00:00" + interfaces: + - name: 'nic1' + speed: 10gb + features: 'dpdk|sriov' + address: 100.64.202.5/24 + mac_address: "00:00:00:00:00:00" + - name: 'nic2' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + - name: 'nic3' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + - name: 'nic4' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" +############################################################################## +nodes: + - name: node-1 + node: &nodeparams + <<: *jumpparams + # Fuel overrides certain params (e.g. cpus, mem) based on node role later + type: virtual + vendor: libvirt + model: virt + cpus: 1 + cores: 4 + memory: 14G + disks: + - name: 'disk1' + disk_capacity: 400G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: &diskrotation 0 + remote_management: &remotemgmt + type: libvirt + user: changeme + pass: changeme + address: 'qemu:///system' + interfaces: &interfaces + - name: 'nic1' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" # MACs will be assigned by libvirt + vlan: native + - name: 'nic2' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic3' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic4' + speed: 1gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + ############################################################################ + - name: node-2 + node: + <<: *nodeparams + # Fuel overrides certain params (e.g. cpus, mem) based on node role later + cpus: 1 + cores: 4 + memory: 8G + disks: &disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-3 + node: + <<: *nodeparams + # Fuel overrides certain params (e.g. cpus, mem) based on node role later + cpus: 1 + cores: 4 + memory: 8G + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-4 + node: &compute_nodeparams + <<: *nodeparams + # Fuel overrides certain params (e.g. cpus, mem) based on node role later + cpus: 2 + cores: 18 + memory: 120G + disks: &compute_disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + - name: 'disk2' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: *diskrotation + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-5 + node: *compute_nodeparams + disks: *compute_disks + remote_management: *remotemgmt + interfaces: *interfaces diff --git a/labs/zte/idf-pod1.yaml b/labs/zte/idf-pod1.yaml index 3bb9e034..ff7ad820 100644 --- a/labs/zte/idf-pod1.yaml +++ b/labs/zte/idf-pod1.yaml @@ -10,11 +10,13 @@ idf: version: 0.1 + installer: ['apex', 'compass4nfv', 'daisy', 'fuel'] net_config: oob: interface: 0 ip-range: 192.168.1.101-192.168.1.105 vlan: null + mask: 29 admin: interface: 0 vlan: native @@ -32,7 +34,7 @@ idf: mask: 24 private: interface: 3 - vlan: 1120 + vlan: 1120-1150 network: 192.168.63.0 mask: 24 public: @@ -46,11 +48,13 @@ idf: fuel: jumphost: bridges: - admin: 'pxebr' + admin: 'br6' mgmt: 'br-mgmt' private: ~ public: 'br-external' network: + ntp_strata_host1: 1.pool.ntp.org + ntp_strata_host2: 0.pool.ntp.org node: # Ordered-list, index should be in sync with node index in PDF - interfaces: &interfaces diff --git a/labs/zte/idf-pod2.yaml b/labs/zte/idf-pod2.yaml index dbe14b9e..2bae8a12 100644 --- a/labs/zte/idf-pod2.yaml +++ b/labs/zte/idf-pod2.yaml @@ -10,11 +10,14 @@ idf: version: 0.1 + # NOTE: Fuel checking is disabled until 'idf.fuel' is defined below + installer: ['apex', 'compass4nfv', 'daisy'] net_config: oob: interface: 0 ip-range: 192.168.1.106-192.168.1.110 vlan: null + mask: 29 admin: interface: 0 vlan: native diff --git a/labs/zte/idf-pod3.yaml b/labs/zte/idf-pod3.yaml index e5e19f4c..25b061a6 100644 --- a/labs/zte/idf-pod3.yaml +++ b/labs/zte/idf-pod3.yaml @@ -10,11 +10,14 @@ idf: version: 0.1 + # NOTE: Fuel checking is disabled until 'idf.fuel' is defined below + installer: ['apex', 'compass4nfv', 'daisy'] net_config: oob: interface: 0 ip-range: 192.168.1.32-192.168.1.36 vlan: null + mask: 29 admin: interface: 0 vlan: native @@ -32,12 +35,12 @@ idf: mask: 24 private: interface: 3 - vlan: 1030 + vlan: native network: 192.168.13.0 mask: 24 public: interface: 3 - vlan: 103 + vlan: native network: 172.10.0.0 mask: 24 gateway: 172.10.0.1 diff --git a/labs/zte/idf-pod9.yaml b/labs/zte/idf-pod9.yaml index 61a225dc..a6c7dfa6 100644 --- a/labs/zte/idf-pod9.yaml +++ b/labs/zte/idf-pod9.yaml @@ -10,12 +10,15 @@ idf: version: 0.1 + # NOTE: For now, only Daisy supports 3-node clusters + installer: ['daisy'] net_config: # NOTE: Network names are likely to change after the PDF spec is updated oob: interface: 0 ip-range: 192.168.176.166-192.168.176.168 vlan: null + mask: 29 admin: interface: 0 vlan: null diff --git a/labs/zte/pod1.yaml b/labs/zte/pod1.yaml index 1b4d1ad6..9a4a8a02 100644 --- a/labs/zte/pod1.yaml +++ b/labs/zte/pod1.yaml @@ -9,6 +9,7 @@ ### ZTE POD 1 descriptor file ### # refering to https://gerrit.opnfv.org/gerrit/#/c/23727/9/config/pod1.yaml +version: 1.0 details: pod_owner: Alex Yang contact: yangyang1@zte.com.cn diff --git a/labs/zte/pod2.yaml b/labs/zte/pod2.yaml index f51d7f79..e5dd5e67 100644 --- a/labs/zte/pod2.yaml +++ b/labs/zte/pod2.yaml @@ -9,6 +9,7 @@ ### ZTE POD 2 descriptor file ### # refering to https://gerrit.opnfv.org/gerrit/#/c/23727/9/config/pod1.yaml +version: 1.0 details: pod_owner: Alex Yang contact: yangyang1@zte.com.cn diff --git a/labs/zte/pod3.yaml b/labs/zte/pod3.yaml index 063b7dfc..b6768396 100644 --- a/labs/zte/pod3.yaml +++ b/labs/zte/pod3.yaml @@ -9,6 +9,7 @@ ### ZTE POD 3 descriptor file ### # refering to https://gerrit.opnfv.org/gerrit/#/c/23727/9/config/pod1.yaml +version: 1.0 details: pod_owner: Alex Yang contact: yangyang1@zte.com.cn diff --git a/labs/zte/pod9.yaml b/labs/zte/pod9.yaml index 76d4aa9e..c18d244e 100644 --- a/labs/zte/pod9.yaml +++ b/labs/zte/pod9.yaml @@ -8,6 +8,7 @@ --- ### ZTE POD 9 descriptor file ### +version: 1.0 details: pod_owner: Zhiijang Hu contact: huzhijiang@zte.com.cn diff --git a/scenarios/README b/scenarios/README new file mode 100644 index 00000000..a858bd7d --- /dev/null +++ b/scenarios/README @@ -0,0 +1 @@ +This folder will contain all scenario descriptor yaml files. diff --git a/scenarios/examples/sdf-fdio-example.yaml b/scenarios/examples/sdf-fdio-example.yaml new file mode 100644 index 00000000..7ea0ba8a --- /dev/null +++ b/scenarios/examples/sdf-fdio-example.yaml @@ -0,0 +1,134 @@ +--- +############################################################################## +# Copyright (c) 2017 Huawei others. +# ulrich.kleber@huawei.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +############################################################################## +# Description: +# This an example for a specific scenario. +# It is derived from: +# apex/config/deploy/os-odl_l2-fdio-ha +############################################################################## + +############################################################################## +# scenario meta-data +scenario-metadata: + name: odl-fdio-devops + title: fdio odl basic for devops + generic-scenario: false + version: 1.0.0 + creation-date: 2017-03-16 + # This scenario introduces fd.io with odl and a basic feature set. + # It is derived from parent odl_l2 nofeature. In a next step, odl_l2 and + # old_l3 functionality shall be merged and provide sfc as well as other + # features. + # This scenario will use newer versions of ODL and other upstream components + # than used in Euphrates. It is planned to release it or DevOps use more + # often than regular OPNFV release cycle. + opnfv-release: colorado + opnfv-version: 3.1.0 # the first opnfv version, the scenario was introduced + owner: Frank Brockners, frank.brockners@cisco.com + # Add additional contact persons e.g. from installers or major components + +############################################################################## + +############################################################################## +# components +components: + - sdn-controller: + component-type: opendaylight + release: carbon + version: ">6.0.1" + features: + - odl_l2 + - vpp + - storage: + component-type: ceph + # $$$$ Should we add num-replicas 3 here? + + - cloud-controller: + type: openstack + release: ocata + modules: + - nova + - cinder + - dashboard + - glance + - heat + - neutron + - tacker + - congress + - dataplane: + type: fdio + release: xx + version: 9.9.9 + features: + - performance: + controller-nodes: + kernel: + hugepages: 1024 # decimal number + hugepagesz: 2M # values like 2M, 1G + intel_iommu: 'on' + iommu: pt + isolcpus: 1,2 + vpp: + main-core: 1 + corelist-workers: 2 + uio-driver: uio_pci_generic + compute-nodes: + kernel: + hugepagesz: 2M + hugepages: 2048 + intel_iommu: 'on' + iommu: pt + isolcpus: 1,2 + vpp: + main-core: 1 + corelist-workers: 2 + uio-driver: uio_pci_generic +############################################################################## + +############################################################################## +# deployment options +deployment-options: + deployment-types: # only intel baremetal is supported + - baremetal: + architecture: x86_64 + availability: + - ha: # We support only HA + nodes: + - name: host1 + roles: + - openstack-controller # need to add fd.io? + - odl + - name: host2 + roles: + - openstack-controller + - odl + - name: host3 + roles: + - openstack-controller + - odl + - name: host4 # need to add fd.io? + roles: + - openstack-compute + - name: host5 + roles: + - openstack-compute + deployment-tools: + # fuel support shall be added soon + - apex: + cpu: intel + pod: baremetal + availability: ha +############################################################################## + +############################################################################## +# Prerequisites +# No other prerequisites +############################################################################## diff --git a/scenarios/examples/sdf-mano-example.yaml b/scenarios/examples/sdf-mano-example.yaml new file mode 100644 index 00000000..66063163 --- /dev/null +++ b/scenarios/examples/sdf-mano-example.yaml @@ -0,0 +1,128 @@ +--- +############################################################################## +# Copyright (c) 2017 Huawei and others. +# ulrich.kleber@huawei.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +############################################################################## +# Description: +# This is an example for a MANO scenario +# It illustrates how MANO components can test orchestration capabilities +# together with various infrastructure scenarios. +# This way, the SDF describes the MANO components (NFVO and VNFM) only. For +# the infrastructure (NFVI and VIM) part another scenario is just referenced; +# that scenario is deployed independently in a separate deployment step, and +# can be deployed even using a different installer tool. +# +# More details can be found in the scenario lifecycle document. +# http://artifacts.opnfv.org/octopus/docs/scenario-lifecycle/index.html +############################################################################## + +############################################################################## +# scenario meta-data: Metadata describing this sdf.yaml file and the +# scenario history and purpose, like in any other scenario descriptor +scenario-metadata: + name: orchestra-example + title: "orchestra main scenario" + generic-scenario: false + version: 1.0.3 + creation-date: 2017-07-13 + # This scenario integrates the main open-baton NFVO components to OPNFV + # infrastructure. + # In the first step, no sdn controller scenarios are supported, but only + # os-nosdn-nofeature and os-nosdn-ovs, installed by compass. + opnfv-release: euphrates + opnfv-version: + - begins: 5.1.0 + owner: Ulrich Kleber, ulrich.kleber@huawei.com + +############################################################################## + +############################################################################## +# components +components: + - nfvo: + type: open-baton + version: 3.0 + # here a list of optional features or artifacts to deploy could follow + + - vnfm: + type: juju + # juju doesn't have release name + version: 2.2 + + - opnfv-infrastructure: + release: euphrates # this determines also ocata as openstack version + version: 5.0.0 + scenarios: + - os-nosdn-nofeature: + options: + - availability: [HA, NOHA] + - tools: [compass, joid] + # this is for the example. In first step only joid will work + - os-nosdn-ovs: + options: + - availability: [HA, NOHA] + - tools: compass + +############################################################################## + +############################################################################## +# deployment options + +deployment-options: + deployment-types: + - baremetal: + architecture: x86_64 + + # $$$$ following proposal 2 from the template (patchset 6) + roles: + - jump-host: + components: + - open-baton + - juju-controller + - controller-node: + components: + - juju-client + # this is in addition to the components defined in the + # opnfv-infrastructure scenario. + - compute-node: # no additional component to be deployed here + + role-distribution: + - ha: + controller-node: 3 + compute-node: 2 + jump-host: 1 + - noha: + controller-node: 1 + compute-node: 4 + jump-host: 1 + + deployment-tools: + # Please note that the component "opnfv-infrastructure" specified their + # own deployment tools and options. Definition here is related only + # for the nfvo and vnfm components specified above. + + - joid: + cpu: intel + pod: baremetal + availability: HA + - joid: + cpu: intel + pod: baremetal + availability: NOHA + - joid: + cpu: intel + pod: virtual + availability: NOHA + +############################################################################## + +############################################################################## +# Prerequisites +prerequisites: + RAM: 128GB diff --git a/scenarios/templates/sdf-template.yaml b/scenarios/templates/sdf-template.yaml new file mode 100644 index 00000000..2f0121be --- /dev/null +++ b/scenarios/templates/sdf-template.yaml @@ -0,0 +1,303 @@ +--- +############################################################################## +# Copyright (c) 2017 Huawei and others. +# ulrich.kleber@huawei.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +############################################################################## +# Description: +# This is the template for all scenario descriptor files (sdf) +# Every OPNFV scenario is described in an sdf.yaml located in the +# scenarios folder in Octopus repo. +# The sdf is provided by the scenario owner and consumed by CI, deployment +# tools and test frameworks. +# +# Main sections: +# +# metadata (owner, history, description) +# list of components (names, versions, submodules) +# deployment options (HA/NOHA, hardware&virtualization, installers, +# configurations) +# other prerequisites (e.g. memory requirement more than pharos spec) +# +# More details can be found in the scenario lifecycle document. +############################################################################## + +############################################################################## +# scenario meta-data # Metadata describing this sdf.yaml file and the +# scenario history and purpose. +scenario-metadata: + name: SDF-Template # mandatory + # This is a free name. + # For Generic scenarios, the main distiguishing components can be included in + # the name. The name will be approved by TSC when the generic scenario is + # established. Examples: OS-ODL-OVSNSH, OS-ONOS, OS-ODL-FDIO, + # OS-OVSBasic, OS-FDIOBasic, ... + # For specific scenarios, the name should characterize the main + # feature that is implemented here. Examples: Bgpvpn, Netvirt-gbp-vpp, + # Dpdk-bar, Onos-sfc, ... + # Final rules for naming will be set by the lifecycle document and TSC + # approval. + title: "SDF template" # mandatory + # descriptive text title maximum 10-12 words telling the main purpose + generic-scenario: false # optional, default = false + version: 1.0.6 # mandatory + # version number of the sdf, three digits separated with dots + creation-date: 2017-05-09 # mandatory + # creation of this sdf file version + # Please add a clear description of the purpose of the scenario, including + # the main benefits and major features (mandatory). + # If applicable, the parent scenario should be mentioned. + opnfv-release: euphrates # mandatory + # the first opnfv release, the scenario was introduced + opnfv-version: + - begins: 5.1.0 # mandatory + # the first opnfv version, the scenario was released with + - ends: 7.3.0 # optional + # the last opnfv version that supports this scenario. Typically the features + # of the scenario should have been merged to generic scenarios then + owner: Ulrich Kleber, ulrich.kleber@huawei.com # mandatory +# author of this file and thus owner of the scenario +# Add additional contact persons e.g. from installers or major components + +############################################################################## + +############################################################################## +# components +# All components/submodules/features in the list shall be deployed +components: # mandatory section + # In this section all components are listed together with their version. + # For some components in addtion submodules or optional features can + # be listed. + - sdn-controller: # optional, default = no sdn controller + # most important categories here are: sdn-controller, cloud-controller, + # storage, virtual-switching, dataplane, nfvo, vnfm, but new categories + # can be introduced any time. + # Every component to be deployed should be listed with such a section. + # If the component has submodules or optional features, they also need + # to be listed. + type: opendaylight # mandatory, other options e.g.onos, ocl, ovn + release: boron # either release or version or both must be given + # upstream version, human readable release name + version: 5.0.1 + # exact semantic version including patch level + # Normally installers will not be able to pick exact semantic versions, but + # if the scenario requires specific versions, this can be checked offline. + # Following syntax variants can be allowed as well: + # version: 5.*.* + # version: ">5.0.3" + features: # optional + # additional feature configurations as recognized by the installers. + - odl_l2 + - sfc + - bgpvpn + + - storage: # optional + type: ceph + + - cloud-controller: # seems to me mandatory + type: openstack # other option could be kubernetes + release: ocata # either release or version or both must be given + version: 15.0.0 + # An OPNFV version can go only with one openstack version. + # Typically installers cannot pick different openstack version, + # but this can be checked offline. + modules: # optional + # Installers have a basic set of modules that are deployed by + # default. Those can be listed optional. Scenario owners can + # list additional optional modules with their name as on + # https://wiki.openstack.org/software/project-navigator, but + # with lower case and dashes, Examples: tacker, kuryr, horizon, + # vitrage, chef-openstack, openstack-charms, etc. + # Independent of big tent, modules can be used if installers + # support their deployment. + - nova + - cinder + - horizon + - glance + - heat + - neutron: + features: # In some cases features need to be listed specifically + - bgpvpn # listing service plugins as neutron features makes + # it easier for installers, they don't need to take this + # information from the features field in the sdn-controller. + - aodh + - tacker + - congress + + - virtual-switching: # optional + # showing with this example how to include a separate + # configuration file for this + type: ovs + release: xx # either release or version or both must be given + version: 2.6.1 + features: # optional + - vsperf: + file: scenarios/ovs-config.yaml +# this file then should contain additional configurations to use like +# hugepage-size, iommu, ... +# it will be treated like a C #include statement. +# Please note, the template cannot show all possible options here. There will be +# more in an additional document. +# Correct usage of the keywords/options will be enforced by a schema. +# Also note that some component related deployment information will be +# in the options section. +############################################################################## + +############################################################################## +# deployment options +# In this section, CI will select one of the listed options and needs to pass +# the information to the installer via a parameter or environment. +deployment-options: # mandatory + deployment-types: # at least one section must be provided + - baremetal: + architecture: x86_64 + features: # optional + - dpdk + - other + # $$$$ Discussion open whether we need features here after adding + # them in roles section + - baremetal: + architecture: arm64 + - virtual: + # $$$$ Discussion open whether this is necessary here. + architecture: x86_64 + features: + - xyz + + # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ + # Discussion open how to specify the distribution of components on nodes. + # Three proposals: + # 1. specify availability options ha, noha by placing functions on nodes + # 2. specify roles like compute-node, controller-node and only their number, + # thus avoid coupling with hostnames and more flexible mapping to different + # sizes of PODs. + # 3. Leave it to installers and just specify whether ha or noha are supported + # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ + # Proposal 1: + availability: # mandatory + # here the configuration for a HA and NONHA deployment is described. + # It is similar to what compass has in host section (minus the POD info), + # or fuel in the dea-override-config or dha-override-config + - ha: # minimum one of ha or noha must be specified + nodes: # a description like this is mandatory + - name: [host1, host2, host3] # avoid to list the same multiple times + roles: + # took this from compass. Is it sufficient? + - openstack-controller + - odl + - ceph-adm + - ceph-mon + - name: [host4, host 5] + roles: + - openstack-compute + - ceph-osd + - noha: + hosts: + - name: host1 + roles: + - openstack-controller + - odl + - ceph-adm + - ceph-mon + - name: host2 + roles: + - openstack-compute + - ceph-osd + - name: host3 + roles: + - openstack-compute + - ceph-osd + + # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ + # Proposal 2: + roles: # mandatory + - controller-node: + components: # list all components that are deployed here. + - openstack: control + - opendaylight + - ceph: [ceph-adm, ceph-mon] + - ovs + - compute-node: + components: + - openstack: compute + - ceph: ceph-osd + - ovs + hardware-features: + - dpdk + - jump-host: # some scenarios, e.g. MANO might deploy components here + + role-distribution: # mandatory + - ha: + controller-node: 3 + compute-node: 2 + jump-host: 1 + - noha: + controller-node: 1 + compute-node: 4 + jump-host: 1 + + # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ + # Proposal 3: + # no specification of nodes/roles here. ha, noha are defined by installers + + deployment-tools: # mandatory + # In the section for each deployment tool, the combinations of the + # first three options have to be listed. CI can pick any of the sections. + - fuel: # at least one section + cpu: intel # optional, default = intel + pod: baremetal + availability: ha + - fuel: + cpu: intel + pod: virtual + availability: ha + - fuel: + cpu: intel + pod: virtual + availability: noha + - fuel: + cpu: arm + pod: baremetal + availability: noha + - compass: + cpu: intel + pod: baremetal + availability: ha + - joid: + cpu: intel + pod: baremetal + availability: ha + +############################################################################## + +############################################################################## +# Prerequisites +# This section will list additional prerequisites. Currently there is only +# one case where a scenario has additional prerequisites to the Pharos spec. +# Open-O deployment requires 64GB of memory while Pharos spec requires 32GB. +# In general it should be preferred to issue such requirements to pharos +# using the pharos change request process, but in some cases in might be +# better to specify additional prerequisites. +# Another use case for these prerequisites will be usage of specilized +# hardware, e.g. for acceleration. This needs further study. + +prerequisites: # The section can be empty or omitted. + - controller-node: # Prerequisites might be different + RAM: 128GB # optional, just to give examples + cpu: dual-core + features: # optional, see example below + - compute-node: + RAM: 128GB + cpu: dual-core + features: + - dpdk + - jumphost: # Prerequisites can be given also for jumphost + RAM: 128GB + cpu: dual-core + +############################################################################## diff --git a/tox.ini b/tox.ini new file mode 100644 index 00000000..8898266c --- /dev/null +++ b/tox.ini @@ -0,0 +1,24 @@ +############################################################################## +# Copyright (c) 2018 Linux Foundation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +[tox] +minversion = 1.6 +envlist = + docs, + docs-linkcheck +skipsdist = true + +[testenv:docs] +deps = -rdocs/requirements.txt +commands = + sphinx-build -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html + echo "Generated docs available in {toxinidir}/docs/_build/html" +whitelist_externals = echo + +[testenv:docs-linkcheck] +deps = -rdocs/requirements.txt +commands = sphinx-build -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck |