コード例 #1
0
        public void CannotResolveRegionWhenMatchingEndpointHasEmptyRegion()
        {
            var expectedRegion = string.Empty;
            var catalog        = new OpenStackServiceCatalog();

            catalog.Add(new OpenStackServiceDefinition("Test Service", "Test-Service",
                                                       new List <OpenStackServiceEndpoint>()
            {
                new OpenStackServiceEndpoint("http://other.endpoint.org", "Some Region", "1.0",
                                             "http://www.someplace.com", "http://www.someplace.com")
            }));

            catalog[0].Endpoints.First().Region = string.Empty;

            catalog.Add(new OpenStackServiceDefinition("Other Test Service", "Test-Service",
                                                       new List <OpenStackServiceEndpoint>()
            {
                new OpenStackServiceEndpoint("http://other.endpoint.org", "some other region", "1.0",
                                             "http://www.someplace.com", "http://www.someplace.com")
            }));
            var resolver = new OpenStackRegionResolver();
            var region   = resolver.Resolve(new Uri("http://nomatching.endpoint.org/v2/tokens"), catalog, "Test Service");

            Assert.AreEqual(expectedRegion, region);
        }
        /// <inheritdoc/>
        public OpenStackServiceCatalog Convert(string payload)
        {
            payload.AssertIsNotNull("payload", "A null service catalog payload cannot be converted.");

            var catalog = new OpenStackServiceCatalog();

            if (String.IsNullOrEmpty(payload))
            {
                return catalog;
            }

            try
            {
                var obj = JObject.Parse(payload);
                var defArray = obj["access"]["serviceCatalog"];
                catalog.AddRange(defArray.Select(ConvertServiceDefinition));
            }
            catch (FormatException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new FormatException(string.Format("Service catalog payload could not be parsed. Payload: '{0}'", payload), ex);
            }

            return catalog;
        }
コード例 #3
0
        public void CannotResolveRegionWithEmptyServiceName()
        {
            var catalog = new OpenStackServiceCatalog();

            var resolver = new OpenStackRegionResolver();

            resolver.Resolve(new Uri("http://other.endpoint.org/v2/tokens"), catalog, string.Empty);
        }
コード例 #4
0
        public void CannotResolveRegionWithNullEndpoint()
        {
            var catalog = new OpenStackServiceCatalog();

            var resolver = new OpenStackRegionResolver();

            resolver.Resolve(null, catalog, "Test Service");
        }
コード例 #5
0
 public void IfAServiceDoesNotExistsCatalogReturnsFalse()
 {
     var expectedEndpoint = new Uri("http://public.endpoint.org");
     var serviceDef = new OpenStackServiceDefinition("Test Service", "Test-Service",
         new List<OpenStackServiceEndpoint>()
         {
             new OpenStackServiceEndpoint(expectedEndpoint.ToString(), "some region", "1.0",
                 "http://www.someplace.com", "http://www.someplace.com")
         });
     var catalog = new OpenStackServiceCatalog { serviceDef };
     Assert.IsFalse(catalog.Exists("NOT IN CATALOG"));
 }
コード例 #6
0
        public void CanSetServiceCatalog()
        {
            var endpoint = new Uri("https://auth.someplace.com/authme");
            var userName = "******";
            var password = "******";
            var tenantId = "12345";

            var catalog = new OpenStackServiceCatalog();

            var cred = new OpenStackCredential(endpoint, userName, password, tenantId);
            cred.SetServiceCatalog(catalog);

            Assert.AreEqual(catalog, cred.ServiceCatalog);
        }
コード例 #7
0
 public void CanGetServicesInRegion()
 {
     var expectedEndpoint = new Uri("http://public.endpoint.org");
     var serviceDef = new OpenStackServiceDefinition("Test Service", "Test-Service",
         new List<OpenStackServiceEndpoint>()
         {
             new OpenStackServiceEndpoint(expectedEndpoint.ToString(), "some region", "1.0",
                 "http://www.someplace.com", "http://www.someplace.com")
         });
     var catalog = new OpenStackServiceCatalog { serviceDef };
     var services = catalog.GetServicesInAvailabilityZone("some region").ToList();
     Assert.AreEqual(1,services.Count());
     Assert.AreEqual("Test Service",services.First().Name);
 }
