-
Notifications
You must be signed in to change notification settings - Fork 59
/
common.go
77 lines (67 loc) · 2.39 KB
/
common.go
1
2
3
4
5
6
7
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//(C) Copyright [2020] Hewlett Packard Enterprise Development LP
//
//Licensed under the Apache License, Version 2.0 (the "License"); you may
//not use this file except in compliance with the License. You may obtain
//a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
//WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
//License for the specific language governing permissions and limitations
// under the License.
package rpc
import (
"context"
"encoding/json"
"github.com/ODIM-Project/ODIM/lib-utilities/common"
l "github.com/ODIM-Project/ODIM/lib-utilities/logs"
updateproto "github.com/ODIM-Project/ODIM/lib-utilities/proto/update"
"github.com/ODIM-Project/ODIM/lib-utilities/response"
"github.com/ODIM-Project/ODIM/svc-update/update"
)
// Updater struct helps to register service
type Updater struct {
connector *update.ExternalInterface
}
// GetUpdater intializes all the required connection functions for the updater execution
func GetUpdater() *Updater {
return &Updater{
connector: update.GetExternalInterface(),
}
}
func generateResponse(ctx context.Context, input interface{}) []byte {
bytes, err := json.Marshal(input)
if err != nil {
l.Log.Warn("Unable to unmarshall response object from util-libs " + err.Error())
}
return bytes
}
func fillProtoResponse(ctx context.Context, resp *updateproto.UpdateResponse, data response.RPC) {
resp.StatusCode = data.StatusCode
resp.StatusMessage = data.StatusMessage
resp.Body = generateResponse(ctx, data.Body)
resp.Header = data.Header
}
func generateRPCResponse(rpcResp response.RPC, aggResp *updateproto.UpdateResponse) {
bytes, _ := json.Marshal(rpcResp.Body)
*aggResp = updateproto.UpdateResponse{
StatusCode: rpcResp.StatusCode,
StatusMessage: rpcResp.StatusMessage,
Header: rpcResp.Header,
Body: bytes,
}
}
func generateTaskRespone(taskID, taskURI string, rpcResp *response.RPC) {
commonResponse := response.Response{
OdataType: common.TaskType,
ID: taskID,
Name: "Task " + taskID,
OdataContext: "/redfish/v1/$metadata#Task.Task",
OdataID: taskURI,
}
commonResponse.MessageArgs = []string{taskID}
commonResponse.CreateGenericResponse(rpcResp.StatusMessage)
rpcResp.Body = commonResponse
}