コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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()
                            });
                        }
                    }
                }
            }
        }