Index: third_party/gsutil/third_party/boto/boto/cloudsearch2/layer1.py |
diff --git a/third_party/gsutil/third_party/boto/boto/cloudsearch2/layer1.py b/third_party/gsutil/third_party/boto/boto/cloudsearch2/layer1.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a39b08f585d0e56b3f5e2d3658f42abfbff05492 |
--- /dev/null |
+++ b/third_party/gsutil/third_party/boto/boto/cloudsearch2/layer1.py |
@@ -0,0 +1,783 @@ |
+# Copyright (c) 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved |
+# |
+# Permission is hereby granted, free of charge, to any person obtaining a |
+# copy of this software and associated documentation files (the |
+# "Software"), to deal in the Software without restriction, including |
+# without limitation the rights to use, copy, modify, merge, publish, dis- |
+# tribute, sublicense, and/or sell copies of the Software, and to permit |
+# persons to whom the Software is furnished to do so, subject to the fol- |
+# lowing conditions: |
+# |
+# The above copyright notice and this permission notice shall be included |
+# in all copies or substantial portions of the Software. |
+# |
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- |
+# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT |
+# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
+# IN THE SOFTWARE. |
+# |
+ |
+import boto |
+from boto.compat import json |
+from boto.connection import AWSQueryConnection |
+from boto.regioninfo import RegionInfo |
+from boto.exception import JSONResponseError |
+from boto.cloudsearch2 import exceptions |
+ |
+ |
+class CloudSearchConnection(AWSQueryConnection): |
+ """ |
+ Amazon CloudSearch Configuration Service |
+ You use the Amazon CloudSearch configuration service to create, |
+ configure, and manage search domains. Configuration service |
+ requests are submitted using the AWS Query protocol. AWS Query |
+ requests are HTTP or HTTPS requests submitted via HTTP GET or POST |
+ with a query parameter named Action. |
+ |
+ The endpoint for configuration service requests is region- |
+ specific: cloudsearch. region .amazonaws.com. For example, |
+ cloudsearch.us-east-1.amazonaws.com. For a current list of |
+ supported regions and endpoints, see `Regions and Endpoints`_. |
+ """ |
+ APIVersion = "2013-01-01" |
+ DefaultRegionName = "us-east-1" |
+ DefaultRegionEndpoint = "cloudsearch.us-east-1.amazonaws.com" |
+ ResponseError = JSONResponseError |
+ |
+ _faults = { |
+ "InvalidTypeException": exceptions.InvalidTypeException, |
+ "LimitExceededException": exceptions.LimitExceededException, |
+ "InternalException": exceptions.InternalException, |
+ "DisabledOperationException": exceptions.DisabledOperationException, |
+ "ResourceNotFoundException": exceptions.ResourceNotFoundException, |
+ "BaseException": exceptions.BaseException, |
+ } |
+ |
+ def __init__(self, **kwargs): |
+ region = kwargs.pop('region', None) |
+ if not region: |
+ region = RegionInfo(self, self.DefaultRegionName, |
+ self.DefaultRegionEndpoint) |
+ |
+ if 'host' not in kwargs or kwargs['host'] is None: |
+ kwargs['host'] = region.endpoint |
+ |
+ sign_request = kwargs.pop('sign_request', False) |
+ self.sign_request = sign_request |
+ |
+ super(CloudSearchConnection, self).__init__(**kwargs) |
+ self.region = region |
+ |
+ def _required_auth_capability(self): |
+ return ['hmac-v4'] |
+ |
+ def build_suggesters(self, domain_name): |
+ """ |
+ Indexes the search suggestions. |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ return self._make_request( |
+ action='BuildSuggesters', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def create_domain(self, domain_name): |
+ """ |
+ Creates a new search domain. For more information, see |
+ `Creating a Search Domain`_ in the Amazon CloudSearch |
+ Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: A name for the domain you are creating. Allowed |
+ characters are a-z (lower-case letters), 0-9, and hyphen (-). |
+ Domain names must start with a letter or number and be at least 3 |
+ and no more than 28 characters long. |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ return self._make_request( |
+ action='CreateDomain', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def define_analysis_scheme(self, domain_name, analysis_scheme): |
+ """ |
+ Configures an analysis scheme that can be applied to a `text` |
+ or `text-array` field to define language-specific text |
+ processing options. For more information, see `Configuring |
+ Analysis Schemes`_ in the Amazon CloudSearch Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ :type analysis_scheme: dict |
+ :param analysis_scheme: Configuration information for an analysis |
+ scheme. Each analysis scheme has a unique name and specifies the |
+ language of the text to be processed. The following options can be |
+ configured for an analysis scheme: `Synonyms`, `Stopwords`, |
+ `StemmingDictionary`, and `AlgorithmicStemming`. |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ self.build_complex_param(params, 'AnalysisScheme', |
+ analysis_scheme) |
+ return self._make_request( |
+ action='DefineAnalysisScheme', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def define_expression(self, domain_name, expression): |
+ """ |
+ Configures an `Expression` for the search domain. Used to |
+ create new expressions and modify existing ones. If the |
+ expression exists, the new configuration replaces the old one. |
+ For more information, see `Configuring Expressions`_ in the |
+ Amazon CloudSearch Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ :type expression: dict |
+ :param expression: A named expression that can be evaluated at search |
+ time. Can be used to sort the search results, define other |
+ expressions, or return computed information in the search results. |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ self.build_complex_param(params, 'Expression', |
+ expression) |
+ return self._make_request( |
+ action='DefineExpression', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def define_index_field(self, domain_name, index_field): |
+ """ |
+ Configures an `IndexField` for the search domain. Used to |
+ create new fields and modify existing ones. You must specify |
+ the name of the domain you are configuring and an index field |
+ configuration. The index field configuration specifies a |
+ unique name, the index field type, and the options you want to |
+ configure for the field. The options you can specify depend on |
+ the `IndexFieldType`. If the field exists, the new |
+ configuration replaces the old one. For more information, see |
+ `Configuring Index Fields`_ in the Amazon CloudSearch |
+ Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ :type index_field: dict |
+ :param index_field: The index field and field options you want to |
+ configure. |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ self.build_complex_param(params, 'IndexField', |
+ index_field) |
+ return self._make_request( |
+ action='DefineIndexField', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def define_suggester(self, domain_name, suggester): |
+ """ |
+ Configures a suggester for a domain. A suggester enables you |
+ to display possible matches before users finish typing their |
+ queries. When you configure a suggester, you must specify the |
+ name of the text field you want to search for possible matches |
+ and a unique name for the suggester. For more information, see |
+ `Getting Search Suggestions`_ in the Amazon CloudSearch |
+ Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ :type suggester: dict |
+ :param suggester: Configuration information for a search suggester. |
+ Each suggester has a unique name and specifies the text field you |
+ want to use for suggestions. The following options can be |
+ configured for a suggester: `FuzzyMatching`, `SortExpression`. |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ self.build_complex_param(params, 'Suggester', |
+ suggester) |
+ return self._make_request( |
+ action='DefineSuggester', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def delete_analysis_scheme(self, domain_name, analysis_scheme_name): |
+ """ |
+ Deletes an analysis scheme. For more information, see |
+ `Configuring Analysis Schemes`_ in the Amazon CloudSearch |
+ Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ :type analysis_scheme_name: string |
+ :param analysis_scheme_name: The name of the analysis scheme you want |
+ to delete. |
+ |
+ """ |
+ params = { |
+ 'DomainName': domain_name, |
+ 'AnalysisSchemeName': analysis_scheme_name, |
+ } |
+ return self._make_request( |
+ action='DeleteAnalysisScheme', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def delete_domain(self, domain_name): |
+ """ |
+ Permanently deletes a search domain and all of its data. Once |
+ a domain has been deleted, it cannot be recovered. For more |
+ information, see `Deleting a Search Domain`_ in the Amazon |
+ CloudSearch Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: The name of the domain you want to permanently |
+ delete. |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ return self._make_request( |
+ action='DeleteDomain', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def delete_expression(self, domain_name, expression_name): |
+ """ |
+ Removes an `Expression` from the search domain. For more |
+ information, see `Configuring Expressions`_ in the Amazon |
+ CloudSearch Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ :type expression_name: string |
+ :param expression_name: The name of the `Expression` to delete. |
+ |
+ """ |
+ params = { |
+ 'DomainName': domain_name, |
+ 'ExpressionName': expression_name, |
+ } |
+ return self._make_request( |
+ action='DeleteExpression', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def delete_index_field(self, domain_name, index_field_name): |
+ """ |
+ Removes an `IndexField` from the search domain. For more |
+ information, see `Configuring Index Fields`_ in the Amazon |
+ CloudSearch Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ :type index_field_name: string |
+ :param index_field_name: The name of the index field your want to |
+ remove from the domain's indexing options. |
+ |
+ """ |
+ params = { |
+ 'DomainName': domain_name, |
+ 'IndexFieldName': index_field_name, |
+ } |
+ return self._make_request( |
+ action='DeleteIndexField', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def delete_suggester(self, domain_name, suggester_name): |
+ """ |
+ Deletes a suggester. For more information, see `Getting Search |
+ Suggestions`_ in the Amazon CloudSearch Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ :type suggester_name: string |
+ :param suggester_name: Specifies the name of the suggester you want to |
+ delete. |
+ |
+ """ |
+ params = { |
+ 'DomainName': domain_name, |
+ 'SuggesterName': suggester_name, |
+ } |
+ return self._make_request( |
+ action='DeleteSuggester', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def describe_analysis_schemes(self, domain_name, |
+ analysis_scheme_names=None, deployed=None): |
+ """ |
+ Gets the analysis schemes configured for a domain. An analysis |
+ scheme defines language-specific text processing options for a |
+ `text` field. Can be limited to specific analysis schemes by |
+ name. By default, shows all analysis schemes and includes any |
+ pending changes to the configuration. Set the `Deployed` |
+ option to `True` to show the active configuration and exclude |
+ pending changes. For more information, see `Configuring |
+ Analysis Schemes`_ in the Amazon CloudSearch Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: The name of the domain you want to describe. |
+ |
+ :type analysis_scheme_names: list |
+ :param analysis_scheme_names: The analysis schemes you want to |
+ describe. |
+ |
+ :type deployed: boolean |
+ :param deployed: Whether to display the deployed configuration ( |
+ `True`) or include any pending changes ( `False`). Defaults to |
+ `False`. |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ if analysis_scheme_names is not None: |
+ self.build_list_params(params, |
+ analysis_scheme_names, |
+ 'AnalysisSchemeNames.member') |
+ if deployed is not None: |
+ params['Deployed'] = str( |
+ deployed).lower() |
+ return self._make_request( |
+ action='DescribeAnalysisSchemes', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def describe_availability_options(self, domain_name, deployed=None): |
+ """ |
+ Gets the availability options configured for a domain. By |
+ default, shows the configuration with any pending changes. Set |
+ the `Deployed` option to `True` to show the active |
+ configuration and exclude pending changes. For more |
+ information, see `Configuring Availability Options`_ in the |
+ Amazon CloudSearch Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: The name of the domain you want to describe. |
+ |
+ :type deployed: boolean |
+ :param deployed: Whether to display the deployed configuration ( |
+ `True`) or include any pending changes ( `False`). Defaults to |
+ `False`. |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ if deployed is not None: |
+ params['Deployed'] = str( |
+ deployed).lower() |
+ return self._make_request( |
+ action='DescribeAvailabilityOptions', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def describe_domains(self, domain_names=None): |
+ """ |
+ Gets information about the search domains owned by this |
+ account. Can be limited to specific domains. Shows all domains |
+ by default. To get the number of searchable documents in a |
+ domain, use the console or submit a `matchall` request to your |
+ domain's search endpoint: |
+ `q=matchall&q.parser=structured&size=0`. For more information, |
+ see `Getting Information about a Search Domain`_ in the Amazon |
+ CloudSearch Developer Guide . |
+ |
+ :type domain_names: list |
+ :param domain_names: The names of the domains you want to include in |
+ the response. |
+ |
+ """ |
+ params = {} |
+ if domain_names is not None: |
+ self.build_list_params(params, |
+ domain_names, |
+ 'DomainNames.member') |
+ return self._make_request( |
+ action='DescribeDomains', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def describe_expressions(self, domain_name, expression_names=None, |
+ deployed=None): |
+ """ |
+ Gets the expressions configured for the search domain. Can be |
+ limited to specific expressions by name. By default, shows all |
+ expressions and includes any pending changes to the |
+ configuration. Set the `Deployed` option to `True` to show the |
+ active configuration and exclude pending changes. For more |
+ information, see `Configuring Expressions`_ in the Amazon |
+ CloudSearch Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: The name of the domain you want to describe. |
+ |
+ :type expression_names: list |
+ :param expression_names: Limits the `DescribeExpressions` response to |
+ the specified expressions. If not specified, all expressions are |
+ shown. |
+ |
+ :type deployed: boolean |
+ :param deployed: Whether to display the deployed configuration ( |
+ `True`) or include any pending changes ( `False`). Defaults to |
+ `False`. |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ if expression_names is not None: |
+ self.build_list_params(params, |
+ expression_names, |
+ 'ExpressionNames.member') |
+ if deployed is not None: |
+ params['Deployed'] = str( |
+ deployed).lower() |
+ return self._make_request( |
+ action='DescribeExpressions', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def describe_index_fields(self, domain_name, field_names=None, |
+ deployed=None): |
+ """ |
+ Gets information about the index fields configured for the |
+ search domain. Can be limited to specific fields by name. By |
+ default, shows all fields and includes any pending changes to |
+ the configuration. Set the `Deployed` option to `True` to show |
+ the active configuration and exclude pending changes. For more |
+ information, see `Getting Domain Information`_ in the Amazon |
+ CloudSearch Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: The name of the domain you want to describe. |
+ |
+ :type field_names: list |
+ :param field_names: A list of the index fields you want to describe. If |
+ not specified, information is returned for all configured index |
+ fields. |
+ |
+ :type deployed: boolean |
+ :param deployed: Whether to display the deployed configuration ( |
+ `True`) or include any pending changes ( `False`). Defaults to |
+ `False`. |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ if field_names is not None: |
+ self.build_list_params(params, |
+ field_names, |
+ 'FieldNames.member') |
+ if deployed is not None: |
+ params['Deployed'] = str( |
+ deployed).lower() |
+ return self._make_request( |
+ action='DescribeIndexFields', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def describe_scaling_parameters(self, domain_name): |
+ """ |
+ Gets the scaling parameters configured for a domain. A |
+ domain's scaling parameters specify the desired search |
+ instance type and replication count. For more information, see |
+ `Configuring Scaling Options`_ in the Amazon CloudSearch |
+ Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ return self._make_request( |
+ action='DescribeScalingParameters', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def describe_service_access_policies(self, domain_name, deployed=None): |
+ """ |
+ Gets information about the access policies that control access |
+ to the domain's document and search endpoints. By default, |
+ shows the configuration with any pending changes. Set the |
+ `Deployed` option to `True` to show the active configuration |
+ and exclude pending changes. For more information, see |
+ `Configuring Access for a Search Domain`_ in the Amazon |
+ CloudSearch Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: The name of the domain you want to describe. |
+ |
+ :type deployed: boolean |
+ :param deployed: Whether to display the deployed configuration ( |
+ `True`) or include any pending changes ( `False`). Defaults to |
+ `False`. |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ if deployed is not None: |
+ params['Deployed'] = str( |
+ deployed).lower() |
+ return self._make_request( |
+ action='DescribeServiceAccessPolicies', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def describe_suggesters(self, domain_name, suggester_names=None, |
+ deployed=None): |
+ """ |
+ Gets the suggesters configured for a domain. A suggester |
+ enables you to display possible matches before users finish |
+ typing their queries. Can be limited to specific suggesters by |
+ name. By default, shows all suggesters and includes any |
+ pending changes to the configuration. Set the `Deployed` |
+ option to `True` to show the active configuration and exclude |
+ pending changes. For more information, see `Getting Search |
+ Suggestions`_ in the Amazon CloudSearch Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: The name of the domain you want to describe. |
+ |
+ :type suggester_names: list |
+ :param suggester_names: The suggesters you want to describe. |
+ |
+ :type deployed: boolean |
+ :param deployed: Whether to display the deployed configuration ( |
+ `True`) or include any pending changes ( `False`). Defaults to |
+ `False`. |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ if suggester_names is not None: |
+ self.build_list_params(params, |
+ suggester_names, |
+ 'SuggesterNames.member') |
+ if deployed is not None: |
+ params['Deployed'] = str( |
+ deployed).lower() |
+ return self._make_request( |
+ action='DescribeSuggesters', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def index_documents(self, domain_name): |
+ """ |
+ Tells the search domain to start indexing its documents using |
+ the latest indexing options. This operation must be invoked to |
+ activate options whose OptionStatus is |
+ `RequiresIndexDocuments`. |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ return self._make_request( |
+ action='IndexDocuments', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def list_domain_names(self): |
+ """ |
+ Lists all search domains owned by an account. |
+ """ |
+ params = {} |
+ return self._make_request( |
+ action='ListDomainNames', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def update_availability_options(self, domain_name, multi_az): |
+ """ |
+ Configures the availability options for a domain. Enabling the |
+ Multi-AZ option expands an Amazon CloudSearch domain to an |
+ additional Availability Zone in the same Region to increase |
+ fault tolerance in the event of a service disruption. Changes |
+ to the Multi-AZ option can take about half an hour to become |
+ active. For more information, see `Configuring Availability |
+ Options`_ in the Amazon CloudSearch Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ :type multi_az: boolean |
+ :param multi_az: You expand an existing search domain to a second |
+ Availability Zone by setting the Multi-AZ option to true. |
+ Similarly, you can turn off the Multi-AZ option to downgrade the |
+ domain to a single Availability Zone by setting the Multi-AZ option |
+ to `False`. |
+ |
+ """ |
+ params = {'DomainName': domain_name, 'MultiAZ': multi_az, } |
+ return self._make_request( |
+ action='UpdateAvailabilityOptions', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def update_scaling_parameters(self, domain_name, scaling_parameters): |
+ """ |
+ Configures scaling parameters for a domain. A domain's scaling |
+ parameters specify the desired search instance type and |
+ replication count. Amazon CloudSearch will still automatically |
+ scale your domain based on the volume of data and traffic, but |
+ not below the desired instance type and replication count. If |
+ the Multi-AZ option is enabled, these values control the |
+ resources used per Availability Zone. For more information, |
+ see `Configuring Scaling Options`_ in the Amazon CloudSearch |
+ Developer Guide . |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ :type scaling_parameters: dict |
+ :param scaling_parameters: The desired instance type and desired number |
+ of replicas of each index partition. |
+ |
+ """ |
+ params = {'DomainName': domain_name, } |
+ self.build_complex_param(params, 'ScalingParameters', |
+ scaling_parameters) |
+ return self._make_request( |
+ action='UpdateScalingParameters', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def update_service_access_policies(self, domain_name, access_policies): |
+ """ |
+ Configures the access rules that control access to the |
+ domain's document and search endpoints. For more information, |
+ see ` Configuring Access for an Amazon CloudSearch Domain`_. |
+ |
+ :type domain_name: string |
+ :param domain_name: A string that represents the name of a domain. |
+ Domain names are unique across the domains owned by an account |
+ within an AWS region. Domain names start with a letter or number |
+ and can contain the following characters: a-z (lowercase), 0-9, and |
+ - (hyphen). |
+ |
+ :type access_policies: string |
+ :param access_policies: The access rules you want to configure. These |
+ rules replace any existing rules. |
+ |
+ """ |
+ params = { |
+ 'DomainName': domain_name, |
+ 'AccessPolicies': access_policies, |
+ } |
+ return self._make_request( |
+ action='UpdateServiceAccessPolicies', |
+ verb='POST', |
+ path='/', params=params) |
+ |
+ def build_complex_param(self, params, label, value): |
+ """Serialize a structure. |
+ |
+ For example:: |
+ |
+ param_type = 'structure' |
+ label = 'IndexField' |
+ value = {'IndexFieldName': 'a', 'IntOptions': {'DefaultValue': 5}} |
+ |
+ would result in the params dict being updated with these params:: |
+ |
+ IndexField.IndexFieldName = a |
+ IndexField.IntOptions.DefaultValue = 5 |
+ |
+ :type params: dict |
+ :param params: The params dict. The complex list params |
+ will be added to this dict. |
+ |
+ :type label: str |
+ :param label: String label for param key |
+ |
+ :type value: any |
+ :param value: The value to serialize |
+ """ |
+ for k, v in value.items(): |
+ if isinstance(v, dict): |
+ for k2, v2 in v.items(): |
+ self.build_complex_param(params, label + '.' + k, v) |
+ elif isinstance(v, bool): |
+ params['%s.%s' % (label, k)] = v and 'true' or 'false' |
+ else: |
+ params['%s.%s' % (label, k)] = v |
+ |
+ def _make_request(self, action, verb, path, params): |
+ params['ContentType'] = 'JSON' |
+ response = self.make_request(action=action, verb='POST', |
+ path='/', params=params) |
+ body = response.read().decode('utf-8') |
+ boto.log.debug(body) |
+ if response.status == 200: |
+ return json.loads(body) |
+ else: |
+ json_body = json.loads(body) |
+ fault_name = json_body.get('Error', {}).get('Code', None) |
+ exception_class = self._faults.get(fault_name, self.ResponseError) |
+ raise exception_class(response.status, response.reason, |
+ body=json_body) |