3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
16 from dss.api import dss_error
17 from dss.api import dss_msg
18 from dss.api import dss_get_rpc
19 from dss.api import dss_set_rpc
20 from dss.api import dss_get_domain_rpc
21 from dss.api import dss_get_domains_rpc
22 from dss.api import dss_delete_rpc
23 from dss.api import dss_delete_domain_rpc
28 def __init__(self, uds):
29 self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
31 self.server_address = uds
38 self.sock.connect(self.server_address)
39 self.fd = self.sock.makefile('rw')
42 def _call_rpc(self, msg):
44 repmsg = dss_msg.Msg()
48 self.sock.sendall(req+'\n')
49 rep = self.fd.readline()
50 except Exception as exp:
56 raise dss_error.Error(str(exp))
57 repmsg.deserialize(rep)
60 def get(self, domain, name):
61 reqpayload = dss_get_rpc.GetRPC.create_req_payload(domain, name)
62 reqmsg = dss_msg.Msg(dss_get_rpc.GetRPC.get_name(), self.id, reqpayload)
63 repmsg = self._call_rpc(reqmsg)
64 reppayload = repmsg.get_payload()
65 value = dss_get_rpc.GetRPC.get_value_from_rep_payload(reppayload)
68 def get_domain(self, domain):
69 reqpayload = dss_get_domain_rpc.GetDomainRPC.create_req_payload(domain)
70 reqmsg = dss_msg.Msg(dss_get_domain_rpc.GetDomainRPC.get_name(), self.id, reqpayload)
71 repmsg = self._call_rpc(reqmsg)
72 reppayload = repmsg.get_payload()
73 attrs = dss_get_domain_rpc.GetDomainRPC.get_data_from_rep_payload(reppayload)
77 def set(self, domain, name, value):
78 reqpayload = dss_set_rpc.SetRPC.create_req_payload(domain, name, value)
79 reqmsg = dss_msg.Msg(dss_set_rpc.SetRPC.get_name(), self.id, reqpayload)
80 repmsg = self._call_rpc(reqmsg)
82 def get_domains(self):
83 reqmsg = dss_msg.Msg(dss_get_domains_rpc.GetDomainsRPC.get_name(), self.id, None)
84 repmsg = self._call_rpc(reqmsg)
85 reppayload = repmsg.get_payload()
86 domains = dss_get_domains_rpc.GetDomainsRPC.get_data_from_rep_payload(reppayload)
89 def delete(self, domain, name):
90 reqpayload = dss_delete_rpc.DeleteRPC.create_req_payload(domain, name)
91 reqmsg = dss_msg.Msg(dss_delete_rpc.DeleteRPC.get_name(), self.id, reqpayload)
92 repmsg = self._call_rpc(reqmsg)
94 def delete_domain(self, domain):
95 reqpayload = dss_delete_domain_rpc.DeleteDomainRPC.create_req_payload(domain)
96 reqmsg = dss_msg.Msg(dss_delete_domain_rpc.DeleteDomainRPC.get_name(), self.id, reqpayload)
97 repmsg = self._call_rpc(reqmsg)