Browse Source

DeliveryService测试

世祺 1 year ago
parent
commit
0a8a87b1a1
8 changed files with 523 additions and 52 deletions
  1. 0 1
      proto
  2. 1 1
      src/gencode.py
  3. 17 13
      src/llnw_pb2.py
  4. 17 1
      src/llnw_pb2.pyi
  5. 175 10
      src/llnw_pb2_grpc.py
  6. 88 21
      src/main.py
  7. 2 2
      src/test.py
  8. 223 3
      测试.ipynb

+ 0 - 1
proto

@@ -1 +0,0 @@
-Subproject commit a2247ceedd33eb1a301c4761303c98315de3ecb3

+ 1 - 1
src/gencode.py

@@ -7,5 +7,5 @@ if __name__ == '__main__':
         '--python_out=.',
         '--pyi_out=.',
         '--grpc_python_out=.',
-        '../proto/*.proto',
+        '../proto/llnw.proto',
     ))

File diff suppressed because it is too large
+ 17 - 13
src/llnw_pb2.py


+ 17 - 1
src/llnw_pb2.pyi

@@ -41,6 +41,22 @@ class DeliveryList(_message.Message):
     deliveries: _containers.RepeatedCompositeFieldContainer[DeliveryEntity]
     def __init__(self, deliveries: _Optional[_Iterable[_Union[DeliveryEntity, _Mapping]]] = ...) -> None: ...
 
+class DeliveryRequest(_message.Message):
+    __slots__ = ["base", "delivery"]
+    BASE_FIELD_NUMBER: _ClassVar[int]
+    DELIVERY_FIELD_NUMBER: _ClassVar[int]
+    base: Base
+    delivery: DeliveryEntity
+    def __init__(self, base: _Optional[_Union[Base, _Mapping]] = ..., delivery: _Optional[_Union[DeliveryEntity, _Mapping]] = ...) -> None: ...
+
+class IdRequest(_message.Message):
+    __slots__ = ["base", "id"]
+    BASE_FIELD_NUMBER: _ClassVar[int]
+    ID_FIELD_NUMBER: _ClassVar[int]
+    base: Base
+    id: str
+    def __init__(self, base: _Optional[_Union[Base, _Mapping]] = ..., id: _Optional[str] = ...) -> None: ...
+
 class ProtocolSet(_message.Message):
     __slots__ = ["options", "publishedProtocol", "sourceProtocol"]
     OPTIONS_FIELD_NUMBER: _ClassVar[int]
@@ -61,7 +77,7 @@ class ProtocolSetOptions(_message.Message):
     source: str
     def __init__(self, name: _Optional[str] = ..., parameters: _Optional[_Iterable[str]] = ..., source: _Optional[str] = ...) -> None: ...
 
-class ShortName(_message.Message):
+class ShortNameRequest(_message.Message):
     __slots__ = ["base", "shortName"]
     BASE_FIELD_NUMBER: _ClassVar[int]
     SHORTNAME_FIELD_NUMBER: _ClassVar[int]

+ 175 - 10
src/llnw_pb2_grpc.py

