private async Task<CloudServersServerNode> CreateServerNodeAsync(CloudServersProvider provider, Server server, FlavorDetails[] flavors, ServerImage[] images) { FlavorDetails flavor = flavors.FirstOrDefault(i => server.Flavor != null && string.Equals(server.Flavor.Id, i.Id, StringComparison.OrdinalIgnoreCase)); try { if (flavor == null && server.Flavor != null) flavor = await Task.Run(() => provider.GetFlavor(server.Flavor.Id)); } catch (ResponseException) { // ignore flavor = null; } ServerImage image = images.FirstOrDefault(i => server.Image != null && string.Equals(server.Image.Id, i.Id, StringComparison.OrdinalIgnoreCase)); try { if (image == null && server.Image != null) image = await Task.Run(() => provider.GetImage(server.Image.Id)); } catch (ResponseException) { // ignore image = null; } return new CloudServersServerNode(provider, server, flavor, image); }
public void TestGetImage() { IComputeProvider provider = new CloudServersProvider(Bootstrapper.Settings.TestIdentity); IEnumerable <ServerImage> images = ListAllImagesWithDetails(provider); Assert.IsNotNull(images); if (!images.Any()) { Assert.Inconclusive("The test could not proceed because the specified account and/or region does not appear to contain any images."); } foreach (ServerImage image in images) { Assert.IsNotNull(image); ServerImage details = provider.GetImage(image.Id); Assert.AreEqual(image.Created, details.Created); Assert.AreEqual(image.DiskConfig, details.DiskConfig); Assert.AreEqual(image.Id, details.Id); //Assert.AreEqual(image.Links, details.Links); Assert.AreEqual(image.MinDisk, details.MinDisk); Assert.AreEqual(image.MinRAM, details.MinRAM); Assert.AreEqual(image.Name, details.Name); //Assert.AreEqual(image.Progress, details.Progress); Assert.AreEqual(image.Server, details.Server); //Assert.AreEqual(image.Status, details.Status); Assert.AreEqual(image.Updated, details.Updated); } }
public void TestGetImage() { IComputeProvider provider = new CloudServersProvider(Bootstrapper.Settings.TestIdentity); IEnumerable<ServerImage> images = ListAllImagesWithDetails(provider); Assert.IsNotNull(images); if (!images.Any()) Assert.Inconclusive("The test could not proceed because the specified account and/or region does not appear to contain any images."); foreach (ServerImage image in images) { Assert.IsNotNull(image); ServerImage details = provider.GetImage(image.Id); Assert.AreEqual(image.Created, details.Created); Assert.AreEqual(image.DiskConfig, details.DiskConfig); Assert.AreEqual(image.Id, details.Id); Assert.IsNotNull(details.Links); Assert.AreEqual(image.Links.Length, details.Links.Length); for (int i = 0; i < image.Links.Length; i++) { // this could start to fail if the server reorders links; if that occurs the test should be rewritten to allow it Assert.AreEqual(image.Links[i].Href, details.Links[i].Href); Assert.AreEqual(image.Links[i].Rel, details.Links[i].Rel); } Assert.AreEqual(image.MinDisk, details.MinDisk); Assert.AreEqual(image.MinRAM, details.MinRAM); Assert.AreEqual(image.Name, details.Name); Assert.IsTrue(details.Progress >= 0 && details.Progress <= 100); if (image.Server != null) { Assert.IsNotNull(details.Server); Assert.AreEqual(image.Server.Id, details.Server.Id); } Assert.IsNotNull(details.Status); Assert.AreEqual(image.Updated, details.Updated); } }
public static void Main(string[] args) { // step-1 var username = "******"; var 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 (); }
public static void Main(string[] args) { // step-1 var username = "******"; var 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 = "2"; 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(); }