コード例 #8
0
        IOpenStackCredential GetValidCreds()
        {
            var catalog = new OpenStackServiceCatalog();
            catalog.Add(new OpenStackServiceDefinition("Neutron", "Network Service",
                new List<OpenStackServiceEndpoint>()
                {
                    new OpenStackServiceEndpoint(endpoint, string.Empty, "some version", "some version info", "1,2,3")
                }));

            var creds = new OpenStackCredential(new Uri(this.endpoint), "SomeUser", "Password", "SomeTenant");
            creds.SetAccessTokenId(this.authId);
            creds.SetServiceCatalog(catalog);
            return creds;
        }
コード例 #9
0
        public void CanSetServiceCatalog()
        {
            var endpoint = new Uri("https://auth.someplace.com/authme");
            var userName = "******";
            var password = "******";
            var tenantId = "12345";

            var catalog = new OpenStackServiceCatalog();

            var cred = new OpenStackCredential(endpoint, userName, password, tenantId);

            cred.SetServiceCatalog(catalog);

            Assert.AreEqual(catalog, cred.ServiceCatalog);
        }
コード例 #10
0
        public void IfAServiceDoesNotExistsCatalogReturnsFalse()
        {
            var expectedEndpoint = new Uri("http://public.endpoint.org");
            var serviceDef       = new OpenStackServiceDefinition("Test Service", "Test-Service",
                                                                  new List <OpenStackServiceEndpoint>()
            {
                new OpenStackServiceEndpoint(expectedEndpoint.ToString(), "some region", "1.0",
                                             "http://www.someplace.com", "http://www.someplace.com")
            });
            var catalog = new OpenStackServiceCatalog {
                serviceDef
            };

            Assert.IsFalse(catalog.Exists("NOT IN CATALOG"));
        }
コード例 #11
0
        IOpenStackCredential GetValidCreds()
        {
            var catalog = new OpenStackServiceCatalog();

            catalog.Add(new OpenStackServiceDefinition("Neutron", "Network Service",
                                                       new List <OpenStackServiceEndpoint>()
            {
                new OpenStackServiceEndpoint(endpoint, string.Empty, "some version", "some version info", "1,2,3")
            }));

            var creds = new OpenStackCredential(new Uri(this.endpoint), "SomeUser", "Password", "SomeTenant");

            creds.SetAccessTokenId(this.authId);
            creds.SetServiceCatalog(catalog);
            return(creds);
        }
コード例 #12
0
        public void GettingServicesInRegionWhenNonExistReturnsAnEmptyCollection()
        {
            var expectedEndpoint = new Uri("http://public.endpoint.org");
            var serviceDef       = new OpenStackServiceDefinition("Test Service", "Test-Service",
                                                                  new List <OpenStackServiceEndpoint>()
            {
                new OpenStackServiceEndpoint(expectedEndpoint.ToString(), "some region", "1.0",
                                             "http://www.someplace.com", "http://www.someplace.com")
            });
            var catalog = new OpenStackServiceCatalog {
                serviceDef
            };
            var services = catalog.GetServicesInAvailabilityZone("some other region").ToList();

            Assert.AreEqual(0, services.Count());
        }
 public void CannotSupportUnknownServiceName()
 {
     var client = new StorageServiceClientDefinition();
     var creds = GetValidCreds();
     var catalog =
         new OpenStackServiceCatalog
         {
             new OpenStackServiceDefinition("Swift", "Test",
                 new List<OpenStackServiceEndpoint>()
                 {
                     new OpenStackServiceEndpoint("http://someplace.com", "somewhere", "1.0",
                        "http://www.someplace.com", "http://www.someplace.com")
                 })
         };
     creds.SetServiceCatalog(catalog);
     Assert.IsFalse(client.IsSupported(creds, "BadServiceName"));
 }
