141 - Support for Package Management in SO
[osm/SO.git] / rwlaunchpad / plugins / rwstagingmgr / rift / tasklets / rwstagingmgr / rpc.py
1 #
2 # Copyright 2016 RIFT.IO Inc
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 #
16 # Author(s): Varun Prasad
17 # Creation Date: 09/28/2016
18 #
19
20 import asyncio
21
22 import gi
23 gi.require_version("RwStagingMgmtYang", "1.0")
24 from gi.repository import (
25 RwDts as rwdts,
26 RwStagingMgmtYang)
27
28 import rift.mano.dts as mano_dts
29
30
31 # Shortcuts
32 RPC_STAGING_CREATE_ENDPOINT = RwStagingMgmtYang.YangOutput_RwStagingMgmt_CreateStagingArea
33
34
35 class StagingAreaCreateRpcHandler(mano_dts.AbstractRpcHandler):
36 """RPC handler to generate staging Area"""
37
38 def __init__(self, log, dts, loop, store):
39 super().__init__(log, dts, loop)
40 self.store = store
41
42 @property
43 def xpath(self):
44 return "/rw-staging-mgmt:create-staging-area"
45
46 @asyncio.coroutine
47 def callback(self, ks_path, msg):
48 """Forwards the request to proxy.
49 """
50 self.log.debug("Got a staging create request for {}".format(msg.as_dict()))
51 staging_area = self.store.create_staging_area(msg)
52
53 rpc_op = RPC_STAGING_CREATE_ENDPOINT.from_dict({
54 "port": 4568,
55 "endpoint": "api/upload/{}".format(staging_area.model.area_id)})
56
57 return rpc_op