aboutsummaryrefslogtreecommitdiffstats
path: root/tools/dpdk_install.yml
blob: 6216713f48f453ef5b58aeadcf34a0ce1bd08e1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
##############################################################################
# Copyright (c) 2017 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
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
heat_template_version: 2015-04-30

description: >
  Used to run VMs with DPDK pktgen

parameters:
  image:
    type: string
    description: Name of the image
    default: yardstick-wily-server

  timeout:
    type: number
    description: Timeout in seconds for WaitCondition, depends on your image and environment
    default: 900

  external_net_name:
    type: string
    description: Name of the external network which management network will connect to
    default: admin_floating_net

resources:
  flavor:
    type: OS::Nova::Flavor
    properties:
      ram: 4096
      vcpus: 4
      disk: 4

  network:
    type: OS::Neutron::Net
    properties:
      name: dpdk_net

  subnet:
    type: OS::Neutron::Subnet
    properties:
      name: dpdk_subnet
      ip_version: 4
      cidr: 192.168.0.0/24
      network: { get_resource: network }

  management_router:
    type: OS::Neutron::Router
    properties:
      name: management_router
      external_gateway_info:
        network: { get_param: external_net_name }

  management_router_interface:
    type: OS::Neutron::RouterInterface
    properties:
      router: { get_resource: management_router }
      subnet: { get_resource: subnet }

  floating_ip:
    type: OS::Neutron::FloatingIP
    properties:
      floating_network: { get_param: external_net_name }

  floating_ip_association:
    type: OS::Nova::FloatingIPAssociation
    properties:
      floating_ip: { get_resource: floating_ip }
      server_id: {get_resource: dpdk_vm}

  keypair:
    type: OS::Nova::KeyPair
    properties:
      name: yardstick-key
      public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD0RkXfW6pksd1cZmXuvXZF/Mlqqq3ahIGcGoULOC97XMpu0vdxMpcUwdjwGqMwEXTVyfHidu0l99bLqOCpSUKCmbWx3ONJ+1kqFx4HwsKEWLiyDYqsuMrDeZT1eFjC5avCoTcrIw2wq5NaBb00lDGagNZOeopaL5YIa4+PizEY23+cir24D67NU21Fg3JE92AIeGlNa4j66L3a+lL0hZq74Dilmp42wm4GsbplRO6KJfyaraowHb1X+TmhCjBgHk6M/OJ9yPAroZyJNcwjMAuuxhAYWRuT3SdbnoUR0RG2VhfDh0qNid7vOqLbhKPeaLLFmzkN+9w3WdCp6LbSYt87 yardstick@yardstick.opnfv.org

  wait_handle:
    type: OS::Heat::WaitConditionHandle

  wait_condition:
    type: OS::Heat::WaitCondition
    properties:
      handle: { get_resource: wait_handle }
      count: 1
      timeout: { get_param: timeout }

  dpdk_vm:
    type: OS::Nova::Server
    depends_on: [subnet, keypair, flavor]
    properties:
      name: { get_param: "OS::stack_name" }
      image: { get_param: image }
      flavor: { get_resource: flavor }
      key_name: {get_resource: keypair}
      networks:
        - network: { get_resource: network }
      config_drive: True
      user_data_format : RAW
      user_data:
        str_replace:
          template: |
            #!/bin/sh
            cat <<'CEOF' > /tmp/dpdk_post_build.sh
            export RTE_SDK=/dpdk
            export RTE_TARGET=x86_64-native-linuxapp-gcc
            cd /dpdk
            make install T=x86_64-native-linuxapp-gcc DESTDIR=destdir
            modprobe uio
            insmod /dpdk/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
            insmod /dpdk/x86_64-native-linuxapp-gcc/kmod/rte_kni.ko
            cd /pktgen-dpdk
            make RTE_SDK=/dpdk
            echo "PCKTGEN BUILT"
            rm -rf /var/lib/cloud/instances
            echo "rm succesfull"
            ls /dpdk/x86_64-native-linuxapp-gcc/kmod/
            $NOTIFY --data-binary '{"status": "SUCCESS"}'
            CEOF
            chmod +x /tmp/dpdk_post_build.sh
            echo "chmod"
            nohup /tmp/dpdk_post_build.sh &
          params:
            $NOTIFY: { get_attr: ['wait_handle', 'curl_cli'] }

outputs:
  vm_uuid:
    description: uuid of the VM
    value: { get_attr: [ dpdk_vm, show,id ] }