Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Unified Diff: third_party/gsutil/third_party/boto/boto/cloudsearch2/layer1.py

Issue 1377933002: [catapult] - Copy Telemetry's gsutilz over to third_party. (Closed) Base URL: https://github.com/catapult-project/catapult.git@master
Patch Set: Rename to gsutil. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
This is Rietveld 408576698