独自のハードウェアを使用して、すべてのコンポーネントにバニラ オープンスタックをインストールしましたが、リージョンの問題により、ID 以外のサービスへのアクセスに問題があります。使用されるコードは、作成した管理者アカウントと管理者テナントで次のように呼び出されます...
public static void TestAccess(string userName, string password, string projectName, string projectId)
{
try
{
Uri baseUrl = new Uri(URL_IDENTITY);
CloudIdentityWithProject projectCloudId = new CloudIdentityWithProject();
projectCloudId.Username = userName;
projectCloudId.Password = password;
projectCloudId.ProjectName = projectName;
projectCloudId.ProjectId = new ProjectId(projectId);
OpenStackIdentityProvider idProvider = new OpenStackIdentityProvider(baseUrl, projectCloudId);
UserAccess userAccess = idProvider.Authenticate(projectCloudId);
IEnumerable<ExtendedEndpoint> eps = idProvider.ListEndpoints(userAccess.Token.Id);
string reg = idProvider.DefaultRegion; // This is null
ServiceCatalog[] scs = userAccess.ServiceCatalog;
// Get the list of regions
regionList = new List<string>();
foreach (ServiceCatalog sc in scs)
{
foreach (Endpoint ep in sc.Endpoints)
{
regionList.Add(ep.Region); // This is 'regionOne' in every case
}
}
// Try stuff...
foreach(string region in regionList.Distinct())
{
// Get a list of containers
CloudFilesProvider cfp = new CloudFilesProvider(projectCloudId, idProvider);
// THIS LINE FAILS
IEnumerable<Container> listOfContainers = cfp.ListContainers(region: region);
foreach (Container ctnr in listOfContainers)
{
Console.WriteLine("Container: {0}", ctnr.Name);
}
CloudNetworksProvider cnp = new CloudNetworksProvider(identity: null, identityProvider: idProvider);
IEnumerable<CloudNetwork> networks = cnp.ListNetworks(identity: null, region: region);
foreach (CloudNetwork network in networks)
{
Console.WriteLine("Network[{0}] name: {1}", networkCount, network.Label);
Console.WriteLine("Network[{0}] Id: {1}", networkCount, network.Id);
++networkCount;
}
Console.WriteLine("{0} networks listed.", networkCount);
}
}
catch(Exception ex)
{
throw;
}
}
コードは ListContainers(region: region) の呼び出しでエラーで失敗します...「ユーザーは要求されたサービスまたはリージョンにアクセスできません」ここで、リージョンを指定しないかのように、エラーは単に「リージョンなし」ですが提供されましたが、サービスは地域に依存しないエンドポイントを提供しておらず、ユーザーのアカウントにデフォルトの地域が設定されていません」
現時点では内部ネットワークにのみアクセスしているため、リージョンはまだ重要ではありません...
また、電話をかけるときの注意点は...
CloudNetwork detail = cnp.ShowNetwork(networkGuid, "regionOne");
私が見ることができるネットワークの 'The item was not found or does not exist.' というエラーが返されます。
ヘルプとアドバイスをいただければ幸いです。