@@ -14,17 +14,72 @@ class DeliveryServiceStub(object):
         Args:
             channel: A grpc.Channel.
         """
-        self.ListDeliveryServiceInstances = channel.unary_unary(
-                '/llnwApi.Delivery.DeliveryService/ListDeliveryServiceInstances',
-                request_serializer=llnw__pb2.ShortName.SerializeToString,
+        self.ListDelivery = channel.unary_unary(
+                '/llnwApi.Delivery.DeliveryService/ListDelivery',
+                request_serializer=llnw__pb2.ShortNameRequest.SerializeToString,
                 response_deserializer=llnw__pb2.DeliveryList.FromString,
                 )
+        self.ValidateDelivery = channel.unary_unary(
+                '/llnwApi.Delivery.DeliveryService/ValidateDelivery',
+                request_serializer=llnw__pb2.DeliveryRequest.SerializeToString,
+                response_deserializer=llnw__pb2.DeliveryEntity.FromString,
+                )
+        self.CreateDelivery = channel.unary_unary(
+                '/llnwApi.Delivery.DeliveryService/CreateDelivery',
+                request_serializer=llnw__pb2.DeliveryRequest.SerializeToString,
+                response_deserializer=llnw__pb2.DeliveryEntity.FromString,
+                )
+        self.GetDelivery = channel.unary_unary(
+                '/llnwApi.Delivery.DeliveryService/GetDelivery',
+                request_serializer=llnw__pb2.IdRequest.SerializeToString,
+                response_deserializer=llnw__pb2.DeliveryEntity.FromString,
+                )
+        self.UpdateDelivery = channel.unary_unary(
+                '/llnwApi.Delivery.DeliveryService/UpdateDelivery',
+                request_serializer=llnw__pb2.DeliveryRequest.SerializeToString,
+                response_deserializer=llnw__pb2.DeliveryEntity.FromString,
+                )
+        self.DeleteDelivery = channel.unary_unary(
+                '/llnwApi.Delivery.DeliveryService/DeleteDelivery',
+                request_serializer=llnw__pb2.IdRequest.SerializeToString,
+                response_deserializer=llnw__pb2.DeliveryEntity.FromString,
+                )
 
 
 class DeliveryServiceServicer(object):
     """Missing associated documentation comment in .proto file."""
 
-    def ListDeliveryServiceInstances(self, request, context):
+    def ListDelivery(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def ValidateDelivery(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def CreateDelivery(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def GetDelivery(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def UpdateDelivery(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def DeleteDelivery(self, request, context):
         """Missing associated documentation comment in .proto file."""
         context.set_code(grpc.StatusCode.UNIMPLEMENTED)
         context.set_details('Method not implemented!')
@@ -33,11 +88,36 @@ class DeliveryServiceServicer(object):
 
 def add_DeliveryServiceServicer_to_server(servicer, server):
     rpc_method_handlers = {
-            'ListDeliveryServiceInstances': grpc.unary_unary_rpc_method_handler(
-                    servicer.ListDeliveryServiceInstances,
-                    request_deserializer=llnw__pb2.ShortName.FromString,
+            'ListDelivery': grpc.unary_unary_rpc_method_handler(
+                    servicer.ListDelivery,
+                    request_deserializer=llnw__pb2.ShortNameRequest.FromString,
                     response_serializer=llnw__pb2.DeliveryList.SerializeToString,
             ),
+            'ValidateDelivery': grpc.unary_unary_rpc_method_handler(
+                    servicer.ValidateDelivery,
+                    request_deserializer=llnw__pb2.DeliveryRequest.FromString,
+                    response_serializer=llnw__pb2.DeliveryEntity.SerializeToString,
+            ),
+            'CreateDelivery': grpc.unary_unary_rpc_method_handler(
+                    servicer.CreateDelivery,
+                    request_deserializer=llnw__pb2.DeliveryRequest.FromString,
+                    response_serializer=llnw__pb2.DeliveryEntity.SerializeToString,
+            ),
+            'GetDelivery': grpc.unary_unary_rpc_method_handler(
+                    servicer.GetDelivery,
+                    request_deserializer=llnw__pb2.IdRequest.FromString,
+                    response_serializer=llnw__pb2.DeliveryEntity.SerializeToString,
+            ),
+            'UpdateDelivery': grpc.unary_unary_rpc_method_handler(
+                    servicer.UpdateDelivery,
+                    request_deserializer=llnw__pb2.DeliveryRequest.FromString,
+                    response_serializer=llnw__pb2.DeliveryEntity.SerializeToString,
+            ),
+            'DeleteDelivery': grpc.unary_unary_rpc_method_handler(
+                    servicer.DeleteDelivery,
+                    request_deserializer=llnw__pb2.IdRequest.FromString,
+                    response_serializer=llnw__pb2.DeliveryEntity.SerializeToString,
+            ),
     }
     generic_handler = grpc.method_handlers_generic_handler(
             'llnwApi.Delivery.DeliveryService', rpc_method_handlers)
@@ -49,7 +129,7 @@ class DeliveryService(object):
     """Missing associated documentation comment in .proto file."""
 
     @staticmethod
-    def ListDeliveryServiceInstances(request,
+    def ListDelivery(request,
             target,
             options=(),
             channel_credentials=None,
@@ -59,8 +139,93 @@ class DeliveryService(object):
             wait_for_ready=None,
             timeout=None,
             metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/llnwApi.Delivery.DeliveryService/ListDeliveryServiceInstances',
-            llnw__pb2.ShortName.SerializeToString,
+        return grpc.experimental.unary_unary(request, target, '/llnwApi.Delivery.DeliveryService/ListDelivery',
+            llnw__pb2.ShortNameRequest.SerializeToString,
             llnw__pb2.DeliveryList.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def ValidateDelivery(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/llnwApi.Delivery.DeliveryService/ValidateDelivery',
+            llnw__pb2.DeliveryRequest.SerializeToString,
+            llnw__pb2.DeliveryEntity.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def CreateDelivery(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/llnwApi.Delivery.DeliveryService/CreateDelivery',
+            llnw__pb2.DeliveryRequest.SerializeToString,
+            llnw__pb2.DeliveryEntity.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def GetDelivery(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/llnwApi.Delivery.DeliveryService/GetDelivery',
+            llnw__pb2.IdRequest.SerializeToString,
+            llnw__pb2.DeliveryEntity.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def UpdateDelivery(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/llnwApi.Delivery.DeliveryService/UpdateDelivery',
+            llnw__pb2.DeliveryRequest.SerializeToString,
+            llnw__pb2.DeliveryEntity.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def DeleteDelivery(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/llnwApi.Delivery.DeliveryService/DeleteDelivery',
+            llnw__pb2.IdRequest.SerializeToString,
+            llnw__pb2.DeliveryEntity.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

+ 88 - 21
src/main.py

@@ -7,32 +7,99 @@ import llnw_pb2_grpc
 from llnw_pb2 import *
 
 
-def getCl(base):
+def get_cl(base):
     return ConfigApiClient('apis.llnw.com', base.username, base.key)
 
 
+def delivery_to_grpc(delivery):
+    return DeliveryEntity(
+        uuid=delivery['uuid'],
+        isEnabled=delivery['isEnabled'],
+        shortname=delivery['shortname'],
+        status=delivery['status']['state'],
+        sourceHostname=delivery['body']['sourceHostname'],
+        publishedHostname=delivery['body']['publishedHostname'],
+        sourceUrlPath=delivery['body']['sourceUrlPath'],
+        publishedUrlPath=delivery['body']['publishedUrlPath'],
+        protocolSets=[ProtocolSet(
+            sourceProtocol=protocolSets['sourceProtocol'],
+            publishedProtocol=protocolSets['publishedProtocol'],
+            options=[ProtocolSetOptions(
+                name=options['name'],
+                parameters=options['parameters'],
+                source=options['source'],
+            ) for options in protocolSets['options']]
+        ) for protocolSets in delivery['body']['protocolSets']]
+    )
+
+
+def delivery_from_grpc(delivery_entity: DeliveryEntity):
+    return {
+        "uuid": delivery_entity.uuid,
+        "accounts": [
+            {
+                "shortname": delivery_entity.shortname
+            }
+        ],
+        "body": {
+            "description": "由 python API 提交",
+            "protocolSets": [
+                {
+                    "options": [
+                        {
+                            "name": po.name,
+                            "parameters": po.parameters,
+                            "source": po.source
+                        } for po in protocol.options
+                    ],
+                    "publishedProtocol": protocol.publishedProtocol,
+                    "sourceProtocol": protocol.sourceProtocol
+                } for protocol in delivery_entity.protocolSets
+            ],
+            "publishedHostname": delivery_entity.publishedHostname,
+            "publishedUrlPath": delivery_entity.publishedUrlPath,
+            "serviceKey": {
+                "name": "delivery"
+            },
+            "serviceProfileName": "LLNW-Generic",
+            "serviceProfileVersion": 2,
+            "sourceHostname": delivery_entity.sourceHostname,
+            "sourceUrlPath": delivery_entity.sourceUrlPath
+        },
+        "meta": {
+            "allowManualDuplicate": True
+        }
+    }
+
+
 class DeliveryServiceServicer(llnw_pb2_grpc.DeliveryServiceServicer):
 
-    def ListDeliveryServiceInstances(self, request, context):
-        return DeliveryList(deliveries=[DeliveryEntity(
-            uuid=results['uuid'],
-            isEnabled=results['isEnabled'],
-            shortname=results['shortname'],
-            status=results['status']['state'],
-            sourceHostname=results['body']['sourceHostname'],
-            publishedHostname=results['body']['publishedHostname'],
-            sourceUrlPath=results['body']['sourceUrlPath'],
-            publishedUrlPath=results['body']['publishedUrlPath'],
-            protocolSets=[ProtocolSet(
-                sourceProtocol=protocolSets['sourceProtocol'],
-                publishedProtocol=protocolSets['publishedProtocol'],
-                options=[ProtocolSetOptions(
-                    name=options['name'],
-                    parameters=options['parameters'],
-                    source=options['source'],
-                ) for options in protocolSets['options']]
-            ) for protocolSets in results['body']['protocolSets']]
-        ) for results in getCl(request.base).list_delivery_service_instances(request.shortName).json()['results']])
+    def ListDelivery(self, request, context):
+        res = get_cl(request.base).list_delivery_service_instances(request.shortName).json()
+        return DeliveryList(deliveries=[delivery_to_grpc(results) for results in res['results']])
+
+    def ValidateDelivery(self, request, context):
+        delivery_config = delivery_from_grpc(request.delivery)
+        res = get_cl(request.base).validate_delivery_service_instance(delivery_config).json()
+        return delivery_to_grpc(res)
+
+    def CreateDelivery(self, request, context):
+        delivery_config = delivery_from_grpc(request.delivery)
+        res = get_cl(request.base).create_delivery_service_instance(delivery_config).json()
+        return delivery_to_grpc(res)
+
+    def GetDelivery(self, request, context):
+        res = get_cl(request.base).get_delivery_service_instance(request.id).json()
+        return delivery_to_grpc(res)
+
+    def UpdateDelivery(self, request, context):
+        delivery_config = delivery_from_grpc(request.delivery)
+        res = get_cl(request.base).update_delivery_service_instance(delivery_config.uuid. delivery_config).json()
+        return delivery_to_grpc(res)
+
+    def DeleteDelivery(self, request, context):
+        res = get_cl(request.base).delete_delivery_service_instance(request.id).json()
+        return delivery_to_grpc(res)
 
 
 if __name__ == '__main__':

+ 2 - 2
src/test.py

@@ -1,7 +1,7 @@
 from ll_sdk.config_api import ConfigApiClient
 import grpc
 import llnw_pb2_grpc
-from llnw_pb2 import Base, ShortName
+from llnw_pb2 import *
 
 username = "chl20000826@163.com"
 shared_key = "0f4912881c27a33dcfcf2ab6e2dc286c065a559000926bc9d1fc25d4228bb5cd"
@@ -9,7 +9,7 @@ short_name = "centtest"
 if __name__ == '__main__':
     channel = grpc.insecure_channel('localhost:50052')
     stub = llnw_pb2_grpc.DeliveryServiceStub(channel)
-    e = stub.ListDeliveryServiceInstances(ShortName(base=Base(username=username, key=shared_key), shortName=short_name))
+    e = stub.ListDeliveryServiceInstances(ShortNameRequest(base=Base(username=username, key=shared_key), shortName=short_name))
     print(str(e))
 
     #

File diff suppressed because it is too large
+ 223 - 3
测试.ipynb