Skip to content

Commit

Permalink
update URLs for opensearch and es
Browse files Browse the repository at this point in the history
  • Loading branch information
jflim committed Feb 2, 2025
1 parent ccce68b commit 6f388d7
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 30 deletions.
7 changes: 4 additions & 3 deletions moto/es/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@
"{0}/2015-01-01/es/domain$": OpenSearchServiceResponse.domains,
"{0}/2015-01-01/es/domain/(?P<domainname>[^/]+)": OpenSearchServiceResponse.domain,
"{0}/2015-01-01/es/domain-info$": OpenSearchServiceResponse.list_domains,
"{0}/2015-01-01/tags/?": OpenSearchServiceResponse.tags,
"{0}/2015-01-01/tags/?$": OpenSearchServiceResponse.tags,
"{0}/2015-01-01/tags-removal/?": OpenSearchServiceResponse.tag_removal,
"{0}/2021-01-01/domain$": OpenSearchServiceResponse.dispatch,
"{0}/2021-01-01/opensearch/compatibleVersions": OpenSearchServiceResponse.dispatch,
"{0}/2021-01-01/opensearch/domain": OpenSearchServiceResponse.dispatch,
"{0}/2021-01-01/opensearch/domain/(?P<domainname>[^/]+)": OpenSearchServiceResponse.dispatch,
"{0}/2021-01-01/opensearch/domain/(?P<domainname>[^/]+)/config": OpenSearchServiceResponse.dispatch,
"{0}/2021-01-01/opensearch/domain-info$": OpenSearchServiceResponse.dispatch,
"{0}/2021-01-01/tags/?": OpenSearchServiceResponse.dispatch,
"{0}/2021-01-01/tags-removal/": OpenSearchServiceResponse.dispatch,
"{0}/2021-01-01/tags/?$": OpenSearchServiceResponse.dispatch,
"{0}/2021-01-01/tags-removal/?": OpenSearchServiceResponse.dispatch,
}
7 changes: 7 additions & 0 deletions moto/opensearch/responses.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,13 @@ def tags(cls, request: Any, full_url: str, headers: Any) -> TYPE_RESPONSE: # ty
if request.method == "POST":
return 200, {}, response.add_tags()

@classmethod
def tag_removal(cls, request: Any, full_url: str, headers: Any) -> TYPE_RESPONSE: # type: ignore
response = cls()
response.setup_class(request, full_url, headers)
if request.method == "POST":
return 200, {}, response.remove_tags()

def create_domain(self) -> str:
domain_name = self._get_param("DomainName")
if not re.match(r"^[a-z][a-z0-9\-]+$", domain_name):
Expand Down
49 changes: 22 additions & 27 deletions tests/test_es/test_domain_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,78 +6,73 @@
@mock_aws
def test_create_without_tags():
client = boto3.client("es", region_name="us-east-1")
arn = client.create_elastic_domain(DomainName="testdn")["DomainStatus"]["ARN"]
arn = client.create_elasticsearch_domain(DomainName="testdn")["DomainStatus"]["ARN"]

assert client.list_tags(ARN=arn)["TagList"] == []


@mock_aws
def test_create_with_tags():
client = boto3.client("es", region_name="us-east-1")
domain = client.create_elastic_domain(
domain = client.create_elasticsearch_domain(
DomainName="testdn", TagList=[{"Key": "k1", "Value": "v1"}]
)
arn = domain["DomainStatus"]["ARN"]

assert client.list_tags(ARN=arn)["TagList"] == [{"Key": "k1", "Value": "v1"}]

client.add_tags(ARN=arn, TagList=[{"Key": "k2", "Value": "v2"}])

assert client.list_tags(ARN=arn)["TagList"] == [
{"Key": "k1", "Value": "v1"},
{"Key": "k2", "Value": "v2"},
]

client.remove_tags(ARN=arn, TagKeys=["k1"])

assert client.list_tags(ARN=arn)["TagList"] == [{"Key": "k2", "Value": "v2"}]


@mock_aws
def test_add_tags():
client = boto3.client("es", region_name="us-east-1")
domain = client.create_elastic_domain(DomainName="testdn")
domain = client.create_elasticsearch_domain(DomainName="testdn")

arn = domain["DomainStatus"]["ARN"]

client.add_tags(ARN=arn, TagList=[{"Key": "k1", "Value": "v1"}, {"Key": "k2", "Value": "v2"}])
client.add_tags(
ARN=arn, TagList=[{"Key": "k1", "Value": "v1"}, {"Key": "k2", "Value": "v2"}]
)

assert client.list_tags(ARN=arn)["TagList"] == [
{"Key": "k1", "Value": "v1"},
{"Key": "k2", "Value": "v2"},
]

assert client.list_tags(ARN=arn)["TagList"] == [{"Key": "k2", "Value": "v2"}]

@mock_aws
def test_add_duplicate_tags():
def test_update_tag():
client = boto3.client("es", region_name="us-east-1")
domain = client.create_elastic_domain(
domain = client.create_elasticsearch_domain(
DomainName="testdn", TagList=[{"Key": "k1", "Value": "v1"}]
)
arn = domain["DomainStatus"]["ARN"]

arn = domain["DomainStatus"]["ARN"]
assert client.list_tags(ARN=arn)["TagList"] == [{"Key": "k1", "Value": "v1"}]

# add the same key again with a different value
client.add_tags(ARN=arn, TagList=[{"Key": "k1", "Value": "v2"}])

assert client.list_tags(ARN=arn)["TagList"] == [
{"Key": "k1", "Value": "v1"},
{"Key": "k2", "Value": "v2"},
{"Key": "k1", "Value": "v2"},
]


@mock_aws
def test_remove_tags():
client = boto3.client("es", region_name="us-east-1")
domain = client.create_elastic_domain(
DomainName="testdn", TagList=[{"Key": "k1", "Value": "v1"}]
domain = client.create_elasticsearch_domain(
DomainName="testdn",
TagList=[{"Key": "k1", "Value": "v1"}, {"Key": "k2", "Value": "v2"}],
)
arn = domain["DomainStatus"]["ARN"]

assert client.list_tags(ARN=arn)["TagList"] == [{"Key": "k1", "Value": "v1"}]

response = client.remove_tags(ARN=arn, TagKeys=['k1'])
assert client.list_tags(ARN=arn)["TagList"] == [
{"Key": "k1", "Value": "v1"},
{"Key": "k2", "Value": "v2"},
]

response = client.remove_tags(ARN=arn, TagKeys=["k1"])
assert client.list_tags(ARN=arn)["TagList"] == [{"Key": "k2", "Value": "v2"}]

assert client.list_tags(ARN=arn)["TagList"] == []
response = client.remove_tags(ARN=arn, TagKeys=["k2"])
assert client.list_tags(ARN=arn)["TagList"] == []

0 comments on commit 6f388d7

Please sign in to comment.