VM Image Packaging is a tool for converting qcow2 and img images into a tar.gz format with additional properties and profiles. VM image packaging can be done in two ways:
-
VM Image Packaging Utility: This is an enhanced packaging process that allows the VM owner to run the nfvpt.py utility as a command with a combination of parameters to package the VM.
-
Standard Image Packaging: This is a manual process in which a raw disk image (qcow2, img) is packaged along with the image properties file and bootstrap files (if needed) into a TAR archive file.
VM Image Packaging Utility
A VM image package is a TAR archive file with the root disk image and other descriptor files. This packaging method simplifies the process of a VM image registration and deployment. The attributes specified for the image enable resource requirement specification, creation of VM profiles, and a host of other properties for the VM.
The Cisco Enterprise NFVIS VM image packaging tool, nfvpt.py, helps VM owners package their VMs. The tool takes one or more qcow2 images (raw disk file) as the input file along with VM specific properties, bootstrap configuration files (if any), and generates a compressed TAR file.
Contents
The VM image packaging utility contains the following:
-
nfvpt.py—It is a python based packaging tool that bundles the VM raw disk image/s along with VM specific properties.
-
image_properties_template.xml—This is the template file for the VM image properties file, and has the parameters with default values. If the user provides new values to these parameters while creating the VM package, the default values get replaced with the user-defined values.
-
nfvis_vm_packaging_utility_examples.txt—This file contains examples on how to use the image packaging utility to package a VM image.
Usage
To get the list of parameters that can be included in the command, and to get an explanation of each of the parameters, run the help command for the tool.
nfvpt.py --help
optional arguments:
-h, --help show this help message and exit
--json JSON Provide JSON input for bootstrap variables; mutually
exclusive with custom and bootstrap configs
--newjson NEWJSON Provide JSON input for bootstrap variables; mutually
exclusive with custom and bootstrap configs
--log_dir LOG_DIR Log Directory to for logfiles
--multi_use Add options for use in multiple use-cases
--console_type_serial {true,false}
Attach the console serial to the VM; default is false;
--console_type_serial=true/false;
--root_file_disk_bus {virtio,ide}
root disk file type: --root_file_disk_bus=virtio/ide;
default is virtio
--virtual_interface_model {rtl8139}
--virtual_interface_model=rtl8139; default is none
--thick_disk_provisioning {true,false}
--thick_disk_provisioning=true; default is false
--eager_zero {true,false}
--eager_zero=true; default is false
--nocloud {true,false}
--nocloud=true/false; default is false
--bootstrap_cloud_init_bus_type {ide,virtio}
--bootstrap_cloud_init_bus_type=virtio; default is ide
--bootstrap_cloud_init_drive_type {cdrom,disk}
--bootstrap_cloud_init_drive_type=disk; default is
cdrom
--bootstrap BOOTSTRAP
Every bootstrap file should be a different option Non
HA format: --bootstrap
<mountpoint>:<file1>,<mountpoint>:<file2>... See
usage.txt for more details HA format for SDWAN
NetworkHub: --bootstrap mount_point:<value>,file:<file
2mount>[,<attrib>:<value>] mount_point:<value> and
file:<file2mount> are mandatory followed by one or
more attributes in the format <attrib>:<value>
--interface_hot_add {true,false}
VM supports interface add without power off. Default
is set to true; --interface_hot_add=true/false
--interface_hot_delete {true,false}
VM supports interface delete without power off.
Default is set to false;
--interface_hot_delete=true/false
-v, --verbose verbose
-q, --quiet quiet
--no_compress creates tar file without compressing the input files
--cleanup deletes all the input and configuration files upon tar
file created
--tablet {true,false}
: Add input device of type tablet --tablet=true/false;
--ha_package enable HA packaging
--mgmt_vnic MGMT_VNIC
VM management interface identifier
--pack_dir <DIR> PACK
package all files in directory
Required:
-o PACKAGE_FILENAME, --package_filename PACKAGE_FILENAME
[REQUIRED] file name for the target VNF package name-
default is root disk image name with extension .tar.gz
-i ROOT_DISK_IMAGE, --root_disk_image ROOT_DISK_IMAGE
[REQUIRED] List of root disk images to be bundled
example: --root_disk_image isrv.qcow2;
--root_disk_image isrv1.qcow2,isrv2.qcow2
--prop_template PROP_TEMPLATE
image properties template file name including path
default path is the current dir of the tool and name
is image_properties_template.xml if the user doesn't
input this option example: --prop_template
/usr/bin/image_properties_template.xml
-t VNF_TYPE, --vnf_type VNF_TYPE
[REQUIRED] VNF type, e.g. ROUTER, FIREWALL, vWAAS,
vWLC, and OTHER
-n NAME, --vnf_name NAME
[REQUIRED] Name of the VNF image
-r VNF_VERSION, --vnf_version VNF_VERSION
[REQUIRED] VNF version, e.g. --vnf_version 1.0 or
--vnf_version 0.9
--app_vendor APP_VENDOR
Application Vendor e.g. Cisco, Juniper etc
--monitored {true,false}
[REQUIRED] Monitored VNF: --monitored=true/false;
--optimize {true,false}
[REQUIRED] optimized VM: --optimize=true/false;
HA options:
--ha_capable
--ha_vnic HA_VNIC VM HA vnic
--ha_vnic_count HA_VNIC_COUNT
Number of ha_vnics
Resources:
Resources: min and max - vCPU, memory and disk
--min_vcpu VCPU_MIN min #vCPU : min number of vCPU supported by VM
example:--min_vcpu 2
--max_vcpu VCPU_MAX max #vCPU : max number if vCPU required for VM
example:--max_vcpu 4
--min_mem MEMORY_MB_MIN
min mem : min mem in MB required for VM
example:--min_mem 1024
--max_mem MEMORY_MB_MAX
max mem : max mem in MB required for VM
example:--max_mem 4196
--min_disk ROOT_DISK_GB_MIN
min disk : min disk in GB required for VM
example:--min_disk 8
--max_disk ROOT_DISK_GB_MAX
max disk : max disk in GB required for VM
example:--max_disk 8
--vnic_max VNIC_MAX max number of Vnics allowed for VM example:--vnic_max
8
--vnic_names VNIC_NAMES
list of vnic number to name mapping in format
number:name example --vnic_names
1:GigabitEthernet2,2:GigabitEthernet4
Profile Options:
--profile PROFILE enter the profile name, profile description, no of
vCPU required, min memory required in MB, min disk
space required in MB, example: --profile
profile1,"This is profile 1",2,2048,4096 --profile
profile2,"This is profile 2",4,4096,4096
--default_profile DEFAULT_PROFILE
default profile
Driver Support Options:
--sriov {true,false} Enable/Disable SRIOV support: --sriov=true/false;
default is false
--sriov_list SRIOV_DRIVER_LIST
list of SRIOV drivers example: --sriov_list
igb,igbvf,i40evf
--pcie {true,false} Not supported
--pcie_list PCIE_DRIVER_LIST
Not supported
Privilege/Priority Options:
--privileged {true,false}
Not supported
Custom Properties:
--custom CUSTOM custom properties format: --custom ["propattr_"<attr>:
<value>],key:<value>,[keyattr_<attr>:<value>],type:<va
lue>,val<N>:<value>,[val<N>attr_<attr>:<value>] Allows
specification of custom properties: 0 or more
propattr_<attr>:<value> pairs - 'propattr' is a
keyword and used to specify property attributes
key:<value> pairs 0 or more keyattr_<attr>:value pairs
- 'keyattr' is a keyword and is used to specify key
attributes type:<value> pair - type of value
valN:<value> pair - val1:value,val2:value etc 0 or
more valNattr_<attr>:<value> pairs - 'val<N>attr' is
an attribute for val<N> See usage_examples.txt
The table lists the parameters that can be passed to the nfvpt.py command.
Parameter |
Mandatory/Optional |
Description |
---|---|---|
version |
Not applicable |
Show program's version number and exit. |
help |
Not applicable |
Show this help message and exit. |
package_file_name |
Mandatory |
File name for the target VNF package. The default is the root disk image name with extension .tar.gz. |
disk_img_names |
Mandatory |
List of root disk images to be bundled. Only the qcow2 images are supported. |
img_name |
Mandatory |
Name of the VNF image. |
vnf_type |
Mandatory |
VNF type Supported types are: ROUTER, FIREWALL, vWAAS, vWLC, and OTHER. |
vnf_version |
Mandatory |
VNF version |
monitored |
Mandatory |
VM health monitoring for those VMs that can be bootstrapped Options are: true/false Monitoring timeout period for a monitored VM is 600 seconds by default |
optimize |
Mandatory |
Optimized VM Options are: true/false |
virtual_interface_model |
Optional |
Default is none. |
thick_disk_provisioning |
Optional |
Default is false. |
eager_zero |
Optional |
Default is false. |
bootstrap_cloud_init_bus_type |
Optional |
Default is IDE. |
bootstrap_cloud_init_drive_type |
Optional |
Mounts the day0 configuration file as disk Default is CD-ROM. |
bootstrap |
Optional |
Bootstrap files for VNF. Two parameters are required in the format of dst:src; dst filename including path has to match exactly to what the VM expects; up to 20 bootstrap files are accepted. For example: --bootstrap ovf-env.xml for ISRv and --bootstrap day0-config for ASAv. |
min_vcpu |
Optional |
Minimum number of vCPUs supported by the VM. The default is 1. |
max_vcpu |
Optional |
Maximum number of vCPUs required for the VM. The default is 8. |
min_mem |
Optional |
Minimum memory in MB required for the VM. The default is 4 GB. |
max_mem |
Optional |
Maximum memory in MB required for the VM. Physical memory: 2 GB The default is 8 GB. |
min_disk |
Optional |
Minimum disk in GB required for the VM. The default is 8 GB. |
max_disk |
Optional |
Maximum disk in GB required for the VM. Available disks are SSD and HDD: 15 GB The default is 16 GB |
vnic_max |
Optional |
Maximum number of VNICs allowed for the VM. The default is 8. |
profile |
Optional |
The profile name, profile description, number of vCPUs required, minimum memory required in MB and minimum disk space required in MB. |
default_profile |
Optional |
The default profile. |
sriov |
Optional |
Enable or disable SRIOV support. The default is false. |
sriov_list |
Optional |
List of SRIOV drivers. |
pcie |
Optional |
Not supported. |
pcie_list |
Optional |
Not supported. |
privileged |
Optional |
Not supported. |
custom |
Optional |
Custom properties to be supported and/or passed to the bootstrap configuration with tokenized variables. This is only used for the local portal to display options for the user to choose while deploying. |
pack_dir |
Optional |
package all files in directory |
NFVIS Specific Enhancements
![]() Note |
Use pack_dir option if the *.tar.gz already exists and you want to modify the bootstrap configuration file or image_properties.xml manually. |
The following parameters are added as part of the NFVIS specific enhancements:
--pack_dir <DIR> PACK
package all files in directory
Resources:
--vnic_names VNIC_NAMES
list of vnic number to name mapping in format
number:name example --vnic_names
1:GigabitEthernet2,2:GigabitEthernet4
Usage
Follow the steps to change a single line in day-0 configuration file or add a single option in image_properties.xml:
-
Get the working VM packaging image - isrv*.tar.gz.
-
Extract the contents - tar -xvf isrv*.tar.gz.
-
Modify the file contents as required.
-
nfvpt.py --pack_dir current-working-dir-with-files -i isrv.qcow2 -o isrv.tar.gz
VM Packaging Utility Usage Examples
Given below are the contents of the file nfvis_vm_packaging_utility_examples.txt:
Example 1: Usage for TinyLinux
nfvpt.py -o TinyLinux -i TinyLinux.qcow2 -n TinyLinux -t linux -r 1.0 --monitored false
--min_vcpu 1 --max_vcpu 2 --min_mem 1024 --max_mem 1024 --min_disk 1 --max_disk 2
--vnic_max 1 --optimize false
Example 2: Usage for ASAv
![]() Note |
The bootstrap filename has to be day0-config. This cannot be modified as ASAv looks for the exact filename. |
nfvpt.py -o asav961-201 -i asav961-201.qcow2 -n ASAv -t firewall -r 961-201 --monitored true --bootstrap day0-config:filename1
--min_vcpu 1 --max_vcpu 4 --min_mem 1024 --max_mem 8192 --min_disk 8 --max_disk 16 --vnic_max 8 --optimize true
--profile ASAv5,"ASAv5 profile",1,1024,8192 --profile ASAv10,"ASAv10 profile",1,4096,8192 --profile ASAv30,"ASAv30 profile",4,8192,16384
--default_profile ASAv5
Example 3: Usage for ISRv
![]() Note |
The bootstrap filename has to be ovf-env.xml . This cannot be modified as ISRv looks for the exact filename. |
nfvpt.py -o isrv.16.03.01 -i isrv-universalk9.16.03.01.qcow2 -n ISRv.16.03.01 -t ROUTER -r 16.03.01 --monitored true --privileged true
--bootstrap ovf-env.xml:file1,ios-xe.txt:file2 --min_vcpu 2 --max_vcpu 8 --min_mem 4096 --max_mem 8192 --min_disk 8 --max_disk 8
--vnic_max 8 --optimize true --profile ISRv-small,"ISRv small profile",2,4096,8192 --profile ISRv-medium,"ISRv medium profile",4,4096,8192
--default_profile ISRv-small --sriov_list igb,igbvf,i40evf --custom tech_package,ax
nfvpt.py -o test.1.0 -i test-1.0.qcow2 -n TEST -t OTHER -r 1.0 --monitored true --privileged true
--bootstrap /:bootstrap.xml,/license/lic.txt:license.txt --min_vcpu 2 --max_vcpu 8 --min_mem 4096 --max_mem 8192
--min_disk 8 --max_disk 8 --vnic_max 8 --optimize true --profile small,"small profile",2,4096,8192
--profile medium,"medium profile",4,4096,8192 --default_profile small
In this case, test.1.0.pkg : bootstrap.xml gets mounted as bootstrap.xml at the root, and the license.txt gets mounted as /license/lic.txt.
Example 5: Usage for Palo Alto Firewall
nfvpt.py -o PA_L3_HA -i PA-VM-KVM-8.0.5.qcow2 --json d.json -t firewall -n "PA FIREWALL" -r 8.0.5 --app_vendor PA --monitor true --ha_package
Example 6: Usage for Asav
nfvpt.py -i foo.qcow2 -o asav.tar.gz --json pa1.json --app_vendor cisco -t firewall -r 10 --optimize true -n asav --monitored true --ha_package —ha_capable
Example 7: Usage for csr
nfvpt.py --ha_package --pack_dir /data/intdatastore -i csr1000v-universalk9.16.09.01.qcow2 -o csr1000v-universalk9.16.09.01-ha.tar.gz
Standard VM Image Packaging
The standard VM packaging is based on the Open Virtualization Format (OVF) packaging standard, in which a single file is distributed in open virtualization appliance (OVA) format. The VM image is shared using a TAR archive file with the root disk image and descriptor files.
![]() Note |
Cisco Enterprise NFVIS supports VM packaging in .tar.gz (compressed form of OVA) format. Ensure that all supported third party VM images are available in the supported format. |
Generating a VM Package
Package files are provided for Cisco ISRv, Cisco ASAv, and tiny Linux and Windows server 2000. Vendors are responsible for packaging all third party VMs in the supported format.
-
Create a VM qcow2 image.
-
Create an image_properties.xml file with the VM properties. Ensure that you add all mandatory fields. Include the profiles supported for the VM in this file, and select one default profile. If you do not want to monitor the VM bootup, make the bootup time as -1.
-
Create bootstrap-config or day0-config, if any bootstrap configuration is required for the VM. If the bootstrap configuration requires inputs from the user, use the tokens in the xml or text file. These tokens are populated during the VM deployment with the provided data.
Note
A VM deployment may fail, if there are tokens in the configuration, and the user does not provide the token values in the deployment payload.
-
Create a package.mf file, which lists all the files to be bundled into the .tar.gz file along with checksums.
-
Generate the packaging file using "tar -cvzf ova_file_name list_of_files_to_be_bundled".
For example, tar -cvzf isrv.tar.gz isrv-universalk9.03.16.02.S.155-3.S1a-ext-serial.qcow2 image_properties.xml isr_ovf_env.xml package.mf.
Appendix
VM Image Package Files
The table lists the contents of the VM package that are generated using the packaging tool:
File |
Description |
Mandatory/Optional |
Package Manifest (package.mf) |
Lists the files in the package and the expected checksum for the files. |
Mandatory |
VM image properties (vmname_properties.xml) |
XML file with resources and features supported by the VM |
Mandatory |
VM image (vmname.qcow2 ) |
Image file of the VM. Multiple images are supported. One root_disk image file is mandatory. |
Mandatory |
Bootstrap (bootstrap_file) |
Optional |
Bootstrap files for VNF. Two parameters are required in the format of dst:src; dst filename including path has to match exactly to what the VM expects; up to 20 bootstrap files are accepted. For example: --bootstrap ovf-env.xml for ISRv and --bootstrap day0-config for ASAv. |
- Package Manifest File
- Bootstrap Configuration File
- VM Image Properties File
- Example: Package.mf
- Example: Image Properties
- Example: Bootstrap Configuration File
Package Manifest File
The package manifest XML file provides a list of the files in the package with their names and their expected checksum. SHA1 algorithm (sha1sum) is used to calculate the checksum. This is a mandatory file to be bundled in the VM package. The manifest file must be named as package.mf.
Property Name |
Description |
Property Tag |
Mandatory/Optional |
File information |
XML tree with details of file name, file type, and expected checksum. The root_image and image_properties files are required. |
<file_info> |
Mandatory |
File name |
Name of the file |
<name> |
Mandatory |
File type |
Describes the file type. Supported types:
|
<type> |
Mandatory |
Expected checksum |
The calculated SHA1 checksum to be validated. |
<sha1_checksum> |
Mandatory |
Bootstrap Configuration File
The bootstrap configuration file is an XML or a text file, and contains properties specific to a VM and the environment. Properties can have tokens, which can be populated during deployment time from the deployment payload.
VM Image Properties File
This XML file provides information about the resources supported or required for the VM operation. All mandatory parameters have to be defined. It also supports custom attributes. This is a mandatory file to be bundled in the VM package. The VM package supports up to 10 disks to be bundled into the package.
Property Name |
Description |
Property Tag |
Possible Values |
Mandatory/Optional |
VNF Type |
VM functionality provided. Router and firewall are predefined types. |
<vnf_type> |
Router, firewall, Windows, Linux, and custom_type |
Mandatory |
Name |
Name associated with the VM packaging. This name is referenced for VM deployment. |
<name> |
Any |
Mandatory |
Version |
Version of the package |
<version> |
Any |
Mandatory |
Boot-up time |
Boot-up time (in seconds) of the VNF before it can be reachable via ping. |
<bootup_time> |
Any in seconds, (-1) to not monitor boot-up |
Mandatory |
Root Disk Image Bus |
Root image disk bus |
<root_file_disk_bus> |
virtio, scsi, and ide |
Mandatory |
Disk-1 bus type |
Additional disk1 image disk bus |
<disk_1_file_disk_bus> |
virtio, scsi, and ide |
Optional |
Disk-2 bus type |
Disk2 image disk bus |
<disk_2_file_disk_bus> |
virtio, scsi, and ide |
Optional |
Disk-10 bus type |
Disk10 image disk bus |
<disk_10_file_disk_bus> |
virtio, scsi, and ide |
Optional |
Root Disk Image format |
Root image disk format |
<root_image_disk_format> |
qcow2 and raw |
Mandatory |
Disk-1 Image format |
Additional disk 1 image format |
<disk_1_image_format> |
qcow2 and raw |
Optional |
Disk-2 Image format |
Disk 2 image format |
<disk_2_image_format> |
qcow2 and raw |
Optional |
Disk-10 Image format |
Disk 10 image format |
<disk_10_image_format> |
qcow2 and raw |
Optional |
Serial Console |
Serial console supported |
<console_type_serial> |
true, false |
Optional |
Minimum vCPU |
Minimum vCPUs required for a VM operation |
<vcpu_min> |
Mandatory |
|
Maximum vCPU |
Maximum vCPUs supported by a VM |
<vcpu_max> |
Mandatory |
|
Minimum memory |
Minimum memory in MB required for VM operation |
<memory_mb_min> |
Mandatory |
|
Maximum memory |
Maximum memory in MB supported by a VM |
<memory_mb_max> |
Mandatory |
|
Minimum root disk size |
Minimum disk size in GB required for VM operation |
<root_disk_gb_min> |
Optional |
|
Maximum root disk size |
Maximum disk size in GB supported by a VM |
<root_disk_gb_max> |
Optional |
|
Maximum vNICs |
Maximum number of vNICs supported by a VM |
<vnic_max> |
Mandatory |
|
SRIOV support |
SRIOV supported by VM interfaces. This should have a list of supported NIC device drivers. |
<sriov_supported> |
true, false |
Optional |
SRIOV driver list |
List of drivers to enable SRIOV support |
< sriov_driver_list> |
Optional |
|
PCI passthru support |
PCI passthru support by VM interfaces |
<pcie_supported> |
true, false |
Optional |
PCIE driver list |
List of VNICS to enable PCI passthru support |
< pcie _driver_list> |
Optional |
|
bootstrap_cloud_init_drive_type |
Mounts day0 config file as disk (default is CD-ROM) |
<bootstrap_cloud_init_drive_type> |
disk, cdrom |
Optional |
bootstrap_cloud_init_bus_type |
Default is IDE |
<bootstrap_cloud_init_bus_type> |
virtio, ide |
Optional |
BOOTSTRAP |
Bootstrap files for the VNF. Two parameters are required in the format of dst:src; dst filename including path has to match exactly to what the VM expects; up to 20 bootstrap files are accepted. For example: --bootstrap ovf-env.xml for ISRv and --bootstrap day0-config for ASAv |
< bootstrap_file> |
File name of the bootstrap file |
Optional |
Custom properties |
List of properties can be defined within the custom_property tree. (Example: For ISRv, the technology packages are listed in this block.) If the Cisco Enterprise NFV portal is used to deploy the VM, the portal prompts you for inputs for custom properties fields, and can pass the values to the bootstrap configuration. |
<custom_property> |
Optional |
|
Profiles for VM deployment |
List of VM deployment profiles. Minimum one profile is required |
<profiles> |
Optional |
|
Default profile |
The default profile is used when no profile is specified during deployment. |
<default_profile> |
Optional |
|
Monitoring Support |
A VM supports monitoring to detect failures. |
<monitoring_supported> |
true, false |
Mandatory |
Monitoring Method |
A method to monitor a VM. Currently, only ICMP ping is supported. |
<monitoring_methods> |
ICMPPing |
Mandatory if monitoring is true |
Low latency |
If a VM's low latency (for example, router and firewall) gets dedicated resource (CPU) allocation. Otherwise, shared resources are used. |
<low_latency> |
true, false |
Mandatory |
Privileged-VM |
Allows special features like promiscuous mode and snooping . By default, it is false. |
<privileged_vm> |
true, false |
Optional |
Virtual interface model |
<virtual_interface_model> |
Optional |
||
Thick disk provisioning |
By default, it is false. |
<thick_disk_provisioning> |
true, false |
Optional |
Profile for VM deployment |
A profile defines the resources required for VM deployment. This profile is referenced during VM deployment. |
<profile> |
Optional |
|
Name |
Profile name |
<name> |
Any |
Mandatory |
Description |
Description of the profile |
<description> |
Any |
Mandatory |
vCPU |
vCPU number in a profile |
<vcpus> |
Mandatory |
|
Memory |
Memory - MB in profile |
<memory_mb> |
Mandatory |
|
Root Disk Size |
Disk size - MB in profile . |
<root_disk_mb> |
Mandatory |
|
VNIC Offload |
List of properties that can be set for vnic offload |
<vnic_offload> |
Optional |
|
Generic Segmentation Offload |
Turn generic segmentation offload on or off |
<generic_segmentation_offload> (parent: <vnic_offload>) |
on, off |
Optional |
Generic Receive Offload |
Turn generic receive offload on or off |
<generic_receive_offload> (parent: <vnic_offload>) |
on, off |
Optional |
RX Checksumming |
Turn RX checksumming on or off |
<rx_checksumming> (parent: <vnic_offload>) |
on, off |
Optional |
TX Checksumming |
Turn TX checksumming on or off |
<tx_checksumming> (parent: <vnic_offload>) |
on, off |
Optional |
TCP Segmentation Offload |
Turn TCP segmentation offload on or off |
<tcp_segmentation_offload> (parent: <vnic_offload>) |
on, off |
Optional |
![]() Note |
A virtual console is supported by default. Specify the root disk size as zero for multiple disks (for example, vWaas deployment) as the system does not support populating multiple disk sizes. Actual disk sizes are calculated from the root_disk files. |
Example: Package.mf
** sha1sum - for calculating checksum
<PackageContents>
<File_Info>
<name>ISRv_serial_3.16.02.qcow2</name>
<type>root_image</type>
<sha1_checksum>93de73ee3531f74fddf99377972357a8a0eac7b</sha1_checksum>
</File_Info>
<File_Info>
<name>image_properties.xml</name>
<type>image_properties</type>
<sha1_checksum>c5bb6a9c5e8455b8698f49a489af3082c1d9e0a9</sha1_checksum>
</File_Info>
<File_Info>
<name>ISRv_ovf_env.xml</name>
<type> bootstrap_file_1</type>
<sha1_checksum>c5bb6a9c5e8455b8698f49a489af3082c1d9e0a9</sha1_checksum>
</File_Info>
<File_Info>
<name>ISRv_disk1_image.qcow2</name>
<type>ephemeral_disk1_image</type>
<sha1_checksum>aac24513098ec6c2f0be5d595cd585f6a3bd9868</sha1_checksum>
</File_Info>
</PackageContents>
Example: Image Properties
<?xml version="1.0" encoding="UTF-8"?>
<image_properties>
<vnf_type>ROUTER</vnf_type>
<name>isrv-universalk9</name>
<version>03.16.02</version>
<bootup_time>600</ bootup_time >
<root_file_disk_bus>virtio</root_file_disk_bus>
<root_image_disk_format>qcow2</root_image_disk_format>
<vcpu_min>1</vcpu_min>
<vcpu_max>8</vcpu_max>
<memory_mb_min>4096</memory_mb_min>
<memory_mb_max>8192</memory_mb_max>
<vnic_max>8</vnic_max>
<root_disk_gb_min>8</root_disk_gb_min>
<root_disk_gb_max>8</root_disk_gb_max>
<console_type_serial>true</console_type_serial>
<sriov_supported>true</sriov_supported>
<sriov_driver_list>igb</sriov_driver_list>
<sriov_driver_list>igbvf</sriov_driver_list>
<sriov_driver_list>i40evf</sriov_driver_list>
<pcie_supported>true</pcie_supported>
<pcie _driver_list> igb </pcie_driver_list>
<pcie _driver_list> igbvf</pcie_driver_list>
<pcie _driver_list> i40evf</pcie_driver_list>
<bootstrap_file_1> ovf-env.xml </bootstrap_file_1>
<monitoring_supported>true</monitoring_supported>
<monitoring_methods>ICMPPing</monitoring_methods>
<low_latency>true</low_latency>
<privileged_vm>true</privileged_vm>
<cdrom>true</cdrom>
<custom_property>
<tech_package>ax</tech_package>
<tech_package>sec</tech_package>
<tech_package>ipbase</tech_package>
<tech_package>appx</tech_package>
</custom_property>
<profiles>
<profile>
<name>ISRv1kv-small</name>
<description>ISRv upto 50MBPS performance</description>
<vcpus>1</vcpus>
<memory_mb>4096</memory_mb>
<root_disk_mb>8</root_disk_mb>
</profile>
<profile>
<name>ISRv1kv-medium</name>
<description>ISRv upto 250MBPS performance</description>
<vcpus>2</vcpus>
<memory_mb>4096</memory_mb>
<root_disk_mb>8</root_disk_mb>
</profile>
</profiles>
<default_profile>small</default_profile>
</image_properties>
Example: Bootstrap Configuration File
<?xml version="1.0" encoding="UTF-8"?>
<Environment
xmlns:oe="http://schemas.dmtf.org/ovf/environment/1">
<PropertySection>
<Property oe:key="com.cisco.ISRv.config-version.1" oe:value="1.0"/>
<Property oe:key="com.cisco.isrv.enable-ssh-server.1" oe:value="True"/>
<Property oe:key="com.cisco.isrv.login-password.1" oe:value="admin"/>
<Property oe:key="com.cisco.isrv.login-username.1" oe:value="lab"/>
<Property oe:key="com.cisco.isrv.mgmt-interface.1" oe:value="GigabitEthernet1"/>
<Property oe:key="com.cisco.isrv.mgmt-ipv4-addr.1" oe:value="${NICID_0_IP_ADDRESS}/24"/>
<Property oe:key="com.cisco.isrv.mgmt-ipv4-network.1"/>
<Property oe:key="com.cisco.isrv.license.1" oe:value="${TECH_PACKAGE}"/>
<Property oe:key="com.cisco.isrv.ios-config-0001" oe:value="vrf definition Mgmt-intf"/>
<Property oe:key="com.cisco.isrv.ios-config-0002" oe:value="address-family ipv4"/>
<Property oe:key="com.cisco.isrv.ios-config-0003" oe:value="exit-address-family"/>
<Property oe:key="com.cisco.isrv.ios-config-0004" oe:value="address-family ipv6"/>
<Property oe:key="com.cisco.isrv.ios-config-0005" oe:value="exit-address-family"/>
<Property oe:key="com.cisco.isrv.ios-config-0006" oe:value="exit"/>
<Property oe:key="com.cisco.isrv.ios-config-0007" oe:value="interface GigabitEthernet1"/>
<Property oe:key="com.cisco.isrv.ios-config-0008" oe:value="vrf forwarding Mgmt-intf"/>
<Property oe:key="com.cisco.isrv.ios-config-0009" oe:value="ip address ${NICID_0_IP_ADDRESS} ${NICID_0_NETMASK}"/>
<Property oe:key="com.cisco.isrv.ios-config-0010" oe:value="no shut"/>
<Property oe:key="com.cisco.isrv.ios-config-0011" oe:value="exit"/>
<Property oe:key="com.cisco.isrv.ios-config-0012" oe:value="ip route vrf Mgmt-intf 0.0.0.0 0.0.0.0 ${NICID_0_GATEWAY}"/>
</PropertySection>
</Environment>
Image Properties Template File
The parameters that go into the image properties file are listed in the code extract below.
<?xml version="1.0" encoding="UTF-8"?>
<image_properties>
<vnf_type>ROUTER</vnf_type>
<name>TEMPLATE</name>
<version>1.0</version>
<bootup_time>600</bootup_time>
<root_file_disk_bus>virtio</root_file_disk_bus>
<root_image_disk_format>qcow2</root_image_disk_format>
<vcpu_min>1</vcpu_min>
<vcpu_max>8</vcpu_max>
<memory_mb_min>4096</memory_mb_min>
<memory_mb_max>8192</memory_mb_max>
<vnic_max>8</vnic_max>
<root_disk_gb_min>8</root_disk_gb_min>
<root_disk_gb_max>16</root_disk_gb_max>
<console_type_serial>false</console_type_serial>
<sriov_supported>true</sriov_supported>
<sriov_driver_list>s1</sriov_driver_list>
<sriov_driver_list>s2</sriov_driver_list>
<sriov_driver_list>s3</sriov_driver_list>
<pcie_supported>false</pcie_supported>
<monitoring_supported>true</monitoring_supported>
<monitoring_methods>ICMPPing</monitoring_methods>
<low_latency>true</low_latency>
<privileged_vm>false</privileged_vm>
<cdrom>true</cdrom>
<bootstrap_file_1>b1.xml</bootstrap_file_1>
<bootstrap_file_2>b2.txt</bootstrap_file_2>
<custom_property>
<key>val</key>
</custom_property>
<profiles>
<profile>
<name>small</name>
<description>small</description>
<vcpus>1</vcpus>
<memory_mb>1024</memory_mb>
<root_disk_mb>4096</root_disk_mb>
</profile>
<profile>
<name>medium</name>
<description>medium</description>
<vcpus>2</vcpus>
<memory_mb>4096</memory_mb>
<root_disk_mb>8192</root_disk_mb>
</profile>
</profiles>
<default_profile>small</default_profile>
</image_properties>