コード例 #14
0
        public void CanGetServicesInRegion()
        {
            var expectedEndpoint = new Uri("http://public.endpoint.org");
            var serviceDef       = new OpenStackServiceDefinition("Test Service", "Test-Service",
                                                                  new List <OpenStackServiceEndpoint>()
            {
                new OpenStackServiceEndpoint(expectedEndpoint.ToString(), "some region", "1.0",
                                             "http://www.someplace.com", "http://www.someplace.com")
            });
            var catalog = new OpenStackServiceCatalog {
                serviceDef
            };
            var services = catalog.GetServicesInAvailabilityZone("some region").ToList();

            Assert.AreEqual(1, services.Count());
            Assert.AreEqual("Test Service", services.First().Name);
        }
コード例 #15
0
        public void CannotGetPublicEndpointForAServiceThatIsNotInTheRegion()
        {
            var serviceName      = "Test Service";
            var expectedEndpoint = "http://public.endpoint.org";
            var serviceDef       = new OpenStackServiceDefinition(serviceName, "Test-Service",
                                                                  new List <OpenStackServiceEndpoint>()
            {
                new OpenStackServiceEndpoint(expectedEndpoint, "some region", "1.0",
                                             "http://www.someplace.com", "http://www.someplace.com")
            });

            var catalog = new OpenStackServiceCatalog {
                serviceDef
            };

            catalog.GetPublicEndpoint(serviceName, "Not-in-catalog");
        }
コード例 #16
0
        public void CannotSupportUnknownServiceName()
        {
            var client  = new StorageServiceClientDefinition();
            var creds   = GetValidCreds();
            var catalog =
                new OpenStackServiceCatalog
            {
                new OpenStackServiceDefinition("Swift", "Test",
                                               new List <OpenStackServiceEndpoint>()
                {
                    new OpenStackServiceEndpoint("http://someplace.com", "somewhere", "1.0",
                                                 "http://www.someplace.com", "http://www.someplace.com")
                })
            };

            creds.SetServiceCatalog(catalog);
            Assert.IsFalse(client.IsSupported(creds, "BadServiceName"));
        }
コード例 #17
0
        public void CanGetPublicEndpointForAService()
        {
            var serviceName      = "Test Service";
            var regionName       = "some region";
            var expectedEndpoint = "http://public.endpoint.org";
            var serviceDef       = new OpenStackServiceDefinition(serviceName, "Test-Service",
                                                                  new List <OpenStackServiceEndpoint>()
            {
                new OpenStackServiceEndpoint(expectedEndpoint, "some region", "1.0",
                                             "http://www.someplace.com", "http://www.someplace.com")
            });

            var catalog = new OpenStackServiceCatalog {
                serviceDef
            };
            var endpoint = catalog.GetPublicEndpoint(serviceName, regionName);

            Assert.AreEqual(expectedEndpoint, endpoint);
        }
コード例 #18
0
        public void CanGetServicesInRegionWithMultipleServices()
        {
            var catalog = new OpenStackServiceCatalog();
            catalog.Add(new OpenStackServiceDefinition("Test Service", "Test-Service",
                new List<OpenStackServiceEndpoint>()
                {
                    new OpenStackServiceEndpoint("http://some.endpoint.com", "some region", "1.0",
                        "http://www.someplace.com", "http://www.someplace.com")
                }));

            catalog.Add(new OpenStackServiceDefinition("Other Test Service", "Test-Service",
                new List<OpenStackServiceEndpoint>()
                {
                    new OpenStackServiceEndpoint("http://other.endpoint.org", "some region", "1.0",
                        "http://www.someplace.com", "http://www.someplace.com")
                }));

            var services = catalog.GetServicesInAvailabilityZone("some region").ToList();
            Assert.AreEqual(2, services.Count());
        }
コード例 #19
0
        public void CanResolveRegionWhenNoMatchingServicesButMatchingEndpoint()
        {
            var expectedRegion = "Some Region";
            var catalog = new OpenStackServiceCatalog();
            catalog.Add(new OpenStackServiceDefinition("Test Service", "Test-Service",
                new List<OpenStackServiceEndpoint>()
                {
                    new OpenStackServiceEndpoint("http://the.endpoint.org", "Some Region" , "1.0",
                        "http://www.someplace.com", "http://www.someplace.com")
                }));

            catalog.Add(new OpenStackServiceDefinition("Other Test Service", "Test-Service",
                new List<OpenStackServiceEndpoint>()
                {
                    new OpenStackServiceEndpoint("http://other.endpoint.org", "some other region", "1.0",
                        "http://www.someplace.com", "http://www.someplace.com")
                }));
            var resolver = new OpenStackRegionResolver();
            var region = resolver.Resolve(new Uri("http://the.endpoint.org/v2/tokens"), catalog, "No Matching Service");
            Assert.AreEqual(expectedRegion, region);
        }
