172 lines
6.3 KiB
Python
172 lines
6.3 KiB
Python
|
"""Handles incoming servicediscovery requests, invokes methods, returns responses."""
|
||
|
import json
|
||
|
|
||
|
from moto.core.responses import BaseResponse
|
||
|
from .models import servicediscovery_backends
|
||
|
|
||
|
|
||
|
class ServiceDiscoveryResponse(BaseResponse):
|
||
|
@property
|
||
|
def servicediscovery_backend(self):
|
||
|
"""Return backend instance specific for this region."""
|
||
|
return servicediscovery_backends[self.region]
|
||
|
|
||
|
def list_namespaces(self):
|
||
|
namespaces = self.servicediscovery_backend.list_namespaces()
|
||
|
return 200, {}, json.dumps({"Namespaces": [ns.to_json() for ns in namespaces]})
|
||
|
|
||
|
def create_http_namespace(self):
|
||
|
params = json.loads(self.body)
|
||
|
name = params.get("Name")
|
||
|
creator_request_id = params.get("CreatorRequestId")
|
||
|
description = params.get("Description")
|
||
|
tags = params.get("Tags")
|
||
|
operation_id = self.servicediscovery_backend.create_http_namespace(
|
||
|
name=name,
|
||
|
creator_request_id=creator_request_id,
|
||
|
description=description,
|
||
|
tags=tags,
|
||
|
)
|
||
|
return json.dumps(dict(OperationId=operation_id))
|
||
|
|
||
|
def delete_namespace(self):
|
||
|
params = json.loads(self.body)
|
||
|
namespace_id = params.get("Id")
|
||
|
operation_id = self.servicediscovery_backend.delete_namespace(
|
||
|
namespace_id=namespace_id,
|
||
|
)
|
||
|
return json.dumps(dict(OperationId=operation_id))
|
||
|
|
||
|
def list_operations(self):
|
||
|
operations = self.servicediscovery_backend.list_operations()
|
||
|
return (
|
||
|
200,
|
||
|
{},
|
||
|
json.dumps({"Operations": [o.to_json(short=True) for o in operations]}),
|
||
|
)
|
||
|
|
||
|
def get_operation(self):
|
||
|
params = json.loads(self.body)
|
||
|
operation_id = params.get("OperationId")
|
||
|
operation = self.servicediscovery_backend.get_operation(
|
||
|
operation_id=operation_id,
|
||
|
)
|
||
|
return json.dumps(dict(Operation=operation.to_json()))
|
||
|
|
||
|
def get_namespace(self):
|
||
|
params = json.loads(self.body)
|
||
|
namespace_id = params.get("Id")
|
||
|
namespace = self.servicediscovery_backend.get_namespace(
|
||
|
namespace_id=namespace_id,
|
||
|
)
|
||
|
return json.dumps(dict(Namespace=namespace.to_json()))
|
||
|
|
||
|
def tag_resource(self):
|
||
|
params = json.loads(self.body)
|
||
|
resource_arn = params.get("ResourceARN")
|
||
|
tags = params.get("Tags")
|
||
|
self.servicediscovery_backend.tag_resource(
|
||
|
resource_arn=resource_arn, tags=tags,
|
||
|
)
|
||
|
return json.dumps(dict())
|
||
|
|
||
|
def untag_resource(self):
|
||
|
params = json.loads(self.body)
|
||
|
resource_arn = params.get("ResourceARN")
|
||
|
tag_keys = params.get("TagKeys")
|
||
|
self.servicediscovery_backend.untag_resource(
|
||
|
resource_arn=resource_arn, tag_keys=tag_keys,
|
||
|
)
|
||
|
return json.dumps(dict())
|
||
|
|
||
|
def list_tags_for_resource(self):
|
||
|
params = json.loads(self.body)
|
||
|
resource_arn = params.get("ResourceARN")
|
||
|
tags = self.servicediscovery_backend.list_tags_for_resource(
|
||
|
resource_arn=resource_arn,
|
||
|
)
|
||
|
return 200, {}, json.dumps(tags)
|
||
|
|
||
|
def create_private_dns_namespace(self):
|
||
|
params = json.loads(self.body)
|
||
|
name = params.get("Name")
|
||
|
creator_request_id = params.get("CreatorRequestId")
|
||
|
description = params.get("Description")
|
||
|
vpc = params.get("Vpc")
|
||
|
tags = params.get("Tags")
|
||
|
properties = params.get("Properties")
|
||
|
operation_id = self.servicediscovery_backend.create_private_dns_namespace(
|
||
|
name=name,
|
||
|
creator_request_id=creator_request_id,
|
||
|
description=description,
|
||
|
vpc=vpc,
|
||
|
tags=tags,
|
||
|
properties=properties,
|
||
|
)
|
||
|
return json.dumps(dict(OperationId=operation_id))
|
||
|
|
||
|
def create_public_dns_namespace(self):
|
||
|
params = json.loads(self.body)
|
||
|
name = params.get("Name")
|
||
|
creator_request_id = params.get("CreatorRequestId")
|
||
|
description = params.get("Description")
|
||
|
tags = params.get("Tags")
|
||
|
properties = params.get("Properties")
|
||
|
operation_id = self.servicediscovery_backend.create_public_dns_namespace(
|
||
|
name=name,
|
||
|
creator_request_id=creator_request_id,
|
||
|
description=description,
|
||
|
tags=tags,
|
||
|
properties=properties,
|
||
|
)
|
||
|
return json.dumps(dict(OperationId=operation_id))
|
||
|
|
||
|
def create_service(self):
|
||
|
params = json.loads(self.body)
|
||
|
name = params.get("Name")
|
||
|
namespace_id = params.get("NamespaceId")
|
||
|
creator_request_id = params.get("CreatorRequestId")
|
||
|
description = params.get("Description")
|
||
|
dns_config = params.get("DnsConfig")
|
||
|
health_check_config = params.get("HealthCheckConfig")
|
||
|
health_check_custom_config = params.get("HealthCheckCustomConfig")
|
||
|
tags = params.get("Tags")
|
||
|
service_type = params.get("Type")
|
||
|
service = self.servicediscovery_backend.create_service(
|
||
|
name=name,
|
||
|
namespace_id=namespace_id,
|
||
|
creator_request_id=creator_request_id,
|
||
|
description=description,
|
||
|
dns_config=dns_config,
|
||
|
health_check_config=health_check_config,
|
||
|
health_check_custom_config=health_check_custom_config,
|
||
|
tags=tags,
|
||
|
service_type=service_type,
|
||
|
)
|
||
|
return json.dumps(dict(Service=service.to_json()))
|
||
|
|
||
|
def get_service(self):
|
||
|
params = json.loads(self.body)
|
||
|
service_id = params.get("Id")
|
||
|
service = self.servicediscovery_backend.get_service(service_id=service_id)
|
||
|
return json.dumps(dict(Service=service.to_json()))
|
||
|
|
||
|
def delete_service(self):
|
||
|
params = json.loads(self.body)
|
||
|
service_id = params.get("Id")
|
||
|
self.servicediscovery_backend.delete_service(service_id=service_id)
|
||
|
return json.dumps(dict())
|
||
|
|
||
|
def list_services(self):
|
||
|
services = self.servicediscovery_backend.list_services()
|
||
|
return json.dumps(dict(Services=[s.to_json() for s in services]))
|
||
|
|
||
|
def update_service(self):
|
||
|
params = json.loads(self.body)
|
||
|
service_id = params.get("Id")
|
||
|
details = params.get("Service")
|
||
|
operation_id = self.servicediscovery_backend.update_service(
|
||
|
service_id=service_id, details=details,
|
||
|
)
|
||
|
return json.dumps(dict(OperationId=operation_id))
|