YUKI Hiroshi
null+****@clear*****
Mon Oct 15 15:42:39 JST 2012
YUKI Hiroshi 2012-10-15 15:42:39 +0900 (Mon, 15 Oct 2012) New Revision: 85f1578227d1dada02e02a928457c7127b29fdfe https://github.com/groonga/gcs/commit/85f1578227d1dada02e02a928457c7127b29fdfe Log: Output index field summaries Modified files: bin/gcs-describe-domain lib/command-line.js Modified: bin/gcs-describe-domain (+24 -16) =================================================================== --- bin/gcs-describe-domain 2012-10-15 15:09:29 +0900 (160c176) +++ bin/gcs-describe-domain 2012-10-15 15:42:39 +0900 (d1aecae) @@ -52,25 +52,25 @@ function report(domain) { console.log('======================'); } -function reportDomainStatus(status) { +function reportStatus(domain, indexFields) { console.log('=== Domain Summary ==='); console.log('Domain Name: %s', - status.DomainName); + domain.DomainName); console.log('Document Service endpoint: %s', - status.DocService.Endpoint); + domain.DocService.Endpoint); console.log('Search Service endpoint: %s', - status.SearchService.Endpoint); + domain.SearchService.Endpoint); console.log('SearchInstanceType: %s', null); console.log('SearchPartitionCount: %s', - status.SearchPartitionCount); + domain.SearchPartitionCount); console.log('SearchInstanceCount: %s', - status.SearchInstanceCount); + domain.SearchInstanceCount); console.log('Searchable Documents: %s', - status.NumSearchableDocs); + domain.NumSearchableDocs); console.log('Current configuration changes require a call to ' + 'IndexDocuments: %s', - status.RequiresIndexDocuments ? 'Yes' : 'No' ); + domain.RequiresIndexDocuments == 'true' ? 'Yes' : 'No' ); // // additional information for the default search field! // var field = status.defaultSearchField; @@ -83,9 +83,9 @@ function reportDomainStatus(status) { console.log(''); console.log('Fields:'); console.log('======='); -// domain.indexFields.forEach(function(field) { -// console.log(field.summary); -// }); + indexFields.forEach(function(indexField) { + console.log(commandLine.summarizeIndexFieldStatus(indexField)); + }); console.log('======================'); } @@ -96,11 +96,19 @@ function outputNotesForHostAndPort() { 'default information.'); } -if (commandLine.options.domainName) { - commandLine.getDomainStatus(function(error, domainStatus) { - reportDomainStatus(domainStatus); - outputNotesForHostAndPort(); - }); +if (commandLine.domainName) { + commandLine.getDomainStatus( + commandLine.domainName, + function(error, domainStatus) { + commandLine.getIndexFieldStatus( + commandLine.domainName, + function(error, indexFieldStatuses) { + reportStatus(domainStatus, indexFieldStatuses); + outputNotesForHostAndPort(); + } + ); + } + ); } else { var domains = CLI.Domain.getAll(commandLine.context); domains.forEach(function(domain, index) { Modified: lib/command-line.js (+59 -14) =================================================================== --- lib/command-line.js 2012-10-15 15:09:29 +0900 (ccfe338) +++ lib/command-line.js 2012-10-15 15:42:39 +0900 (ff176fe) @@ -129,30 +129,75 @@ CommandLineInterface.prototype = { return this; }, - getDomainStatus: function(callback) { - var domainName = this.domainName; - this.cloudSearch.DescribeDomains(function(error, data) { + getDomainStatus: function(domainName, callback) { + this.getDomainStatuses( + { 'DomainNames.member.1' : domainName }, + function(error, domainStatuses) { + if (domainStatuses.length) { + callback(null, domainStatuses[0]); + } else { + console.log('You must specify an existing domain name.'); + process.exit(1); + } + } + }); + }, + + getDomainStatuses: function(options, callback) { + this.cloudSearch.DescribeDomains(options, function(error, response) { if (error) { console.log('Unexpected error: ' + JSON.stringify(error)); process.exit(1); } - var matchedDomains = data.Body + var domainStatuses = response.Body .DescribeDomainsResponse .DescribeDomainsResult .DomainStatusList - .member - .filter(function(domainStatus) { - return domainStatus.DomainName == domainName; - }); - if (matchedDomains.length) { - callback(null, matchedDomains[0]); - } else { - console.log('You must specify an existing domain name.'); - process.exit(1); - } + .member; + callback(null, domainStatuses); }); }, + getIndexFieldStatuses: function(domainName, callback) { + this.cloudSearch.DescribeIndexFields( + { DomainName: domainName }, + function(error, response) { + if (error) { + console.log('Unexpected error: ' + JSON.stringify(error)); + process.exit(1); + } + var indexFields = response.Body + .DescribeIndexFieldsResponse + .DescribeIndexFieldsResult + .IndexFields + .member; + callback(null, indexFields); + } + ); + }, + + summarizeIndexFieldStatus: function(status) { + var type = status.Options.TextOptions ? 'text' : + status.Options.UIntOptions ? 'uint' : + status.Options.LiteralOptions ? 'literal' : + null; + + var options = status.Options.TextOptions || + status.Options.UIntOptions || + status.Options.LiteralOptions; + var summarizedOptions = []; + if (type == 'text' || type == 'uint' || options.SearchEnabled == 'true') + summarizedOptions.push('Search'); + if (type != 'uint' && options.FacetEnabled == 'true') + summarizedOptions.push('Facet'); + if (type == 'uint' || options.ResultEnabled == 'true') + summarizedOptions.push('Result'); + + return status.Options.IndexFieldName + ' ' + + status.Status.State + ' ' + + type + ' (' + summarizedOptions.join(' ') + ')'; + }, + assertDomainExists: function() { if (!this.domain.exists()) { console.log('You must specify an existing domain name.'); -------------- next part -------------- HTML����������������������������... Download