2017-03-24 8 views
1

ここに質問です - サービスコードの特定のノードタイプに対してhttpゲートウェイのポートとプロトコルをどのように解決できますか?これまでのところ私は、このようなアプリのマニフェストを解析することによって、この情報を取得するために管理しなかった -サービスコードのHttpApplicationGatewayEndpointを解決する最善の方法

var fabricClient = new FabricClient(); 

var appManifest = await fabricClient.ClusterManager.GetClusterManifestAsync(); 

var document = XDocument.Parse(appManifest); 

var nodeTypeObj = document.Root.Descendants() 
           .Where(d => d.Name.LocalName == "NodeTypes") 
           .Descendants() 
           .Where(e => e.Name.LocalName == "NodeType") 
           .First(e => e.Attributes().Any(a => a.Name.LocalName == "Name" && a.Value == this.Context.NodeContext.NodeType)); 

var gateway = nodeTypeObj.Descendants() 
         .Where(d => d.Name.LocalName == "HttpApplicationGatewayEndpoint") 
         .First(); 

var port = gateway.Attributes().First(a => a.Name.LocalName == "Port").Value; 
var protocol = gateway.Attributes().First(a => a.Name.LocalName == "Protocol").Value; 

は、これらの値を取得する任意のシンプルな手段がありますか?私は道に沿ってノード型を渡し、非常にノード型が設定されているすべてのものを取り戻すというメソッドのようなもの? HttpApplicationGatewayEndpointを含む?

+0

ここで、ポートとプロトコルに関する情報を使用しますか? – Marusyk

+0

私は、特定の状況下では、実行中のアプリケーションに別のものを追加する必要があると言います。新しいサービスはGuest Executableです。そして、最初のオーケストレーターはゲストプロセスのための構成を形成し、途中で必要とする別のサービスの場所を渡す必要があります。場所によって私はリバースプロキシ(HTTPゲートウェイ)のエンドポイントを意味します。ゲストサービスでこの「解決」ブードゥーをすべて実行したくないからです:) –

+0

あなたの解決策はOKだと思います – Marusyk

答えて

0

あなたはクラスタマニフェストを削っているように見えます。

この情報を取得するための特定のAPIはありませんので、私は慣習的にポートを選択して使用します(デフォルトの19008が動作します)。または、ポートを環境変数または設定パッケージに入れます環境間で変化します。

+1

しかし、もし私が異なるゲートウェイポートを持つ複数のノードタイプを持つ予定ですか?そして、それらのうちのいくつかは、すべてを確保したいとは思っていません...各スケールセットごとにenv変数を指定するのはちょっと面倒です。マニフェストを解析すると、より一般的なアプローチが得られます...なぜそれは良い考えではないかもしれないと思いますか? –

関連する問題