66dbd3e86a
This patch adds limited support for .NET SDK to the First App tutorial. Because the "official" .NET SDK has very limited functions to call OpenStack API, so I decided use another .NET SDK from https://github.com/openstacknetsdk/openstack.net, It still has not full features to support all the steps though, it will be a good start to show people how to use C# to develop an OpenStack Cloud App. Change-Id: I0f7d731ffd119383bd915d980e6245265cc866ca Partial-Bug: 1449333
113 lines
2.5 KiB
C#
113 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
using net.openstack.Core.Domain;
|
|
using net.openstack.Core.Providers;
|
|
using net.openstack.Providers.Rackspace;
|
|
|
|
namespace openstack
|
|
{
|
|
class MainClass
|
|
{
|
|
public static void Main (string[] args)
|
|
{
|
|
// step-1
|
|
var username = "your_auth_username";
|
|
var password = "your_auth_password";
|
|
var project_name = "your_project_name";
|
|
var project_id = "your_project_id";
|
|
var auth_url = "http://controller:5000/v2.0";
|
|
var region = "your_region_name";
|
|
var networkid = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
|
|
|
|
var identity = new CloudIdentityWithProject () {
|
|
Username = username,
|
|
Password = password,
|
|
ProjectId = new ProjectId(project_id),
|
|
ProjectName = project_name
|
|
};
|
|
|
|
var identityProvider = new OpenStackIdentityProvider (
|
|
new Uri (auth_url));
|
|
|
|
var conn = new CloudServersProvider (identity, identityProvider);
|
|
|
|
// step-2
|
|
var images = conn.ListImages (region: region);
|
|
foreach (var image in images) {
|
|
Console.WriteLine (string.Format(
|
|
"Image Id: {0} - Image Name: {1}",
|
|
image.Id,
|
|
image.Name));
|
|
}
|
|
|
|
// step-3
|
|
var flavors = conn.ListFlavors (region: region);
|
|
foreach (var flavor in flavors) {
|
|
Console.WriteLine (string.Format(
|
|
"Flavor Id: {0} - Flavor Name: {1}",
|
|
flavor.Id,
|
|
flavor.Name));
|
|
}
|
|
|
|
// step-4
|
|
var image_id = "97f55846-6ea5-4e9d-b437-bda97586bd0c";
|
|
var _image = conn.GetImage(image_id, region:region);
|
|
Console.WriteLine (string.Format(
|
|
"Image Id: {0} - Image Name: {1}",
|
|
_image.Id,
|
|
_image.Name));
|
|
|
|
// step-5
|
|
var flavor_id = "42";
|
|
var _flavor = conn.GetFlavor (flavor_id, region: region);
|
|
Console.WriteLine (string.Format(
|
|
"Flavor Id: {0} - Flavor Name: {1}",
|
|
_flavor.Id,
|
|
_flavor.Name));
|
|
|
|
// step-6
|
|
var instance_name = "testing";
|
|
var testing_instance = conn.CreateServer (instance_name,
|
|
_image.Id,
|
|
_flavor.Id,
|
|
region: region,
|
|
networks: new List<String> () { networkid });
|
|
Console.WriteLine (string.Format(
|
|
"Instance Id: {0} at {1}",
|
|
testing_instance.Id,
|
|
testing_instance.Links
|
|
));
|
|
|
|
// step-7
|
|
var instances = conn.ListServers(region:region);
|
|
foreach (var instance in instances) {
|
|
Console.WriteLine (string.Format(
|
|
"Instance Id: {0} at {1}",
|
|
testing_instance.Id,
|
|
testing_instance.Links));
|
|
}
|
|
|
|
// step-8
|
|
conn.DeleteServer(testing_instance.Id, region:region);
|
|
|
|
// step-9
|
|
|
|
// step-10
|
|
|
|
// step-11
|
|
|
|
// step-12
|
|
|
|
// step-13
|
|
|
|
// step-14
|
|
|
|
// step-15
|
|
|
|
Console.Read ();
|
|
}
|
|
}
|
|
}
|
|
|