#  Copyright 2020 Whitestack LLC
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
#  implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

vnfd:vnfd-catalog:
  vnfd:
    - id: vEPC_vnfd
      name: vEPC_vnfd # To product-name
      short-name: vEPC_vnfd # Deprecated
      description: Generated by OSM package generator
      vendor: OSM_VNFONB_TF # To do provider
      version: "1.0"
      mgmt-interface: # To mgmt-cp
        cp: spgwmme-mgmt
      ip-profiles: # To deployment flavour (DF)
        - name: s6a-fefe
          description: s6a network
          ip-profile-params:
            ip-version: ipv4
            subnet-address: 10.0.6.0/24
            dhcp-params:
              enabled: true
      vdu:
        - id: spgwmme
          name: spgwmme
          description: spgwmme
          count: 1 # To DF vdu-profile or instantiation-level
          vm-flavor:
            vcpu-count: 2
            memory-mb: 4096
            storage-gb: 10
          image: "nextepc-spgwmme-base"
          cloud-init-file: spgwmme-init
          interface:
            - name: eth0
              type: EXTERNAL
              virtual-interface:
                type: PARAVIRT
              external-connection-point-ref: spgwmme-mgmt
            - name: eth1
              type: EXTERNAL
              virtual-interface:
                type: PARAVIRT
              external-connection-point-ref: spgwmme-s1
            - name: eth2
              type: EXTERNAL
              virtual-interface:
                type: PARAVIRT
              external-connection-point-ref: spgwmme-sgi
            - name: eth3
              type: INTERNAL
              virtual-interface:
                type: PARAVIRT
              internal-connection-point-ref: spgwmme-s6a
          internal-connection-point:
            - id: spgwmme-s6a
              name: spgwmme-s6a
              type: VPORT
          monitoring-param: # To be removed (feature 8157)
            - id: "spgw_cpu_util"
              nfvi-metric: "cpu_utilization"
            - id: "spgw_memory_util"
              nfvi-metric: "average_memory_utilization"
        - id: hss
          name: hss
          description: hss
          count: 1
          vm-flavor:
            vcpu-count: 1
            memory-mb: 2048
            storage-gb: 10
          image: "nextepc-hss-base"
          cloud-init-file: hss-init
          interface:
            - name: eth0
              type: EXTERNAL
              virtual-interface:
                type: PARAVIRT
              mgmt-interface: true
              external-connection-point-ref: hss-mgmt
            - name: eth1
              type: INTERNAL
              virtual-interface:
                type: PARAVIRT
              internal-connection-point-ref: hss-s6a
          internal-connection-point:
            - id: hss-s6a
              name: hss-s6a
              type: VPORT
          vdu-configuration:
            initial-config-primitive:
              - seq: "1"
                name: config
                parameter:
                  - name: ssh-hostname
                    value: <rw_mgmt_ip>
                  - name: ssh-username
                    value: ubuntu
                  - name: ssh-password
                    value: <password>
              - seq: "2"
                name: configure-hss
                parameter:
                  - name: spgw-ip
                    data-type: STRING
                    value: <spgw_ip>
                  - name: hss-ip
                    data-type: STRING
                    value: <hss_ip>
              - seq: "3"
                name: restart-hss
            juju:
              charm: hsscharm
      internal-vld:
        - id: s6a
          ip-profile-ref: s6a-fefe
          internal-connection-point:
            - id-ref: spgwmme-s6a
            - id-ref: hss-s6a
          name: s6a
      connection-point:
        - name: spgwmme-mgmt
        - name: spgwmme-s1
        - name: spgwmme-sgi
        - name: hss-mgmt
      vnf-configuration:
        initial-config-primitive:
          - seq: "1"
            name: config
            parameter:
              - name: ssh-hostname
                value: <rw_mgmt_ip>
              - name: ssh-username
                value: ubuntu
              - name: ssh-password
                value: <password>
          - seq: "2"
            name: configure-spgw
            parameter:
              - name: spgw-ip
                data-type: STRING
                value: <spgw_ip>
              - name: hss-ip
                data-type: STRING
                value: <hss_ip>
          - seq: "3"
            name: restart-spgw
        config-primitive:
          - name: add-route
            parameter:
              - name: external-prefix
                data-type: STRING
                default-value: "8.8.8.8/32"
              - name: next-hop
                data-type: STRING
                default-value: "192.168.2.1"
        juju:
          charm: spgwcharm
      monitoring-param:
        - id: "spgw_cpu_util"
          name: "spgw_cpu_util"
          aggregation-type: AVERAGE
          vdu-monitoring-param:
            vdu-ref: "spgwmme"
            vdu-monitoring-param-ref: "spgw_cpu_util"
        - id: "spgw_memory_util"
          name: "spgw_memory_util"
          aggregation-type: AVERAGE
          vdu-monitoring-param:
            vdu-ref: "spgwmme"
            vdu-monitoring-param-ref: "spgw_memory_util"
