KubeVirt · Capability

KubeVirt VM Management API — VMLifecycle

KubeVirt VM Management API — VMLifecycle. 6 operations. Lead operation: KubeVirt Pause a VirtualMachineInstance. Self-contained Naftiko capability covering one Kubevirt business surface.

Run with Naftiko KubevirtVMLifecycle

What You Can Do

PUT
Pausevirtualmachineinstance — KubeVirt Pause a VirtualMachineInstance
/v1/apis/kubevirt-io/v1/namespaces/{namespace}/virtualmachineinstances/{name}/pause
PUT
Unpausevirtualmachineinstance — KubeVirt Unpause a VirtualMachineInstance
/v1/apis/kubevirt-io/v1/namespaces/{namespace}/virtualmachineinstances/{name}/unpause
PUT
Migratevirtualmachine — KubeVirt Migrate a VirtualMachine
/v1/apis/kubevirt-io/v1/namespaces/{namespace}/virtualmachines/{name}/migrate
PUT
Restartvirtualmachine — KubeVirt Restart a VirtualMachine
/v1/apis/kubevirt-io/v1/namespaces/{namespace}/virtualmachines/{name}/restart
PUT
Startvirtualmachine — KubeVirt Start a VirtualMachine
/v1/apis/kubevirt-io/v1/namespaces/{namespace}/virtualmachines/{name}/start
PUT
Stopvirtualmachine — KubeVirt Stop a VirtualMachine
/v1/apis/kubevirt-io/v1/namespaces/{namespace}/virtualmachines/{name}/stop

MCP Tools

kubevirt-pause-virtualmachineinstance

KubeVirt Pause a VirtualMachineInstance

idempotent
kubevirt-unpause-virtualmachineinstance

KubeVirt Unpause a VirtualMachineInstance

idempotent
kubevirt-migrate-virtualmachine

KubeVirt Migrate a VirtualMachine

idempotent
kubevirt-restart-virtualmachine

KubeVirt Restart a VirtualMachine

idempotent
kubevirt-start-virtualmachine

KubeVirt Start a VirtualMachine

idempotent
kubevirt-stop-virtualmachine

KubeVirt Stop a VirtualMachine

idempotent

Capability Spec

