level1prc.py 3.72 KB
Newer Older
Wei Shoulin's avatar
Wei Shoulin committed
1
2
3
4
import grpc

from csst_dfs_commons.models import Result
from csst_dfs_commons.models.common import from_proto_model_list
Wei Shoulin's avatar
brick    
Wei Shoulin committed
5
from csst_dfs_commons.models.sls import Level1PrcRecord
Wei Shoulin's avatar
Wei Shoulin committed
6

Wei Shoulin's avatar
brick    
Wei Shoulin committed
7
from csst_dfs_proto.sls.level1prc import level1prc_pb2, level1prc_pb2_grpc
Wei Shoulin's avatar
Wei Shoulin committed
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

from ..common.service import ServiceProxy
from ..common.utils import *

class Level1PrcApi(object):
    def __init__(self):
        self.stub = level1prc_pb2_grpc.Level1PrcSrvStub(ServiceProxy().channel())

    def find(self, **kwargs):
        ''' retrieve level1 procedure records from database

        parameter kwargs:
            level1_id: [str]
            pipeline_id: [str]
            prc_module: [str]
            prc_status : [int]

        return: csst_dfs_common.models.Result
        '''
        try:
            resp, _ =  self.stub.Find.with_call(level1prc_pb2.FindLevel1PrcReq(
                level1_id = get_parameter(kwargs, "level1_id"),
                pipeline_id = get_parameter(kwargs, "pipeline_id"),
                prc_module = get_parameter(kwargs, "prc_module"),
                prc_status = get_parameter(kwargs, "prc_status"),
                other_conditions = {"test":"cnlab.test"}
            ),metadata = get_auth_headers())

            if resp.success:
                return Result.ok_data(data = from_proto_model_list(Level1PrcRecord, resp.records)).append("totalCount", resp.totalCount)
            else:
                return Result.error(message = str(resp.error.detail))

        except grpc.RpcError as e:
Wei Shoulin's avatar
Wei Shoulin committed
42
            return Result.error(message="%s:%s" % (e.code().value, e.details()))
Wei Shoulin's avatar
Wei Shoulin committed
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

    def update_proc_status(self, **kwargs):
        ''' update the status of reduction

        parameter kwargs:
            id : [int],
            status : [int]

        return csst_dfs_common.models.Result
        '''
        id = get_parameter(kwargs, "id")
        status = get_parameter(kwargs, "status")

        try:
            resp,_ = self.stub.UpdateProcStatus.with_call(
                level1prc_pb2.UpdateProcStatusReq(id=id, status=status),
                metadata = get_auth_headers()
            )
            if resp.success:
                return Result.ok_data()
            else:
                return Result.error(message = str(resp.error.detail))
        except grpc.RpcError as e:
Wei Shoulin's avatar
Wei Shoulin committed
66
            return Result.error(message="%s:%s" % (e.code().value, e.details()))
Wei Shoulin's avatar
Wei Shoulin committed
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99

    def write(self, **kwargs):
        ''' insert a level1 procedure record into database
 
        parameter kwargs:
            level1_id : [int]
            pipeline_id : [str]
            prc_module : [str]
            params_file_path : [str]
            prc_status : [int]
            prc_time : [str]
            result_file_path : [str]
        return csst_dfs_common.models.Result
        '''   

        rec = level1prc_pb2.Level1PrcRecord(
            id = 0,
            level1_id = get_parameter(kwargs, "level1_id"),
            pipeline_id = get_parameter(kwargs, "pipeline_id"),
            prc_module = get_parameter(kwargs, "prc_module"),
            params_file_path = get_parameter(kwargs, "params_file_path"),
            prc_status = get_parameter(kwargs, "prc_status", -1),
            prc_time = get_parameter(kwargs, "prc_time"),
            result_file_path = get_parameter(kwargs, "result_file_path")
        )
        req = level1prc_pb2.WriteLevel1PrcReq(record = rec)
        try:
            resp,_ = self.stub.Write.with_call(req,metadata = get_auth_headers())
            if resp.success:
                return Result.ok_data(data = Level1PrcRecord().from_proto_model(resp.record))
            else:
                return Result.error(message = str(resp.error.detail))
        except grpc.RpcError as e:
Wei Shoulin's avatar
Wei Shoulin committed
100
            return Result.error(message="%s:%s" % (e.code().value, e.details()))
Wei Shoulin's avatar
Wei Shoulin committed
101
102
103