7701e87f96ce954172081435aa267ff55633c5dd
[sfa.git] / util / gid.py
1 # gid.py
2 #
3 # implements GENI GID
4
5 from cert import *
6 import uuid
7 import xmlrpclib
8
9 # GID is a tuplie:
10 #    (uuid, hrn, public_key)
11
12 def create_uuid():
13     return str(uuid.uuid4().int)
14
15 class GID(Certificate):
16     uuid = None
17     hrn = None
18
19     def __init__(self, create=False, subject=None, string=None, filename=None, uuid=None, hrn=None):
20         Certificate.__init__(self, create, subject, string, filename)
21         if uuid:
22             self.uuid = uuid
23         if hrn:
24             self.hrn = hrn
25
26     def set_uuid(self, uuid):
27         self.uuid = uuid
28
29     def get_uuid(self):
30         if not self.uuid:
31             self.decode()
32         return self.uuid
33
34     def set_hrn(self, hrn):
35         self.hrn = hrn
36
37     def get_hrn(self):
38         if not self.hrn:
39             self.decode()
40         return self.hrn
41
42     def encode(self):
43         dict = {"uuid": self.uuid,
44                 "hrn": self.hrn}
45         str = xmlrpclib.dumps((dict,))
46         self.set_data(str)
47
48     def decode(self):
49         data = self.get_data()
50         if data:
51             dict = xmlrpclib.loads(self.get_data())[0][0]
52         else:
53             dict = {}
54
55         self.uuid = dict.get("uuid", None)
56         self.hrn = dict.get("hrn", None)
57
58     def dump(self, indent=0):
59         # TODO: implement indent
60         print " "*indent, " hrn:", self.get_hrn()
61         print " "*indent, "uuid:", self.get_uuid()
62
63
64
65
66