vm-vmlifecycle.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: KubeVirt VM Management API — VMLifecycle
  description: 'KubeVirt VM Management API — VMLifecycle. 6 operations. Lead operation: KubeVirt Pause a VirtualMachineInstance.
    Self-contained Naftiko capability covering one Kubevirt business surface.'
  tags:
  - Kubevirt
  - VMLifecycle
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    KUBEVIRT_API_KEY: KUBEVIRT_API_KEY
capability:
  consumes:
  - type: http
    namespace: vm-vmlifecycle
    baseUri: https://{kubernetes-api-server}
    description: KubeVirt VM Management API — VMLifecycle business capability. Self-contained, no shared references.
    resources:
    - name: apis-kubevirt.io-v1-namespaces-namespace-virtualmachineinstances-name-pause
      path: /apis/kubevirt.io/v1/namespaces/{namespace}/virtualmachineinstances/{name}/pause
      operations:
      - name: pausevirtualmachineinstance
        method: PUT
        description: KubeVirt Pause a VirtualMachineInstance
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: apis-kubevirt.io-v1-namespaces-namespace-virtualmachineinstances-name-unpause
      path: /apis/kubevirt.io/v1/namespaces/{namespace}/virtualmachineinstances/{name}/unpause
      operations:
      - name: unpausevirtualmachineinstance
        method: PUT
        description: KubeVirt Unpause a VirtualMachineInstance
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: apis-kubevirt.io-v1-namespaces-namespace-virtualmachines-name-migrate
      path: /apis/kubevirt.io/v1/namespaces/{namespace}/virtualmachines/{name}/migrate
      operations:
      - name: migratevirtualmachine
        method: PUT
        description: KubeVirt Migrate a VirtualMachine
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: apis-kubevirt.io-v1-namespaces-namespace-virtualmachines-name-restart
      path: /apis/kubevirt.io/v1/namespaces/{namespace}/virtualmachines/{name}/restart
      operations:
      - name: restartvirtualmachine
        method: PUT
        description: KubeVirt Restart a VirtualMachine
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: apis-kubevirt.io-v1-namespaces-namespace-virtualmachines-name-start
      path: /apis/kubevirt.io/v1/namespaces/{namespace}/virtualmachines/{name}/start
      operations:
      - name: startvirtualmachine
        method: PUT
        description: KubeVirt Start a VirtualMachine
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: apis-kubevirt.io-v1-namespaces-namespace-virtualmachines-name-stop
      path: /apis/kubevirt.io/v1/namespaces/{namespace}/virtualmachines/{name}/stop
      operations:
      - name: stopvirtualmachine
        method: PUT
        description: KubeVirt Stop a VirtualMachine
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
  exposes:
  - type: rest
    namespace: vm-vmlifecycle-rest
    port: 8080
    description: REST adapter for KubeVirt VM Management API — VMLifecycle. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/apis/kubevirt-io/v1/namespaces/{namespace}/virtualmachineinstances/{name}/pause
      name: apis-kubevirt-io-v1-namespaces-namespace-virtualmachineinstances-name-pause
      description: REST surface for apis-kubevirt.io-v1-namespaces-namespace-virtualmachineinstances-name-pause.
      operations:
      - method: PUT
        name: pausevirtualmachineinstance
        description: KubeVirt Pause a VirtualMachineInstance
        call: vm-vmlifecycle.pausevirtualmachineinstance
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/apis/kubevirt-io/v1/namespaces/{namespace}/virtualmachineinstances/{name}/unpause
      name: apis-kubevirt-io-v1-namespaces-namespace-virtualmachineinstances-name-unpause
      description: REST surface for apis-kubevirt.io-v1-namespaces-namespace-virtualmachineinstances-name-unpause.
      operations:
      - method: PUT
        name: unpausevirtualmachineinstance
        description: KubeVirt Unpause a VirtualMachineInstance
        call: vm-vmlifecycle.unpausevirtualmachineinstance
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/apis/kubevirt-io/v1/namespaces/{namespace}/virtualmachines/{name}/migrate
      name: apis-kubevirt-io-v1-namespaces-namespace-virtualmachines-name-migrate
      description: REST surface for apis-kubevirt.io-v1-namespaces-namespace-virtualmachines-name-migrate.
      operations:
      - method: PUT
        name: migratevirtualmachine
        description: KubeVirt Migrate a VirtualMachine
        call: vm-vmlifecycle.migratevirtualmachine
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/apis/kubevirt-io/v1/namespaces/{namespace}/virtualmachines/{name}/restart
      name: apis-kubevirt-io-v1-namespaces-namespace-virtualmachines-name-restart
      description: REST surface for apis-kubevirt.io-v1-namespaces-namespace-virtualmachines-name-restart.
      operations:
      - method: PUT
        name: restartvirtualmachine
        description: KubeVirt Restart a VirtualMachine
        call: vm-vmlifecycle.restartvirtualmachine
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/apis/kubevirt-io/v1/namespaces/{namespace}/virtualmachines/{name}/start
      name: apis-kubevirt-io-v1-namespaces-namespace-virtualmachines-name-start
      description: REST surface for apis-kubevirt.io-v1-namespaces-namespace-virtualmachines-name-start.
      operations:
      - method: PUT
        name: startvirtualmachine
        description: KubeVirt Start a VirtualMachine
        call: vm-vmlifecycle.startvirtualmachine
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/apis/kubevirt-io/v1/namespaces/{namespace}/virtualmachines/{name}/stop
      name: apis-kubevirt-io-v1-namespaces-namespace-virtualmachines-name-stop
      description: REST surface for apis-kubevirt.io-v1-namespaces-namespace-virtualmachines-name-stop.
      operations:
      - method: PUT
        name: stopvirtualmachine
        description: KubeVirt Stop a VirtualMachine
        call: vm-vmlifecycle.stopvirtualmachine
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: vm-vmlifecycle-mcp
    port: 9090
    transport: http
    description: MCP adapter for KubeVirt VM Management API — VMLifecycle. One tool per consumed operation, routed inline
      through this capability's consumes block.
    tools:
    - name: kubevirt-pause-virtualmachineinstance
      description: KubeVirt Pause a VirtualMachineInstance
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: vm-vmlifecycle.pausevirtualmachineinstance
      outputParameters:
      - type: object
        mapping: $.
    - name: kubevirt-unpause-virtualmachineinstance
      description: KubeVirt Unpause a VirtualMachineInstance
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: vm-vmlifecycle.unpausevirtualmachineinstance
      outputParameters:
      - type: object
        mapping: $.
    - name: kubevirt-migrate-virtualmachine
      description: KubeVirt Migrate a VirtualMachine
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: vm-vmlifecycle.migratevirtualmachine
      outputParameters:
      - type: object
        mapping: $.
    - name: kubevirt-restart-virtualmachine
      description: KubeVirt Restart a VirtualMachine
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: vm-vmlifecycle.restartvirtualmachine
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: kubevirt-start-virtualmachine
      description: KubeVirt Start a VirtualMachine
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: vm-vmlifecycle.startvirtualmachine
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: kubevirt-stop-virtualmachine
      description: KubeVirt Stop a VirtualMachine
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: vm-vmlifecycle.stopvirtualmachine
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.