Release Notes for Service Provider Foundation 2012 SP1
Applies To: System Center 2016 - Service Provider Foundation, System Center Technical Preview
These release notes present information about issues that you might encounter when you are working with the Service Provider Foundation for System Center 2012 Service Pack 1 (SP1) . These issues might require a workaround or they might be important considerations for programming with Service Provider Foundation.
For release notes regarding installation, general usage, and using cmdlets with Service Provider Foundation, see Release Notes for Service Provider Foundation.
Product Notes
Service Provider Foundation may have performance issues when a tenant is assigned to more than one stamp
Description: Performance issues might occur when a tenant is assigned to more than one stamp.
Workaround: We recommend that a tenant be assigned to only one stamp.
Virtual machines cannot be stored in the library
Description: The VMM service cannot be used to store virtual machines in the library. An attempt to do this fails with an error.
Workaround: There is no workaround.
Programming Tips and Troubleshooting
When you update a RunAsAccount, the Domain, UserName, and Password properties must be provided together
Description: Updating a Domain, UserName, or Password individually on a RunAsAccount will fail and can have unforeseen consequences on the RunAsAccount object data.
Workaround: When you update a RunAsAccount with a new UserName or Password, both values must be supplied.
You cannot query roles by name or tenant ID
Description: Roles cannot be queried for by Name or TenantID.
Workaround: Get all existing roles, and then perform your own filtering.
You cannot read resources that are associated with a user role
Description: The ability to list a Virtual Machine, Virtual Machine Template, and Services that have been assigned to a user role is not available.
Workaround: Manually get all Virtual Machines, Virtual Machine Templates, and Services, and then cross-reference the appropriate User Role property.
The HTTP GET operation on the VMNetworks collection does not return all properties
Description: When you get an existing VMNetwork object, the object that is embedded in the VPNGateway
property has the AutoSelectCertificate
and RunAsAccountID
properties set to null.
Workaround: None. This affects only the HTTP GET operation. The HTTP PUT and POST operations still respect the VPNGateway
property.
When you delete a RunAsAccount object that is in use, an error is not returned
Description: When you try and delete a RunAsAccount that is currently in use, a success will be returned instead of an error.
Workaround: After you try and delete a RunAsAccount, query for the account object to verify that it no longer exists.
When you store a virtual machine with an invalid VMM library path or an invalid virtual machine state, the wrong error is returned
Description: If a virtual machine is stored and has an invalid VMM library path or an invalid virtual machine state, such as paused or stored, the HTTP web response error will be InternalServerError
, but it should be Forbidden
.
Workaround: None
Operations on the Virtual Machine Manager (VMM) service may throw a timeout exception
Description: If you perform an action on the Virtual Machine Manager service that takes an excessively long time, a time-out exception may be thrown. For example, if you create a new virtual hard disk from a large .vhd file, the operation may result in a time-out.
Workaround: Increase the time-out value for the service context object. The following example sets the time-out value to five minutes.
SpfVMM.VMM vmmService = new SpfVMM.VMM(new Uri("https://contoso:8090/SC2012/VMM/Microsoft.Management.Odata.svc/"));
vmmService.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
vmmService.Timeout = 5 * 60;
Programming with JSON does not work
Description: According to the odata.org website, the use of $format=json
should enable OData for JSON. But when you are using this with Service Provider Foundation, it does not work.
Workaround: Use $format=jsonverbose
, or specify the HTTP accept header value application/json;odata=verbose
.
Using $skiptoken or continuation with a service does not work
Description: Normally, you can page results by using the $skiptoken token, but for Service Provider Foundation this does not work. You can trigger a $skiptoken
parameter by using the following code.
// This is how to trigger the $skiptoken
SpfVMM.VMM vmmService = new SpfVMM.VMM(new Uri("https://contoso:8090/SC2012/VMM/Microsoft.Management.Odata.svc/"));
vmmService.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
List<SpfVMM.Cloud> cloudsList = new List<SpfVMM.Cloud>();
System.Data.Services.Client.DataServiceQueryContinuation<SpfVMM.Cloud> skiptoken = null;
System.Data.Services.Client.QueryOperationResponse<SpfVMM.Cloud> response = vmmService.Clouds.Execute() as System.Data.Services.Client.QueryOperationResponse<SpfVMM.Cloud>;
// get resources from the first page, then you can access next link URI
foreach (SpfVMM.Cloud cloud in response)
{
cloudsList.Add(cloud);
}
// get resources from the next link URI (skiptoken link)
skiptoken = response.GetContinuation();
if (skiptoken != null)
{
response = vmmService.Execute<SpfVMM.Cloud>(skiptoken) as System.Data.Services.Client.QueryOperationResponse<SpfVMM.Cloud>;
// The response variable is null when it should not be.
}
Workaround: Use the $skip
and $top
parameters. The following example demonstrates how to use the $skip
and $top
parameters from C#.
var queryVMs = (from vm in vmmService.VirtualMachines
orderby vm.Name
select vm).Skip(10).Take(3);
$skip
and $top
can both be used from a URI:
https://contoso:8090/SC2012/VMM/Microsoft.Management.Odata.svc/VirtualMachines?$skip=10&$top=3&$orderby=Name
Resources for the VMM service will aggregate across stamps not in the scope of the tenant
Description: Querying a resource from the VMM service may include results from stamps that are not assigned to the current tenant.
Workaround: Recycle the IIS VMM AppPool, and then run the query again.
Creating virtual machines from a template may leave behind temporary templates
**Description:**When a virtual machine is created from a template, a temporary virtual machine template is created. This temporary template might not be automatically deleted, and it might remain in the system. This might cause problems if you try to delete resources, such as a virtual network, that the temporary template uses.
Workaround: Manually delete the template.
Querying for a cloud by ID includes two entries instead of a single entry
Description: Duplicate entry results appear when you query for a cloud by identifier, as in this example:
https://contoso:8090/SC2012/VMM/Microsoft.Management.Odata.svc/Clouds()?$filter=ID eq guid'e56fb358-8132-4da9-adff-3193a6c72b1d'
Workaround: Specify the stamp ID in the query.
Filtering a virtual machine by name does not return any result entries
Description: No result entries are returned when a virtual machine is queried for by name, by using a filter, without a StampId
, as in this example:
Workaround: Specify the stamp ID in the query.
Lengthy operations, such as create VM, are asynchronous
Description: In the use of the Service Provider Foundation representational state transfer (REST) API, lengthy operations, such as create VM, stop VM, delete VM, are asynchronous, and calls return as soon as the requested operation is accepted.
In general, HTTP get operations are synchronous. Also synchronous are HTTP set operations on simple object properties, such as the amount of RAM for a virtual machine. All other operations that require underlying components to carry out multiple steps of actions are carried out asynchronously.
Workaround: You can periodically issue gets on the jobs object to find out the status of the operation.
See Also
Getting Started
Release Notes for Service Provider Foundation 2012 R2
Programming in Visual Studio with Service Provider Foundation Services