コード例 #20
0
        public void CanGetServicesInRegionWithMultipleServices()
        {
            var catalog = new OpenStackServiceCatalog();

            catalog.Add(new OpenStackServiceDefinition("Test Service", "Test-Service",
                                                       new List <OpenStackServiceEndpoint>()
            {
                new OpenStackServiceEndpoint("http://some.endpoint.com", "some region", "1.0",
                                             "http://www.someplace.com", "http://www.someplace.com")
            }));

            catalog.Add(new OpenStackServiceDefinition("Other Test Service", "Test-Service",
                                                       new List <OpenStackServiceEndpoint>()
            {
                new OpenStackServiceEndpoint("http://other.endpoint.org", "some region", "1.0",
                                             "http://www.someplace.com", "http://www.someplace.com")
            }));

            var services = catalog.GetServicesInAvailabilityZone("some region").ToList();

            Assert.AreEqual(2, services.Count());
        }
コード例 #21
0
        public void CanResolveRegionWhenNoMatchingServicesButMatchingEndpoint()
        {
            var expectedRegion = "Some Region";
            var catalog        = new OpenStackServiceCatalog();

            catalog.Add(new OpenStackServiceDefinition("Test Service", "Test-Service",
                                                       new List <OpenStackServiceEndpoint>()
            {
                new OpenStackServiceEndpoint("http://the.endpoint.org", "Some Region", "1.0",
                                             "http://www.someplace.com", "http://www.someplace.com")
            }));

            catalog.Add(new OpenStackServiceDefinition("Other Test Service", "Test-Service",
                                                       new List <OpenStackServiceEndpoint>()
            {
                new OpenStackServiceEndpoint("http://other.endpoint.org", "some other region", "1.0",
                                             "http://www.someplace.com", "http://www.someplace.com")
            }));
            var resolver = new OpenStackRegionResolver();
            var region   = resolver.Resolve(new Uri("http://the.endpoint.org/v2/tokens"), catalog, "No Matching Service");

            Assert.AreEqual(expectedRegion, region);
        }
コード例 #22
0
 /// <inheritdoc/>
 public void SetServiceCatalog(OpenStackServiceCatalog catalog)
 {
     catalog.AssertIsNotNull("catalog", "Service catalog cannot be null or empty.");
     this.ServiceCatalog = catalog;
 }
コード例 #23
0
        public void CannotResolveRegionWithEmptyServiceName()
        {
            var catalog = new OpenStackServiceCatalog();

            var resolver = new OpenStackRegionResolver();
            resolver.Resolve(new Uri("http://other.endpoint.org/v2/tokens"), catalog, string.Empty);
        }
コード例 #24
0
 public void CannotGetPublicEndpointWithANullServiceName()
 {
     var catalog = new OpenStackServiceCatalog();
     catalog.GetPublicEndpoint(null, "Some region");
 }
コード例 #25
0
        public void CannotGetPublicEndpointForAServiceThatIsNotInTheRegion()
        {
            var serviceName = "Test Service";
            var expectedEndpoint = "http://public.endpoint.org";
            var serviceDef = new OpenStackServiceDefinition(serviceName, "Test-Service",
                new List<OpenStackServiceEndpoint>()
                {
                    new OpenStackServiceEndpoint(expectedEndpoint, "some region", "1.0",
                        "http://www.someplace.com", "http://www.someplace.com")
                });

            var catalog = new OpenStackServiceCatalog { serviceDef };
            catalog.GetPublicEndpoint(serviceName, "Not-in-catalog");
        }
コード例 #26
0
 public void CannotGetPublicEndpointWithANullRegion()
 {
     var catalog = new OpenStackServiceCatalog();
     catalog.GetPublicEndpoint("Test Service", null);
 }
