Applies To: System Center 2016 - Service Provider Foundation, System Center Technical Preview
Virtual machine checkpoints provide a way to capture the state of a virtual machine. The checkpoint can then be used to restore the virtual machine to the way it was when the checkpoint was created.
To create a checkpoint, you only must reference the GUID of the virtual machine. The users that create the checkpoint must have the checkpoint permission in their user role. For more information, seeHow to Add a Permission to a User Role. A checkpoint is created by using the VMCheckPoints OData collection.
To create a checkpoint by using the .NET Framework
- Connect to the Service Provider Foundation - VMMservice.
- Obtain the ID of the - SpfVMM.VirtualMachinefor which you want to create a checkpoint.
- Create a new instance of the - SpfVMM.VMCheckPointclass.
- Set the - VMIdproperty to the ID of the virtual machine.
- Set the - StampIdproperty to the stamp where the checkpoint is to reside.
- Set the - Nameand- Descriptionproperties to the display name and describe why the checkpoint has been created.
- Call the - AddToVMCheckPointsmethod on the- VMMservice object reference and pass in the checkpoint reference.
- Call the - SaveChangesmethod on the- VMMservice object reference.
To create a checkpoint by using HTTP
- Create a new - HTTPPOST operation.
- Set the URL to the - VMCheckPointscollection: https://server:30006/subscription-id/services/systemcenter/vmm/VMCheckPoints.
- Add the HTTP headers. - Specifically, add the - x-ms-principal-idheader, which can be set to any value.
- Create the HTTP payload that contains the checkpoint entity. The entity should have the following properties set: - Set the - VMIdproperty to the ID of the virtual machine for which you want to create a checkpoint.
- Set the - StampIdproperty to the stamp where the checkpoint is to reside.
- Set the - Nameand- Descriptionproperties to the display name and describe why the checkpoint has been created.
 
- Submit the HTTP request. 
Example
The following code example shows how to create a virtual machine checkpoint. For more information, seeProgramming in Visual Studio with Service Provider Foundation Services.
SpfVMM.VMM vmmService = new SpfVMM.VMM(new Uri("https://wapserver:30005/97FD50F3-1DC0-41B6-A7C0-2B4FF4C3F7E3/services/systemcenter/vmm/"));  
vmmService.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;  
  
var virtualMachine = vmmService.VirtualMachines.Where(vm => vm.ID == new Guid("3499b02c-8dc9-4c0d-aa83-097a1340cbda")).FirstOrDefault();  
  
if (virtualMachine != null)  
{  
    var checkpoint = new SpfVMM.VMCheckPoint();  
    checkpoint.VMId = virtualMachine.ID;  
    checkpoint.Name = "Testing Checkpoint #1";  
    checkpoint.StampId = virtualMachine.StampId;  
    checkpoint.Description = String.Format("This is a snapshot of the VM taken at {0}", DateTime.Now);  
  
    vmmService.AddToVMCheckPoints(checkpoint);  
    vmmService.SaveChanges();  
}  
  
Example
The following code example shows an HTTP request that is sent to the server.
POST https://wapserver:30005/97FD50F3-1DC0-41B6-A7C0-2B4FF4C3F7E3/services/systemcenter/vmm/VMCheckPoints HTTP/1.1  
DataServiceVersion: 3.0;NetFx  
MaxDataServiceVersion: 3.0;NetFx  
Accept: application/json;odata=minimalmetadata  
Accept-Charset: UTF-8  
DataServiceUrlConventions: KeyAsSegment  
User-Agent: Microsoft ADO.NET Data Services  
x-ms-principal-id: user@contoso.com  
Content-Type: application/json;odata=minimalmetadata  
Host: spfn-457:8090  
Content-Length: 463  
Expect: 100-continue  
  
{  
    "odata.type": "VMM.VMCheckPoint",  
    "Accessibility": null,  
    "AddedTime": null,  
    "CheckpointID": null,  
    "Confirm": null,  
    "Description": "This is a snapshot of the VM taken at 8/19/2013 3:02:33 PM",  
    "Enabled": null, "ID": "00000000-0000-0000-0000-000000000000",  
    "ModifiedTime": null,  
    "Name": "Testing Checkpoint #1",  
    "ParentCheckpointID": null,  
    "RunAsynchronously": null,  
    "StampId": "ba4146fa-fb41-4f59-a193-ad00c52a138c",  
    "VMCheckPointAction": null,  
    "VMId": "3499b02c-8dc9-4c0d-aa83-097a1340cbda"  
}  
  
Example
The following code example shows the HTTP response from the server.
HTTP/1.1 201 Created  
Cache-Control: no-cache  
Content-Length: 651  
Content-Type: application/json;odata=minimalmetadata;streaming=true;charset=utf-8  
Location: https://wapserver:30005/97FD50F3-1DC0-41B6-A7C0-2B4FF4C3F7E3/services/systemcenter/vmm/VMCheckPoints(ID=guid'a11cc636-5521-4f88-92b2-cad392911fe0',StampId=guid'ba4146fa-fb41-4f59-a193-ad00c52a138c')  
Server: Microsoft-IIS/8.5  
x-ms-request-id: e381ad2b-2375-45e4-a45f-64a1447a4ef6  
X-Content-Type-Options: nosniff  
request-id: eda9bde6-834a-0001-3608-abed4a83ce01  
DataServiceVersion: 3.0;  
X-AspNet-Version: 4.0.30319  
Persistent-Auth: true  
X-Powered-By: ASP.NET  
Date: Mon, 19 Aug 2013 22:02:36 GMT  
  
{  
    "odata.metadata": "https://wapserver:30005/97FD50F3-1DC0-41B6-A7C0-2B4FF4C3F7E3/services/systemcenter/vmm/$metadata#VMCheckPoints/@Element",  
    "Accessibility": "Public",  
    "AddedTime": "2013-08-19T15:02:36.591591-07:00",  
    "CheckpointID": null,  
    "Confirm": null,  
    "Description": "This is a snapshot of the VM taken at 8/19/2013 3:02:33 PM",  
    "Enabled": true,  
    "ID": "a11cc636-5521-4f88-92b2-cad392911fe0",  
    "ModifiedTime": "2013-08-19T15:02:36.8185926-07:00",  
    "Name": "Testing Checkpoint #1",  
    "ParentCheckpointID": null,  
    "RunAsynchronously": null,  
    "StampId": "ba4146fa-fb41-4f59-a193-ad00c52a138c",  
    "VMCheckPointAction": null,  
    "VMId": "3499b02c-8dc9-4c0d-aa83-097a1340cbda"  
}  
  
See Also
Checkpoints
How to Delete a Virtual Machine Checkpoint
How to Restore a VM From a Checkpoint