#
#   Copyright 2016 RIFT.io Inc
#
#   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:   
    -   connection-point:
        -   name: ping_vnfd/cp0
            type: VPORT
        -   name: ping_vnfd/cp1
            type: VPORT
        description: This is an example RIFT.ware VNF
        http-endpoint:
        -   path: api/v1/ping/stats
            polling_interval_secs: '2'
            port: '18888'
        id: 8759e766-8b99-11e6-9664-02b76030c497
        logo: rift_logo.png
        mgmt-interface:
            dashboard-params:
                path: api/v1/ping/stats
                port: '18888'
            port: '18888'
            vdu-id: iovdu_0
        monitoring-param:
        -   description: no of ping requests
            group-tag: Group1
            http-endpoint-ref: api/v1/ping/stats
            id: '1'
            json-query-method: NAMEKEY
            name: ping-request-tx-count
            units: packets
            value-type: INT
            widget-type: COUNTER
        -   description: no of ping responses
            group-tag: Group1
            http-endpoint-ref: api/v1/ping/stats
            id: '2'
            json-query-method: NAMEKEY
            name: ping-response-rx-count
            units: packets
            value-type: INT
            widget-type: COUNTER
        name: ping_vnfd
        placement-groups:
        -   member-vdus:
            -   member-vdu-ref: iovdu_0
            name: Eris
            requirement: Place this VM on the Kuiper belt object Eris
            strategy: COLOCATION
        short-name: ping_vnfd
        vdu:
        -   count: '1'
            external-interface:
            -   name: eth0
                virtual-interface:
                    type: OM-MGMT
                vnfd-connection-point-ref: ping_vnfd/cp0
            -   name: eth1
                virtual-interface:
                    type: VIRTIO
                vnfd-connection-point-ref: ping_vnfd/cp1
            id: iovdu_0
            image: Fedora-x86_64-20-20131211.1-sda-ping.qcow2
            image-checksum: a6ffaa77f949a9e4ebb082c6147187cf
            name: iovdu_0
            vm-flavor:
                memory-mb: '512'
                storage-gb: '4'
                vcpu-count: '1'
        vendor: RIFT.io
        version: '1.0'
        vnf-configuration:
            config-attributes:
                config-delay: '0'
                config-priority: '2'
            config-template: "\n#!/bin/bash\n\n# Rest API config\nping_mgmt_ip='<rw_mgmt_ip>'\n\
                ping_mgmt_port=18888\n\n# VNF specific configuration\npong_server_ip='<rw_connection_point_name\
                \ pong_vnfd/cp0>'\nping_rate=5\nserver_port=5555\n\n# Make rest API\
                \ calls to configure VNF\ncurl -D /dev/stdout \\\n    -H \"Accept:\
                \ application/vnd.yang.data+xml\" \\\n    -H \"Content-Type: application/vnd.yang.data+json\"\
                \ \\\n    -X POST \\\n    -d \"{\\\"ip\\\":\\\"$pong_server_ip\\\"\
                , \\\"port\\\":$server_port}\" \\\n    http://${ping_mgmt_ip}:${ping_mgmt_port}/api/v1/ping/server\n\
                rc=$?\nif [ $rc -ne 0 ]\nthen\n    echo \"Failed to set server info\
                \ for ping!\"\n    exit $rc\nfi\n\ncurl -D /dev/stdout \\\n    -H\
                \ \"Accept: application/vnd.yang.data+xml\" \\\n    -H \"Content-Type:\
                \ application/vnd.yang.data+json\" \\\n    -X POST \\\n    -d \"{\\\
                \"rate\\\":$ping_rate}\" \\\n    http://${ping_mgmt_ip}:${ping_mgmt_port}/api/v1/ping/rate\n\
                rc=$?\nif [ $rc -ne 0 ]\nthen\n    echo \"Failed to set ping rate!\"\
                \n    exit $rc\nfi\n\n\noutput=$(curl -D /dev/stdout \\\n    -H \"\
                Accept: application/vnd.yang.data+xml\" \\\n    -H \"Content-Type:\
                \ application/vnd.yang.data+json\" \\\n    -X POST \\\n    -d \"{\\\
                \"enable\\\":true}\" \\\n    http://${ping_mgmt_ip}:${ping_mgmt_port}/api/v1/ping/adminstatus/state)\n\
                if [[ $output == *\"Internal Server Error\"* ]]\nthen\n    echo $output\n\
                \    exit 3\nelse\n    echo $output\nfi\n\nexit 0\n"
            script:
                script-type: bash