Migration Tool Integration Guide

Technical configuration guide for connecting a third-party VMware migration tool to the FFP simulated environment — endpoints, credentials, API details.

Migration Tool Integration Guide

This guide provides the exact endpoints, credentials, and API details an engineer needs to configure a VMware-to-OpenStack migration tool against the Federal Frontier Platform’s evaluation environment.

The environment includes a fully functional VMware vSphere simulator (30 VMs across 2 clusters) and a production OpenStack deployment. Both are accessible for migration tool testing.


VMware vSphere (Source Environment)

The source environment is a govmomi-based vSphere simulator exposing the full vSphere SOAP API. It responds identically to a real vCenter for management plane operations (inventory, power state, networks). Migration tools that use the vSphere SDK or REST API will connect normally.

vSphere SOAP API (SDK)

Parameter Value
Protocol HTTPS (self-signed certificate)
Port 8989
API Version vSphere 7.0+ compatible
Username user
Password pass
SDK URL https://<vcenter-host>:8989/sdk

For pyvmomi / govmomi / PowerCLI connections, set insecure = true or disable certificate verification — the endpoint uses a self-signed certificate.

pyvmomi example:

from pyVim.connect import SmartConnect
import ssl

ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

si = SmartConnect(
    host="<vcenter-host>",
    user="user",
    pwd="pass",
    port=8989,
    sslContext=ctx,
)

govc example:

export GOVC_URL="https://user:pass@<vcenter-host>:8989/sdk"
export GOVC_INSECURE=1
govc ls /
govc find / -type m  # list all VMs

vSphere REST API

Parameter Value
Base URL https://<vcenter-host>:8989/rest
Authentication Basic Auth — user / pass
Session endpoint POST /rest/com/vmware/cis/session

Inventory Summary

Resource Count Details
Datacenters 1 DC0
Clusters 2 DC0_C0 (10 VMs), DC0_C1 (10 VMs)
Standalone Hosts 3 DC0_H0 (10 VMs)
Total VMs 30 All poweredOn, 1 vCPU / 32 MB RAM each
Datastores 2 LocalDS_0, LocalDS_1
Networks Standard port groups + distributed port groups  

Each VM has:

  • 1 vCPU, 32 MB RAM
  • 1 virtual disk (10 GB capacity)
  • 1 NIC on a virtual port group
  • Guest OS: otherGuest
  • VMware Tools: running

Limitations

The vSphere simulator provides the management plane API but does not have real disk backing. This means:

  • VM inventory, power operations, network configuration, and snapshot APIs work normally
  • VDDK / NBD disk access is not supported — there are no real VMDK blocks to read
  • Disk-level migration (e.g., nbdkit+VDDK, VAAI) cannot be tested against this environment
  • Migration tools that download VMDKs via the datastore HTTP API will get empty/placeholder files

For testing disk transfer pipelines, a real vCenter with actual VMDK backing is required. The simulator is suitable for testing discovery, inventory mapping, network analysis, wave planning, power state management, and post-migration verification workflows.


OpenStack (Target Environment)

The target is a production OpenStack deployment running Kolla-Ansible with Ceph Quincy storage. This is a real environment — instances created here consume actual compute and storage resources.

Keystone Authentication

Parameter Value
Auth URL http://<openstack-host>:5000/v3
API Version 3
Username admin
Password <provided-during-eval>
Project admin
User Domain Default
Project Domain Default

clouds.yaml example:

clouds:
  ffp-eval:
    auth:
      auth_url: http://<openstack-host>:5000/v3
      username: admin
      password: <provided-during-eval>
      project_name: admin
      user_domain_name: Default
      project_domain_name: Default
    region_name: RegionOne
    interface: internal
    identity_api_version: 3

Environment variables (openrc):

export OS_AUTH_URL=http://<openstack-host>:5000/v3
export OS_USERNAME=admin
export OS_PASSWORD=<provided-during-eval>
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
export OS_INTERFACE=internal

OpenStack Service Endpoints

All services are on the same host. Standard OpenStack ports:

Service Port Purpose
Keystone (Identity) 5000 Authentication and service catalog
Nova (Compute) 8774 Instance lifecycle
Neutron (Networking) 9696 Networks, subnets, ports, security groups
Glance (Image) 9292 Image upload and management
Cinder (Block Storage) 8776 Volume creation and attachment
Placement 8778 Resource allocation tracking

Available Flavors

Name vCPUs RAM Disk Notes
m1.tiny 1 256 MB 0 GB Smallest — boot-from-volume only
m1.small-bfv 1 2048 MB 0 GB Recommended for small migrations
m2.2 2 2048 MB 0 GB  
m1.small 2 2048 MB 20 GB Has local disk
m2.medium-bfv 2 4096 MB 0 GB  
m2.4 2 4096 MB 0 GB  
m1.large 2 8192 MB 0 GB  
m2.large-bfv 2 8192 MB 0 GB  
m8.20 4 8192 MB 0 GB Largest available

Flavors with disk=0 are boot-from-volume — the instance boots from a Cinder volume, not a local disk.

