Skip to content

v1.6.0-beta.2

Pre-release
Pre-release

Choose a tag to compare

@carolynvs carolynvs released this 12 Jan 17:25
· 150 commits to master since this release
  • Addressed #551. This means that the OpenStack.NET SDK configuration no longer impacts the global Flurl or Json.NET configuration.
  • OpenStackNet.Configure is being deprecated as it's no longer necessary to explicitly call, unless extending the SDK and require http/json customizations.

1.6. Release Overview

This beta release is part of the greater effort to split out Rackspace specific functionality out of OpenStack.NET into the Rackspace SDK. It also is our first release using Semantic Versioning, e.g. versions follow the scheme: breaking.feature.bug.

The 1.6 release is focused on OpenStack Compute v2.1, including the microversions.

net.openstack.Providers.Rackspace.CloudServersProvider will be marked as deprecated in v1.6 and removed in v2.0. The replacement is OpenStack.Compute.v2_1.ComputeService or if you are a Rackspace user, the upcoming v0.3 of the Rackspace package, will provide Rackspace.CloudServers.v2.CloudServerService.

Download v1.6.0-beta.2 on nuget.org

Here is an example of how to use the replacement service.

// Configure authentication
var user = new CloudIdentityWithProject
{
    Username = username,
    Password = password,
    ProjectName = project
};
var identity = new OpenStackIdentityProvider(new Uri(identityEndpoint), user);
var compute = new ComputeService(identity, region);

Console.WriteLine("Looking up the tiny flavor...");
var flavors = await compute.ListFlavorsAsync();
var tinyFlavor = flavors.FirstOrDefault(x => x.Name.Contains("tiny"));
if(tinyFlavor == null) throw new Exception("Unable to find a flavor with the 'tiny' in the name!");

Console.WriteLine("Looking up the cirros image...");
var images = await compute.ListImagesAsync(new ImageListOptions {Name = "cirros"});
var cirrosImage = images.FirstOrDefault();
if(cirrosImage == null) throw new Exception("Unable to find an image named 'cirros'");

Console.WriteLine("Creating Sample server... ");
var serverDefinition = new ServerCreateDefinition("sample", cirrosImage.Id, tinyFlavor.Id);
var server = await compute.CreateServerAsync(serverDefinition);

Console.WriteLine("Waiting for the sample server to come online...");
await server.WaitUntilActiveAsync();

Console.WriteLine("Taking a snaphot of the sample server...");
var snapshot = await server.SnapshotAsync(new SnapshotServerRequest("sample-snapshot"));
await snapshot.WaitUntilActiveAsync();

Console.WriteLine();
Console.WriteLine("Sample Server Information:");
Console.WriteLine();
Console.WriteLine($"Server Id: {server.Id}");
Console.WriteLine($"Server Name: {server.Name}");
Console.WriteLine($"Server Status: {server.Status}");
Console.WriteLine($"Server Address: {server.IPv4Address}");
Console.WriteLine();
Console.WriteLine("Sample Snapshot Information:");
Console.WriteLine();
Console.WriteLine($"Image Id: {snapshot.Id}");
Console.WriteLine($"Image Name: {snapshot.Name}");
Console.WriteLine($"Image Status: {snapshot.Status}");
Console.WriteLine($"Image Type: {snapshot.Type}");
Console.WriteLine();

Console.WriteLine("Deleting Sample Server...");
await snapshot.DeleteAsync();
await server.DeleteAsync();