C++ Console Application that works with VMware Virtual Disk Development Kit

Job ID: 37965393

Budget: $750 – $1,500 USD

Project Description:
Use Microsoft Visual Studio and VMware Virtual Disk API (part of VMware Virtual Disk Development Kit) to create C++ application that provides ability to copy virtual machine virtual disk (.vmdk) files to/from storage connected to a VMware ESXi host server given specific parameters (see requirements).

Requirements:
- Programming Language: C++
- Development Environment: Microsoft Visual Studio 2022
- Runtime Platform: Application must be able to run on Windows and Linux
- Application Type: Console (non-GUI)
- Application Parameters:
• host server (required IF topology = 1 or 3: FQDN or IP)
• host server port (required IF topology = 1 or 3: port used for connecting to host server)
• username (required IF topology = 1 or 3: username for connecting to host server)
• password (required IF topology = 1 or 3: password for connecting to host server)
• topology (required: 1 = source VMDK is remote, target VDMK is local | 2 = source VMDK is remote, target VDMK is remote | 3 = source VMDK is local, target VDMK is remote | 4 = source VMDK is local, target VMDK is local)
• transport mode (required IF topology = 1 or 3: nbd | nbdssl)
• source VMDK path (required: path to source virtual disk file)
• target VMDK path (required: path to destination virtual disk file)
• target VMDK format (required: 1 = managed, thick | 2 = managed, thin | 3 = hosted, thick | 4 = hosted, split, thick | 5 = hosted, thin | 6 = hosted, split, thin) *note: target VMDK formats 3-6 are only valid when topology = 1 or 4
• log file path (optional, logging disabled if omitted)
- Include appropriate error handing and reporting:
• Invalid parameters
• Host server not found
• Authentication failure
• Permissions issue
• Source VMDK file locked
• Target folder does not exist
• Target VMDK file already exists
• Not enough free space to create target VMDK file
- Application must report (write to console) % complete (while running) and successful completion or detailed error message on failure
- Application MUST be able to copy VMDK to/from ESXi host server at >= 1GB/minute (given basic hardware and 1Gb network connection)
- Application must support VMware ESXi 6.5 - 8.0

To successfully complete this project you must provide:
- Signed confidentiality and non-disclosure agreement before starting project
- Complete, royalty-free source code that is free of any third-party licensing constraints
- Source code must be well documented and formatted according to C++ development standards
- Detailed documentation on how application works
- Detailed instructions on how to setup duplicate development environment for further development and testing
- Detailed instructions on how to compile source code and create distributed application (.exe)
- Detailed instructions on how to setup application for use on Windows and Linux