private Uri FindServiceEndpoint(string product, string type, string endpointType) { Uri result = null; var svcContent = _lsClient.RetrieveServiceContentAsync(RootMoRef).Result; var filterCriteria = new LookupServiceRegistrationFilter() { serviceType = new LookupServiceRegistrationServiceType { product = product, type = type } }; var lsRegInfo = _lsClient. ListAsync(svcContent.serviceRegistration, filterCriteria) .Result? .returnval? .FirstOrDefault(); if (lsRegInfo != null) { var registrationEndpooint = lsRegInfo. serviceEndpoints?. Where(a => a.endpointType.type == endpointType)?. FirstOrDefault <LookupServiceRegistrationEndpoint>(); if (registrationEndpooint != null) { result = new Uri(registrationEndpooint.url); } } return(result); }
public LookupServiceRegistrationInfo[] GetRegistrationInfos( string mgmtNodeId, string productType, string serviceType, string endpointType, string endpointProtocol) { var filterServiceType = new LookupServiceRegistrationServiceType(); filterServiceType.product = productType; filterServiceType.type = serviceType; var filterEndpointType = new LookupServiceRegistrationEndpointType(); filterEndpointType.protocol = endpointProtocol; filterEndpointType.type = endpointType; var filterCriteria = new LookupServiceRegistrationFilter(); filterCriteria.serviceType = filterServiceType; filterCriteria.endpointType = filterEndpointType; filterCriteria.nodeId = mgmtNodeId; var registrationInfos = lsPortType.List( serviceContent.serviceRegistration, filterCriteria); return(registrationInfos); }
public LookupServiceRegistrationInfo[] ListRegisteredServices() { // Retrieve Service Content var svcContent = _lsClient.RetrieveServiceContentAsync(RootMoRef).Result; var filterCriteria = new LookupServiceRegistrationFilter(); filterCriteria.searchAllSsoDomains = true; var result = _lsClient.ListAsync(svcContent.serviceRegistration, filterCriteria); return(result.Result.returnval); }
public IEnumerable <VCEndpoint> GetFederatedVCHostNames() { // List VC API endpoints from Lookup Service var svcContent = _lsClient.RetrieveServiceContentAsync(RootMoRef).Result; var filterCriteria = new LookupServiceRegistrationFilter() { searchAllSsoDomains = true, serviceType = new LookupServiceRegistrationServiceType { product = "com.vmware.cis", type = "vcenterserver", } }; var result = _lsClient.ListAsync(svcContent.serviceRegistration, filterCriteria).Result; if (result.returnval != null) { // Collect and return unique VC service hostnames var discoveredHostNames = new List <string>(); foreach (var svcInfo in result.returnval) { foreach (var endpoint in svcInfo.serviceEndpoints) { var endpointUri = new Uri(endpoint.url); if (!discoveredHostNames.Contains(endpointUri.Host)) { discoveredHostNames.Add(endpointUri.Host); var endpointCertificates = new List <X509Certificate2>(); foreach (var rawCert in endpoint.sslTrust) { if (!string.IsNullOrEmpty(rawCert)) { endpointCertificates.Add(new X509Certificate2(Encoding.ASCII.GetBytes(rawCert))); } } yield return(new VCEndpoint { Hostname = endpointUri.Host, SslTrustCertificates = endpointCertificates.ToArray() }); } } } } }