コード例 #27
0
        public void CannotGetPublicEndpointWithAnEmptyServiceName()
        {
            var catalog = new OpenStackServiceCatalog();

            catalog.GetPublicEndpoint(string.Empty, "Some region");
        }
コード例 #28
0
        public void CannotGetPublicEndpointWithANullRegion()
        {
            var catalog = new OpenStackServiceCatalog();

            catalog.GetPublicEndpoint("Test Service", null);
        }
コード例 #29
0
 public void GettingServicesInRegionWhenNonExistReturnsAnEmptyCollection()
 {
     var expectedEndpoint = new Uri("http://public.endpoint.org");
     var serviceDef = new OpenStackServiceDefinition("Test Service", "Test-Service",
         new List<OpenStackServiceEndpoint>()
         {
             new OpenStackServiceEndpoint(expectedEndpoint.ToString(), "some region", "1.0",
                 "http://www.someplace.com", "http://www.someplace.com")
         });
     var catalog = new OpenStackServiceCatalog { serviceDef };
     var services = catalog.GetServicesInAvailabilityZone("some other region").ToList();
     Assert.AreEqual(0, services.Count());
 }
コード例 #30
0
        internal void Init(Uri endpoint, string userName, string password, string tenantId, string region)
        {
            this.AuthenticationEndpoint = endpoint;
            this.UserName = userName;
            this.Password = password;
            this.TenantId = tenantId;
            this.Region = region;

            this.ServiceCatalog = new OpenStackServiceCatalog();
        }
コード例 #31
0
 public void CannotGetPublicEndpointWithAnEmptyServiceName()
 {
     var catalog = new OpenStackServiceCatalog();
     catalog.GetPublicEndpoint(string.Empty, "Some region");
 }
コード例 #32
0
        public void CannotResolveRegionWhenMatchingEndpointHasEmptyRegion()
        {
            var expectedRegion = string.Empty;
            var catalog = new OpenStackServiceCatalog();
            catalog.Add(new OpenStackServiceDefinition("Test Service", "Test-Service",
                new List<OpenStackServiceEndpoint>()
                {
                    new OpenStackServiceEndpoint("http://other.endpoint.org", "Some Region" , "1.0",
                        "http://www.someplace.com", "http://www.someplace.com")
                }));

            catalog[0].Endpoints.First().Region = string.Empty;

            catalog.Add(new OpenStackServiceDefinition("Other Test Service", "Test-Service",
                new List<OpenStackServiceEndpoint>()
                {
                    new OpenStackServiceEndpoint("http://other.endpoint.org", "some other region", "1.0",
                        "http://www.someplace.com", "http://www.someplace.com")
                }));
            var resolver = new OpenStackRegionResolver();
            var region = resolver.Resolve(new Uri("http://nomatching.endpoint.org/v2/tokens"), catalog, "Test Service");
            Assert.AreEqual(expectedRegion, region);
        }
コード例 #33
0
        public void CannotGetPublicEndpointWithANullServiceName()
        {
            var catalog = new OpenStackServiceCatalog();

            catalog.GetPublicEndpoint(null, "Some region");
        }
コード例 #34
0
        public void CannotResolveRegionWithNullEndpoint()
        {
            var catalog = new OpenStackServiceCatalog();

            var resolver = new OpenStackRegionResolver();
            resolver.Resolve(null, catalog, "Test Service");
        }
コード例 #35
0
        public void CanGetPublicEndpointForAService()
        {
            var serviceName = "Test Service";
            var regionName = "some region";
            var expectedEndpoint = "http://public.endpoint.org";
            var serviceDef = new OpenStackServiceDefinition(serviceName, "Test-Service",
                new List<OpenStackServiceEndpoint>()
                {
                    new OpenStackServiceEndpoint(expectedEndpoint, "some region", "1.0",
                        "http://www.someplace.com", "http://www.someplace.com")
                });

            var catalog = new OpenStackServiceCatalog { serviceDef };
            var endpoint = catalog.GetPublicEndpoint(serviceName, regionName);
            Assert.AreEqual(expectedEndpoint, endpoint);
        }