Releases: openstacknetsdk/openstack.net
v1.7.6
v1.7.5
v1.7.4
Fixes #628 which was preventing range headers from being passed to Cloud Files.
Here's an example of how to pass in range headers:
var cloudfiles = new CloudFilesProvider(user);
var headers = new Dictionary<string, string>();
headers.Add("Range", "bytes=0-4");
using (var buffer = new MemoryStream())
{
cloudfiles.GetObject("test", "helloworld.html", buffer, 4096, headers, region);
using (var reader = new StreamReader(buffer))
{
buffer.Position = 0;
Console.WriteLine("Read: {0}", reader.ReadToEnd());
// Read: hello
}
}
v1.7.3
v1.7.1
This fixes a regression in our NuGet package introduced in v1.7.0. We are now building against the lowest version of our dependencies listed in our nuspec to avoid assembly binding redirect problems.
v1.7.0
- Support Neutron Floating IPs. #606
- Support Layer 3 Networking extension for listing Network Security Groups and Rules #619. Thanks @JiangZehua!
- Fix behavior when ObjectStorage.MoveObject is called with the same source and destination. #613
- Update json.net reference to support versions 6-8. #614
v1.6.1
Split OpenStack Compute and Rackspace Cloud Servers
1.6. Release Overview
This 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. The majority of the API has been implemented in this release; see the list of remaining compute api items that will be addressed in a later release.
net.openstack.Providers.Rackspace.CloudServersProvider
has been marked as deprecated in v1.6 and will be 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
.
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();
Heads Up
net.openstack.Providers.Rackspace.CloudServersProvider
will be marked as deprecated in v1.6 and removed in v2.0. The replacement isOpenStack.Compute.v2_1.ComputeService
or if you are a Rackspace user, the upcoming v0.3 of the Rackspace package, will provideRackspace.CloudServers.v2.CloudServerService
.OpenStackNet.Configure
is being deprecated as it's no longer necessary to explicitly call, unless extending the SDK and require http/json customizations.
User Requests Completed
- Addressed #551. This means that the OpenStack.NET SDK configuration no longer modifies the global Flurl or Json.NET configuration.
- Addressed #344, adds support for
Server.Suspend
andServer.Resume
. - Addressed #561, adds support for booting servers from a volume or snapshot.
- Addressed #339, removes ambiguous situations where a property may or may not be populated depending on the service call. Going forward the following standard is used:
List<Resource>Summaries()
returns<Resource>Summary
objects which contain a subset of data for a resource, usually the name and id.List<Resource>s()
returns full<Resource>
objects.Get<Resource>()
returns the full<Resource>
object.- References to a resource from another, such as
Server.Image
, use<Resource>Reference
with just the id populated and provideGet<Resource>()
to retrieve the full object.
v1.6.0-beta.2
- 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();
Restrict NuGet Dependency Version Range
Update our NuGet package to set an upper-bound on our dependency versions. This prevents VS 2015 Update 1 from auto-updating our dependencies to unsupported versions.