Available Networks

Name Status Notes
frontier-net ACTIVE Primary workload network — use this for migrated instances
public ACTIVE External/floating IP network

Available Images

Name Size Notes
ubuntu-22.04-jammy 0.6 GB Recommended — RBD-backed, confirmed working
rocky-9.3 1.0 GB Rocky Linux alternative
almalinux-9 0.5 GB AlmaLinux alternative
centos-9-stream 1.4 GB CentOS Stream

Important: Use only RBD-backed images. File-backed images (CirrOS) return HTTP 500 errors.

Storage Backend

Parameter Value
Backend Ceph Quincy (RBD)
Volume Type rbd (backend rbd-1)
Default Type __DEFAULT__ (also Ceph-backed)

Capacity Constraints

This is a shared environment. Observe these limits:

  • Maximum 5 migration instances at a time — VDI desktops and control plane VMs are already running
  • Clean up after testing — delete instances and volumes when done
  • Use the smallest viable flavor — resources are limited
  • Do not modify existing instances — VDI desktops (ffp-vdi-*) and control plane VMs are in use

Network Access

From Within the Kubernetes Cluster

If your migration tool runs as a pod in the evaluation cluster:

Service Cluster DNS Port
vSphere Simulator (SOAP) vcsim.ffp.svc.cluster.local 8989
vSphere REST Shim vcsim-rest-shim.ffp.svc.cluster.local 8080
VMware MCP Server vmware-mcp-server.ffp.svc.cluster.local 50060
OpenStack MCP Server openstack-mcp-server.ffp.svc.cluster.local 8080
Migration API migration-api.ffp.svc.cluster.local 8090

From External (Developer Workstation)

Access via SSH tunnel or Tailscale to the cluster node:

# vSphere SOAP API (for pyvmomi/govmomi/PowerCLI)
kubectl port-forward -n ffp svc/vcsim 8989:8989

# OpenStack APIs (Keystone, Nova, Neutron, Glance, Cinder)
# These are on the OpenStack control plane host, not in k8s
# Use SSH tunnel: ssh -L 5000:<openstack-host>:5000 <jump-host>

# VMware MCP Server (JSON-RPC)
kubectl port-forward -n ffp svc/vmware-mcp-server 50060:50060

# OpenStack MCP Server (JSON-RPC)
kubectl port-forward -n ffp svc/openstack-mcp-server 8081:8080

MCP Server APIs (Optional Integration)

Migration tools can optionally integrate with the FFP MCP servers via JSON-RPC 2.0. This provides a unified API layer across VMware and OpenStack without direct SDK dependencies.

VMware MCP Server

Parameter Value
URL http://<host>:50060/mcp/vmware
Protocol JSON-RPC 2.0 over HTTP POST
Authentication None (cluster-internal)
Content-Type application/json

Example — list all VMs:

curl -X POST http://localhost:50060/mcp/vmware \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "vmware_list_vms",
      "arguments": {}
    },
    "id": 1
  }'

Available tools: vmware_list_vms, vmware_get_vm, vmware_set_vm_power_state, vmware_list_hosts, vmware_list_clusters, vmware_list_datastores, vmware_list_networks, vmware_get_vm_metrics

OpenStack MCP Server

Parameter Value
URL http://<host>:8080/jsonrpc
Protocol JSON-RPC 2.0 over HTTP POST
Authentication None (cluster-internal; the server holds OpenStack credentials)
Content-Type application/json

Example — list all instances:

curl -X POST http://localhost:8080/jsonrpc \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "openstack_list_vms",
      "arguments": {}
    },
    "id": 1
  }'

Available tools: 54 tools across Compute (13), Networking (18), Images (3), Storage (5), Identity (5), Summary (1), ORC GitOps (8). See the Migration MCP Tools reference for the full list.


Migration Monitor Dashboard

The Migration Monitor dashboard provides real-time visualization of both environments during migration testing.

Parameter Value
URL https://migration.example.com
NodePort 30090
Auto-refresh Every 5 seconds

The dashboard polls the VMware and OpenStack MCP servers independently. Any migration activity (whether triggered from the dashboard controls, the Migration API, or an external tool) will be visible in the dashboard as VMs change power state and instances appear.


Quick Verification

After configuring your migration tool, verify connectivity with these checks:

1. vSphere connectivity

# Should return datacenter list
govc ls / -u "https://user:pass@<vcenter-host>:8989/sdk" -k
# Expected: /DC0

2. OpenStack connectivity

# Should return token
openstack token issue
# Should list 30+ VMs
openstack server list

3. End-to-end migration test

# Create a small instance from an image (simulates a completed migration)
openstack server create \
  --flavor m1.small-bfv \
  --image ubuntu-22.04-jammy \
  --network frontier-net \
  --key-name default-keypair \
  --boot-from-volume 20 \
  migration-test-01

# Verify it reaches ACTIVE
openstack server show migration-test-01 -f value -c status
# Expected: ACTIVE

# Clean up
openstack server delete migration-test-01