import sys, os, glob, threading
 import getopt, socket
 import logging, errno
+import uuid
 
 #sys.path.append('gen-py')
 #sys.path.insert(0, glob.glob('./lib/py/build/lib.*')[0])
   #       - Depending on Controller Domain, call API
   #       - Respond Back with Push Response
   def d_push(self, push_msg):
-    logging.info('%d Received Template File', self.dominoClient.UDID)
+    logging.info('%s Received Template File', self.dominoClient.UDID)
     # Retrieve the template file
     try:
       os.makedirs(TOSCA_RX_DIR+str(self.dominoClient.UDID))
     if self.state == 'UNREGISTERED':
       self.start()
           
-    logging.info('%d Sending heartbeat', self.UDID)
+    logging.info('%s Sending heartbeat', self.UDID)
     hbm = HeartBeatMessage()         
     hbm.domino_udid = self.UDID        
     hbm.seq_no = self.seqno         
 
     try:
       hbm_r = self.sender().d_heartbeat(hbm)
-      logging.info('heart beat received from: %d ,sequence number: %d' , hbm_r.domino_udid, hbm_r.seq_no)
+      logging.info('heart beat received from: %s ,sequence number: %d' , hbm_r.domino_udid, hbm_r.seq_no)
     except (Thrift.TException, TSocket.TTransportException) as tx:
       logging.error('%s' , tx.message)
     except (socket.timeout) as tx:
       return
     try:
       pub_msg_r = self.sender().d_publish(pub_msg)
-      logging.info('Publish Response is received from: %d ,sequence number: %d Status: %d', pub_msg_r.domino_udid, pub_msg_r.seq_no, pub_msg_r.responseCode)
+      logging.info('Publish Response is received from: %s ,sequence number: %d Status: %d', pub_msg_r.domino_udid, pub_msg_r.seq_no, pub_msg_r.responseCode)
     except (Thrift.TException, TSocket.TTransportException) as tx:
       print '%s' % (tx.message)
     except (socket.timeout) as tx:
      sub_msg.labels = labels
      try:
        sub_msg_r = self.sender().d_subscribe(sub_msg)
-       logging.info('Subscribe Response is received from: %d ,sequence number: %d', sub_msg_r.domino_udid,sub_msg_r.seq_no)
+       logging.info('Subscribe Response is received from: %s ,sequence number: %d', sub_msg_r.domino_udid,sub_msg_r.seq_no)
      except (Thrift.TException, TSocket.TTransportException) as tx: 
        logging.error('%s' , tx.message)
      except (socket.timeout) as tx: 
 
 import getopt, socket
 import logging, json
 import sqlite3, yaml
+import uuid
 #sys.path.append('gen-py')
 #sys.path.insert(0, glob.glob('./lib/py/build/lib.*')[0])
 sys.path.insert(0, glob.glob('./lib')[0])
     pushm.template = template
     try:
       push_r = self.sender.d_push(pushm)  
-      logging.info('Push Response received from %d' , push_r.domino_udid)
+      logging.info('Push Response received from %s' , push_r.domino_udid)
     except (Thrift.TException, TSocket.TTransportException) as tx:
       logging.error('%s' , tx.message)
     except (socket.timeout) as tx:
   #    - Respond Back with a heartbeat
 
   def d_heartbeat(self, hb_msg):
-    logging.info('heartbeat received from %d' , hb_msg.domino_udid)
+    logging.info('heartbeat received from %s' , hb_msg.domino_udid)
 
     hb_r = HeartBeatMessage()
     hb_r.domino_udid = SERVER_UDID
 
     #Prepare and send Registration Response
     reg_r = RegisterResponseMessage()
-    logging.info('Registration Request received for UDID %d from IP: %s port: %d', reg_msg.domino_udid_desired, reg_msg.ipaddr, reg_msg.tcpport)
+    logging.info('Registration Request received for UUID %s from IP: %s port: %d', reg_msg.domino_udid_desired, reg_msg.ipaddr, reg_msg.tcpport)
 
    
     reg_r.domino_udid_assigned = self.dominoServer.assign_udid(reg_msg.domino_udid_desired)
       newrow = [(reg_r.domino_udid_assigned, reg_msg.ipaddr, reg_msg.tcpport, ','.join(reg_msg.supported_templates), reg_msg.seq_no),]
       c.executemany('INSERT INTO clients VALUES (?,?,?,?,?)',newrow)
     except sqlite3.OperationalError as ex:
-      logging.error('Could not add the new registration record into %s for Domino Client %d :  %s', SERVER_DBFILE, reg_r.domino_udid_assigned, ex.message)
+      logging.error('Could not add the new registration record into %s for Domino Client %s :  %s', SERVER_DBFILE, reg_r.domino_udid_assigned, ex.message)
     except:
-      logging.error('Could not add the new registration record into %s for Domino Client %d', SERVER_DBFILE, reg_r.domino_udid_assigned)
+      logging.error('Could not add the new registration record into %s for Domino Client %s', SERVER_DBFILE, reg_r.domino_udid_assigned)
       logging.error('Unexpected error: %s', sys.exc_info()[0])
  
     dbconn.commit()
   #       - Save the templates  & labels
   #       - Respond Back with Subscription Response
   def d_subscribe(self, sub_msg):
-    logging.info('Subscribe Request received from %d' , sub_msg.domino_udid)
+    logging.info('Subscribe Request received from %s' , sub_msg.domino_udid)
 
     if sub_msg.template_op == APPEND:
       if self.dominoServer.subscribed_templateformats.has_key(sub_msg.domino_udid):
       c.execute("REPLACE INTO labels (udid, label_list) VALUES ({udid}, '{newvalue}')".\
                format(udid=sub_msg.domino_udid, newvalue=','.join(list(newlabelset)) ))
     except sqlite3.OperationalError as ex1:
-      logging.error('Could not add the new labels to %s for Domino Client %d :  %s', SERVER_DBFILE, sub_msg.domino_udid, ex1.message)
+      logging.error('Could not add the new labels to %s for Domino Client %s :  %s', SERVER_DBFILE, sub_msg.domino_udid, ex1.message)
     except:
-      logging.error('Could not add the new labels to %s for Domino Client %d', SERVER_DBFILE, sub_msg.domino_udid)
+      logging.error('Could not add the new labels to %s for Domino Client %s', SERVER_DBFILE, sub_msg.domino_udid)
       logging.error('Unexpected error: %s', sys.exc_info()[0])
 
     newttypeset = self.dominoServer.subscribed_templateformats[sub_msg.domino_udid]
       c.execute("REPLACE INTO ttypes (udid, ttype_list) VALUES ({udid}, '{newvalue}')".\
                format(udid=sub_msg.domino_udid, newvalue=','.join(list(newttypeset)) ))
     except sqlite3.OperationalError as ex1:
-      logging.error('Could not add the new labels to %s for Domino Client %d :  %s', SERVER_DBFILE, sub_msg.domino_udid, ex1.message)
+      logging.error('Could not add the new labels to %s for Domino Client %s :  %s', SERVER_DBFILE, sub_msg.domino_udid, ex1.message)
     except:
-      logging.error('Could not add the new labels to %s for Domino Client %d', SERVER_DBFILE, sub_msg.domino_udid)
+      logging.error('Could not add the new labels to %s for Domino Client %s', SERVER_DBFILE, sub_msg.domino_udid)
       logging.error('Unexpected error: %s', sys.exc_info()[0])
 
 
   #       - Launch Push service
   #       - Respond Back with Publication Response
   def d_publish(self, pub_msg):
-    logging.info('Publish Request received from %d' , pub_msg.domino_udid)
+    logging.info('Publish Request received from %s' , pub_msg.domino_udid)
     logging.debug(pub_msg.template)
 
     # Save as file
    #If assigned, offer a new random id
    def assign_udid(self, udid_desired):
      if udid_desired in self.assignedUUIDs:
-       new_udid = random.getrandbits(63)
+       new_udid = uuid.uuid4().hex #random.getrandbits(63)
        while new_udid in self.assignedUUIDs:
-         new_udid = random.getrandbits(63)
+         new_udid = uuid.uuid4().hex #random.getrandbits(63)
  
        self.assignedUUIDs.append(new_udid)
        return new_udid
   dbconn = sqlite3.connect(SERVER_DBFILE)
   c = dbconn.cursor()
   try:
-    c.execute('''CREATE TABLE labels (udid INTEGER PRIMARY KEY, label_list TEXT)''')
+    c.execute('''CREATE TABLE labels (udid TEXT PRIMARY KEY, label_list TEXT)''')
   except sqlite3.OperationalError as ex:
     logging.debug('In database file %s, no table is created as %s', SERVER_DBFILE, ex.message)
 
   try:
-    c.execute('''CREATE TABLE ttypes (udid INTEGER PRIMARY KEY, ttype_list TEXT)''')
+    c.execute('''CREATE TABLE ttypes (udid TEXT PRIMARY KEY, ttype_list TEXT)''')
   except sqlite3.OperationalError as ex:
     logging.debug('In database file %s, no table is created as %s', SERVER_DBFILE, ex.message)
 
   try:
-    c.execute('''CREATE TABLE clients (udid INTEGER PRIMARY KEY, ipaddr TEXT, tcpport INTEGER, templatetypes TEXT, seqno INTEGER)''')
+    c.execute('''CREATE TABLE clients (udid TEXT PRIMARY KEY, ipaddr TEXT, tcpport INTEGER, templatetypes TEXT, seqno INTEGER)''')
   except sqlite3.OperationalError as ex:
     logging.debug('In database file %s, no table is created as %s', SERVER_DBFILE, ex.message)
 
 
 */
 struct HeartBeatMessage {
  1: MessageType messageType = HEART_BEAT,
- 2: i64 domino_udid,
+ 2: string domino_udid,
  3: i64 seq_no  
 }
 
 
 struct RegisterMessage {
  1: MessageType messageType = REGISTER,
- 2: i64 domino_udid_desired,
+ 2: string domino_udid_desired,
  3: i64 seq_no,
  4: string ipaddr,
  5: i16 tcpport,
 
 struct RegisterResponseMessage {
  1: MessageType messageType = REGISTER_RESPONSE,
- 2: i64 domino_udid,
- 3: i64 domino_udid_assigned,
+ 2: string domino_udid,
+ 3: string domino_udid_assigned,
  4: i64 seq_no,
  5: ResponseCode responseCode,
  6: optional list<string> comments
 
 struct SubscribeMessage {
  1: MessageType messageType = SUBSCRIBE,
- 2: i64 domino_udid,
+ 2: string domino_udid,
  3: i64 seq_no,
  4: byte template_op, 
  5: list<string> supported_template_types,
 
 struct SubscribeResponseMessage {
  1: MessageType messageType = SUBSCRIBE_RESPONSE,
- 2: i64 domino_udid,
+ 2: string domino_udid,
  3: i64 seq_no,
  4: ResponseCode responseCode,
  5: optional list<string> comments
 
 struct PublishMessage {
  1: MessageType messageType = PUBLISH,
- 2: i64 domino_udid,
+ 2: string domino_udid,
  3: i64 seq_no,
  4: string template_type,
  5: list<string> template
 
 struct PublishResponseMessage {
  1: MessageType messageType = PUBLISH_RESPONSE,
- 2: i64 domino_udid,
+ 2: string domino_udid,
  3: i64 seq_no,
  4: ResponseCode responseCode,
  5: optional list<string> comments
 
 struct PushMessage {
  1: MessageType messageType = PUSH,
- 2: i64 domino_udid,
+ 2: string domino_udid,
  3: i64 seq_no,
  4: string template_type,
  5: list<string> template
 
 struct PushResponseMessage {
  1: MessageType messageType = PUSH_RESPONSE,
- 2: i64 domino_udid,
+ 2: string domino_udid,
  3: i64 seq_no,
  4: ResponseCode responseCode,
  5: optional list<string> comments
 
 struct QueryMessage{
  1: MessageType messageType = QUERY,
- 2: i64 domino_udid,
+ 2: string domino_udid,
  3: i64 seq_no,
  4: list<string> queryString
 }
 
 struct QueryResponseMessage{
  1: MessageType messageType = QUERY_RESPONSE,
- 2: i64 domino_udid,
+ 2: string domino_udid,
  3: i64 seq_no,
  4: ResponseCode responseCode,
  5: optional list<string> queryResponse,
 
 DOMINO_CLIENT_PORT = 9091
 INTERACTIVE = 'FALSE'
 
-CLIENT_UDID = 1
 CLIENT_SEQNO = 0
 
 DOMINO_SERVER_IP = 'localhost'
 DOMINO_CLI_PORT = 9100
 
-UDID_DESIRED = 0
+UDID_DESIRED = '12345678123456781234567812345678'
 LIST_SUPPORTED_TEMPLATES = ['tosca-nfv-v1.0']
 DEFAULT_TOSCA_PUBFILE = './tosca-templates/tosca_helloworld_nfv.yaml'
 TOSCA_RX_DIR = './toscafiles/'
 
 #Server Parameters
 DOMINO_SERVER_PORT = 9090
-SERVER_UDID = 0
+SERVER_UDID = 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'
 TOSCADIR = './toscafiles/'
 TOSCA_DEFAULT_FNAME = 'template1.yaml'
 SERVER_DBFILE = 'dominoserver.db'
 
   thrift_spec = (
     None, # 0
     (1, TType.BYTE, 'messageType', None, 1, ), # 1
-    (2, TType.I64, 'domino_udid', None, None, ), # 2
+    (2, TType.STRING, 'domino_udid', None, None, ), # 2
     (3, TType.I64, 'seq_no', None, None, ), # 3
   )
 
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I64:
-          self.domino_udid = iprot.readI64()
+        if ftype == TType.STRING:
+          self.domino_udid = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
       oprot.writeByte(self.messageType)
       oprot.writeFieldEnd()
     if self.domino_udid is not None:
-      oprot.writeFieldBegin('domino_udid', TType.I64, 2)
-      oprot.writeI64(self.domino_udid)
+      oprot.writeFieldBegin('domino_udid', TType.STRING, 2)
+      oprot.writeString(self.domino_udid)
       oprot.writeFieldEnd()
     if self.seq_no is not None:
       oprot.writeFieldBegin('seq_no', TType.I64, 3)
   thrift_spec = (
     None, # 0
     (1, TType.BYTE, 'messageType', None, 2, ), # 1
-    (2, TType.I64, 'domino_udid_desired', None, None, ), # 2
+    (2, TType.STRING, 'domino_udid_desired', None, None, ), # 2
     (3, TType.I64, 'seq_no', None, None, ), # 3
     (4, TType.STRING, 'ipaddr', None, None, ), # 4
     (5, TType.I16, 'tcpport', None, None, ), # 5
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I64:
-          self.domino_udid_desired = iprot.readI64()
+        if ftype == TType.STRING:
+          self.domino_udid_desired = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
       oprot.writeByte(self.messageType)
       oprot.writeFieldEnd()
     if self.domino_udid_desired is not None:
-      oprot.writeFieldBegin('domino_udid_desired', TType.I64, 2)
-      oprot.writeI64(self.domino_udid_desired)
+      oprot.writeFieldBegin('domino_udid_desired', TType.STRING, 2)
+      oprot.writeString(self.domino_udid_desired)
       oprot.writeFieldEnd()
     if self.seq_no is not None:
       oprot.writeFieldBegin('seq_no', TType.I64, 3)
   thrift_spec = (
     None, # 0
     (1, TType.BYTE, 'messageType', None, 3, ), # 1
-    (2, TType.I64, 'domino_udid', None, None, ), # 2
-    (3, TType.I64, 'domino_udid_assigned', None, None, ), # 3
+    (2, TType.STRING, 'domino_udid', None, None, ), # 2
+    (3, TType.STRING, 'domino_udid_assigned', None, None, ), # 3
     (4, TType.I64, 'seq_no', None, None, ), # 4
     (5, TType.BYTE, 'responseCode', None, None, ), # 5
     (6, TType.LIST, 'comments', (TType.STRING,None), None, ), # 6
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I64:
-          self.domino_udid = iprot.readI64()
+        if ftype == TType.STRING:
+          self.domino_udid = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
-        if ftype == TType.I64:
-          self.domino_udid_assigned = iprot.readI64()
+        if ftype == TType.STRING:
+          self.domino_udid_assigned = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 4:
       oprot.writeByte(self.messageType)
       oprot.writeFieldEnd()
     if self.domino_udid is not None:
-      oprot.writeFieldBegin('domino_udid', TType.I64, 2)
-      oprot.writeI64(self.domino_udid)
+      oprot.writeFieldBegin('domino_udid', TType.STRING, 2)
+      oprot.writeString(self.domino_udid)
       oprot.writeFieldEnd()
     if self.domino_udid_assigned is not None:
-      oprot.writeFieldBegin('domino_udid_assigned', TType.I64, 3)
-      oprot.writeI64(self.domino_udid_assigned)
+      oprot.writeFieldBegin('domino_udid_assigned', TType.STRING, 3)
+      oprot.writeString(self.domino_udid_assigned)
       oprot.writeFieldEnd()
     if self.seq_no is not None:
       oprot.writeFieldBegin('seq_no', TType.I64, 4)
   thrift_spec = (
     None, # 0
     (1, TType.BYTE, 'messageType', None, 4, ), # 1
-    (2, TType.I64, 'domino_udid', None, None, ), # 2
+    (2, TType.STRING, 'domino_udid', None, None, ), # 2
     (3, TType.I64, 'seq_no', None, None, ), # 3
     (4, TType.BYTE, 'template_op', None, None, ), # 4
     (5, TType.LIST, 'supported_template_types', (TType.STRING,None), None, ), # 5
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I64:
-          self.domino_udid = iprot.readI64()
+        if ftype == TType.STRING:
+          self.domino_udid = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
       oprot.writeByte(self.messageType)
       oprot.writeFieldEnd()
     if self.domino_udid is not None:
-      oprot.writeFieldBegin('domino_udid', TType.I64, 2)
-      oprot.writeI64(self.domino_udid)
+      oprot.writeFieldBegin('domino_udid', TType.STRING, 2)
+      oprot.writeString(self.domino_udid)
       oprot.writeFieldEnd()
     if self.seq_no is not None:
       oprot.writeFieldBegin('seq_no', TType.I64, 3)
   thrift_spec = (
     None, # 0
     (1, TType.BYTE, 'messageType', None, 5, ), # 1
-    (2, TType.I64, 'domino_udid', None, None, ), # 2
+    (2, TType.STRING, 'domino_udid', None, None, ), # 2
     (3, TType.I64, 'seq_no', None, None, ), # 3
     (4, TType.BYTE, 'responseCode', None, None, ), # 4
     (5, TType.LIST, 'comments', (TType.STRING,None), None, ), # 5
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I64:
-          self.domino_udid = iprot.readI64()
+        if ftype == TType.STRING:
+          self.domino_udid = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
       oprot.writeByte(self.messageType)
       oprot.writeFieldEnd()
     if self.domino_udid is not None:
-      oprot.writeFieldBegin('domino_udid', TType.I64, 2)
-      oprot.writeI64(self.domino_udid)
+      oprot.writeFieldBegin('domino_udid', TType.STRING, 2)
+      oprot.writeString(self.domino_udid)
       oprot.writeFieldEnd()
     if self.seq_no is not None:
       oprot.writeFieldBegin('seq_no', TType.I64, 3)
   thrift_spec = (
     None, # 0
     (1, TType.BYTE, 'messageType', None, 6, ), # 1
-    (2, TType.I64, 'domino_udid', None, None, ), # 2
+    (2, TType.STRING, 'domino_udid', None, None, ), # 2
     (3, TType.I64, 'seq_no', None, None, ), # 3
     (4, TType.STRING, 'template_type', None, None, ), # 4
     (5, TType.LIST, 'template', (TType.STRING,None), None, ), # 5
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I64:
-          self.domino_udid = iprot.readI64()
+        if ftype == TType.STRING:
+          self.domino_udid = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
       oprot.writeByte(self.messageType)
       oprot.writeFieldEnd()
     if self.domino_udid is not None:
-      oprot.writeFieldBegin('domino_udid', TType.I64, 2)
-      oprot.writeI64(self.domino_udid)
+      oprot.writeFieldBegin('domino_udid', TType.STRING, 2)
+      oprot.writeString(self.domino_udid)
       oprot.writeFieldEnd()
     if self.seq_no is not None:
       oprot.writeFieldBegin('seq_no', TType.I64, 3)
   thrift_spec = (
     None, # 0
     (1, TType.BYTE, 'messageType', None, 7, ), # 1
-    (2, TType.I64, 'domino_udid', None, None, ), # 2
+    (2, TType.STRING, 'domino_udid', None, None, ), # 2
     (3, TType.I64, 'seq_no', None, None, ), # 3
     (4, TType.BYTE, 'responseCode', None, None, ), # 4
     (5, TType.LIST, 'comments', (TType.STRING,None), None, ), # 5
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I64:
-          self.domino_udid = iprot.readI64()
+        if ftype == TType.STRING:
+          self.domino_udid = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
       oprot.writeByte(self.messageType)
       oprot.writeFieldEnd()
     if self.domino_udid is not None:
-      oprot.writeFieldBegin('domino_udid', TType.I64, 2)
-      oprot.writeI64(self.domino_udid)
+      oprot.writeFieldBegin('domino_udid', TType.STRING, 2)
+      oprot.writeString(self.domino_udid)
       oprot.writeFieldEnd()
     if self.seq_no is not None:
       oprot.writeFieldBegin('seq_no', TType.I64, 3)
   thrift_spec = (
     None, # 0
     (1, TType.BYTE, 'messageType', None, 8, ), # 1
-    (2, TType.I64, 'domino_udid', None, None, ), # 2
+    (2, TType.STRING, 'domino_udid', None, None, ), # 2
     (3, TType.I64, 'seq_no', None, None, ), # 3
     (4, TType.STRING, 'template_type', None, None, ), # 4
     (5, TType.LIST, 'template', (TType.STRING,None), None, ), # 5
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I64:
-          self.domino_udid = iprot.readI64()
+        if ftype == TType.STRING:
+          self.domino_udid = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
       oprot.writeByte(self.messageType)
       oprot.writeFieldEnd()
     if self.domino_udid is not None:
-      oprot.writeFieldBegin('domino_udid', TType.I64, 2)
-      oprot.writeI64(self.domino_udid)
+      oprot.writeFieldBegin('domino_udid', TType.STRING, 2)
+      oprot.writeString(self.domino_udid)
       oprot.writeFieldEnd()
     if self.seq_no is not None:
       oprot.writeFieldBegin('seq_no', TType.I64, 3)
   thrift_spec = (
     None, # 0
     (1, TType.BYTE, 'messageType', None, 9, ), # 1
-    (2, TType.I64, 'domino_udid', None, None, ), # 2
+    (2, TType.STRING, 'domino_udid', None, None, ), # 2
     (3, TType.I64, 'seq_no', None, None, ), # 3
     (4, TType.BYTE, 'responseCode', None, None, ), # 4
     (5, TType.LIST, 'comments', (TType.STRING,None), None, ), # 5
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I64:
-          self.domino_udid = iprot.readI64()
+        if ftype == TType.STRING:
+          self.domino_udid = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
       oprot.writeByte(self.messageType)
       oprot.writeFieldEnd()
     if self.domino_udid is not None:
-      oprot.writeFieldBegin('domino_udid', TType.I64, 2)
-      oprot.writeI64(self.domino_udid)
+      oprot.writeFieldBegin('domino_udid', TType.STRING, 2)
+      oprot.writeString(self.domino_udid)
       oprot.writeFieldEnd()
     if self.seq_no is not None:
       oprot.writeFieldBegin('seq_no', TType.I64, 3)
   thrift_spec = (
     None, # 0
     (1, TType.BYTE, 'messageType', None, 10, ), # 1
-    (2, TType.I64, 'domino_udid', None, None, ), # 2
+    (2, TType.STRING, 'domino_udid', None, None, ), # 2
     (3, TType.I64, 'seq_no', None, None, ), # 3
     (4, TType.LIST, 'queryString', (TType.STRING,None), None, ), # 4
   )
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I64:
-          self.domino_udid = iprot.readI64()
+        if ftype == TType.STRING:
+          self.domino_udid = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
       oprot.writeByte(self.messageType)
       oprot.writeFieldEnd()
     if self.domino_udid is not None:
-      oprot.writeFieldBegin('domino_udid', TType.I64, 2)
-      oprot.writeI64(self.domino_udid)
+      oprot.writeFieldBegin('domino_udid', TType.STRING, 2)
+      oprot.writeString(self.domino_udid)
       oprot.writeFieldEnd()
     if self.seq_no is not None:
       oprot.writeFieldBegin('seq_no', TType.I64, 3)
   thrift_spec = (
     None, # 0
     (1, TType.BYTE, 'messageType', None, 11, ), # 1
-    (2, TType.I64, 'domino_udid', None, None, ), # 2
+    (2, TType.STRING, 'domino_udid', None, None, ), # 2
     (3, TType.I64, 'seq_no', None, None, ), # 3
     (4, TType.BYTE, 'responseCode', None, None, ), # 4
     (5, TType.LIST, 'queryResponse', (TType.STRING,None), None, ), # 5
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I64:
-          self.domino_udid = iprot.readI64()
+        if ftype == TType.STRING:
+          self.domino_udid = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
       oprot.writeByte(self.messageType)
       oprot.writeFieldEnd()
     if self.domino_udid is not None:
-      oprot.writeFieldBegin('domino_udid', TType.I64, 2)
-      oprot.writeI64(self.domino_udid)
+      oprot.writeFieldBegin('domino_udid', TType.STRING, 2)
+      oprot.writeString(self.domino_udid)
       oprot.writeFieldEnd()
     if self.seq_no is not None:
       oprot.writeFieldBegin('seq_no', TType.I64, 3)
 
-11/18/2016 12:40:26 PM Domino Client Starting...
-11/18/2016 12:40:26 PM 1 Sending Registration
-11/18/2016 12:40:26 PM Registration Response: Response Code: 1
-11/18/2016 12:40:26 PM CLI Service is starting
-11/18/2016 12:40:26 PM RPC service for CLI is starting...
-11/18/2016 12:40:28 PM Received CLI ['heartbeat']
-11/18/2016 12:40:28 PM 0 Sending heartbeat
-11/18/2016 12:40:28 PM heart beat received from: 0 ,sequence number: 2
-11/18/2016 12:40:29 PM Received CLI ['subscribe', '-t', 'hot', '-l', 'tosca.policies.Placement:properties:region:nova-1']
-11/18/2016 12:40:29 PM subscribing labels ['tosca.policies.Placement:properties:region:nova-1'] and templates ['hot']
-11/18/2016 12:40:29 PM Subscribe Response is received from: 0 ,sequence number: 3
-11/18/2016 12:40:30 PM Received CLI ['subscribe', '-t', 'dummy1,dummy2', '--top', 'OVERWRITE']
-11/18/2016 12:40:30 PM subscribing labels [] and templates ['dummy1', 'dummy2']
-11/18/2016 12:40:30 PM Subscribe Response is received from: 0 ,sequence number: 4
-11/18/2016 12:40:31 PM Received CLI ['subscribe', '-t', 'dummy1,dummy2', '--top', 'DELETE']
-11/18/2016 12:40:31 PM subscribing labels [] and templates ['dummy1', 'dummy2']
-11/18/2016 12:40:31 PM Subscribe Response is received from: 0 ,sequence number: 5
-11/18/2016 12:40:32 PM Received CLI ['subscribe', '-l', 'tosca.policies.Placement:properties:region:nova-2']
-11/18/2016 12:40:32 PM subscribing labels ['tosca.policies.Placement:properties:region:nova-2'] and templates []
-11/18/2016 12:40:32 PM Subscribe Response is received from: 0 ,sequence number: 6
-11/18/2016 12:40:33 PM Received CLI ['subscribe', '-l', 'tosca.policies.Placement:properties:region:nova-3', '--lop', 'OVERWRITE']
-11/18/2016 12:40:33 PM subscribing labels ['tosca.policies.Placement:properties:region:nova-3'] and templates []
-11/18/2016 12:40:33 PM Subscribe Response is received from: 0 ,sequence number: 7
-11/18/2016 12:40:34 PM Received CLI ['subscribe', '-l', 'tosca.policies.Placement:properties:region:nova-3', '--lop', 'DELETE']
-11/18/2016 12:40:34 PM subscribing labels ['tosca.policies.Placement:properties:region:nova-3'] and templates []
-11/18/2016 12:40:34 PM Subscribe Response is received from: 0 ,sequence number: 8
-11/18/2016 12:40:35 PM Received CLI ['publish', '-t', './tosca-templates/tosca_helloworld_nfv.yaml']
-11/18/2016 12:40:35 PM Publishing the template file: ./tosca-templates/tosca_helloworld_nfv.yaml
-11/18/2016 12:40:35 PM Publish Response is received from: 0 ,sequence number: 9 Status: 2
-11/18/2016 12:40:36 PM Received CLI ['subscribe', '-l', 'tosca.policies.Placement.Geolocation:properties:region:us-west-1']
-11/18/2016 12:40:36 PM subscribing labels ['tosca.policies.Placement.Geolocation:properties:region:us-west-1'] and templates []
-11/18/2016 12:40:36 PM Subscribe Response is received from: 0 ,sequence number: 10
-11/18/2016 12:40:37 PM 0 Received Template File
+12/01/2016 12:06:19 PM Domino Client Starting...
+12/01/2016 12:06:19 PM 1 Sending Registration
+12/01/2016 12:06:19 PM Registration Response: Response Code: 1
+12/01/2016 12:06:19 PM CLI Service is starting
+12/01/2016 12:06:19 PM RPC service for CLI is starting...
+12/01/2016 12:06:21 PM Received CLI ['heartbeat']
+12/01/2016 12:06:21 PM 12345678123456781234567812345678 Sending heartbeat
+12/01/2016 12:06:21 PM heart beat received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 2
+12/01/2016 12:06:22 PM Received CLI ['subscribe', '-t', 'hot', '-l', 'tosca.policies.Placement:properties:region:nova-1']
+12/01/2016 12:06:22 PM subscribing labels ['tosca.policies.Placement:properties:region:nova-1'] and templates ['hot']
+12/01/2016 12:06:22 PM Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 3
+12/01/2016 12:06:23 PM Received CLI ['subscribe', '-t', 'dummy1,dummy2', '--top', 'OVERWRITE']
+12/01/2016 12:06:23 PM subscribing labels [] and templates ['dummy1', 'dummy2']
+12/01/2016 12:06:23 PM Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 4
+12/01/2016 12:06:24 PM Received CLI ['subscribe', '-t', 'dummy1,dummy2', '--top', 'DELETE']
+12/01/2016 12:06:24 PM subscribing labels [] and templates ['dummy1', 'dummy2']
+12/01/2016 12:06:24 PM Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 5
+12/01/2016 12:06:25 PM Received CLI ['subscribe', '-l', 'tosca.policies.Placement:properties:region:nova-2']
+12/01/2016 12:06:25 PM subscribing labels ['tosca.policies.Placement:properties:region:nova-2'] and templates []
+12/01/2016 12:06:25 PM Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 6
+12/01/2016 12:06:26 PM Received CLI ['subscribe', '-l', 'tosca.policies.Placement:properties:region:nova-3', '--lop', 'OVERWRITE']
+12/01/2016 12:06:26 PM subscribing labels ['tosca.policies.Placement:properties:region:nova-3'] and templates []
+12/01/2016 12:06:26 PM Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 7
+12/01/2016 12:06:27 PM Received CLI ['subscribe', '-l', 'tosca.policies.Placement:properties:region:nova-3', '--lop', 'DELETE']
+12/01/2016 12:06:27 PM subscribing labels ['tosca.policies.Placement:properties:region:nova-3'] and templates []
+12/01/2016 12:06:27 PM Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 8
+12/01/2016 12:06:28 PM Received CLI ['publish', '-t', './tosca-templates/tosca_helloworld_nfv.yaml']
+12/01/2016 12:06:28 PM Publishing the template file: ./tosca-templates/tosca_helloworld_nfv.yaml
+12/01/2016 12:06:28 PM Publish Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 9 Status: 2
+12/01/2016 12:06:29 PM Received CLI ['subscribe', '-l', 'tosca.policies.Placement.Geolocation:properties:region:us-west-1']
+12/01/2016 12:06:29 PM subscribing labels ['tosca.policies.Placement.Geolocation:properties:region:us-west-1'] and templates []
+12/01/2016 12:06:29 PM Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 10
+12/01/2016 12:06:30 PM 12345678123456781234567812345678 Received Template File
 
-11/18/2016 12:40:25 PM Domino Server Starting...
-11/18/2016 12:40:26 PM Registration Request received for UDID 0 from IP: 172.16.42.3 port: 9091
-11/18/2016 12:40:27 PM Registration Request received for UDID 0 from IP: 172.16.42.3 port: 9092
-11/18/2016 12:40:28 PM heartbeat received from 0
-11/18/2016 12:40:29 PM Subscribe Request received from 0
-11/18/2016 12:40:29 PM APPENDING Labels...
-11/18/2016 12:40:29 PM Supported Template: set(['hot']) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-1'])
-11/18/2016 12:40:30 PM Subscribe Request received from 0
-11/18/2016 12:40:30 PM APPENDING Labels...
-11/18/2016 12:40:30 PM Supported Template: set(['dummy2', 'dummy1']) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-1'])
-11/18/2016 12:40:31 PM Subscribe Request received from 0
-11/18/2016 12:40:31 PM APPENDING Labels...
-11/18/2016 12:40:31 PM Supported Template: set([]) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-1'])
-11/18/2016 12:40:32 PM Subscribe Request received from 0
-11/18/2016 12:40:32 PM APPENDING Labels...
-11/18/2016 12:40:32 PM Supported Template: set([]) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-2', 'tosca.policies.Placement:properties:region:nova-1'])
-11/18/2016 12:40:33 PM Subscribe Request received from 0
-11/18/2016 12:40:33 PM OVERWRITING Labels...
-11/18/2016 12:40:33 PM Supported Template: set([]) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-3'])
-11/18/2016 12:40:34 PM Subscribe Request received from 0
-11/18/2016 12:40:34 PM DELETING Labels...
-11/18/2016 12:40:34 PM Supported Template: set([]) Supported Labels: set([])
-11/18/2016 12:40:35 PM Publish Request received from 0
-11/18/2016 12:40:35 PM ['tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0', '', 'description: Template for deploying a single server with predefined properties.', '', 'metadata:', '  template_name: TOSCA NFV Sample Template', '', 'policy_types:', '  tosca.policies.Placement.Geolocation:', '    description: Geolocation policy', '    derived_from: tosca.policies.Placement', '', 'topology_template:', '  node_templates:', '    VNF1:', '      type: tosca.nodes.nfv.VNF', '      properties:', '        id: vnf1', '        vendor: acmetelco', '        version: 1.0', '', '    VNF2:', '      type: tosca.nodes.nfv.VNF', '      properties:', '        id: vnf2', '        vendor: ericsson', '        version: 1.0', '', '    VNF3:', '      type: tosca.nodes.nfv.VNF', '      properties:', '        id: vnf3', '        vendor: huawei', '        version: 1.0', '', '  policies:', '    - rule1:', '        type: tosca.policies.Placement.Geolocation', '        targets: [ VNF1 ]', '        properties:', '          region: [ us-west-1 ]', '    - rule2:', '        type: tosca.policies.Placement.Geolocation', '        targets: [ VNF2, VNF3 ]', '        properties:', '          region: [ us-west-1 , us-west-2 ]']
-11/18/2016 12:40:35 PM Node Labels: {'VNF2': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1', 'tosca.policies.Placement.Geolocation:properties:region:us-west-2']), 'VNF3': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1', 'tosca.policies.Placement.Geolocation:properties:region:us-west-2']), 'VNF1': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1'])}
-11/18/2016 12:40:35 PM Site Maps: {'VNF2': set([]), 'VNF3': set([]), 'VNF1': set([])}
-11/18/2016 12:40:35 PM Selected Sites: {'VNF2': [], 'VNF3': [], 'VNF1': []}
-11/18/2016 12:40:35 PM Per domain file paths: {}
-11/18/2016 12:40:36 PM Subscribe Request received from 0
-11/18/2016 12:40:36 PM APPENDING Labels...
-11/18/2016 12:40:36 PM Supported Template: set([]) Supported Labels: set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1'])
-11/18/2016 12:40:37 PM Publish Request received from 1539113194358776833
-11/18/2016 12:40:37 PM ['tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0', '', 'description: Template for deploying a single server with predefined properties.', '', 'metadata:', '  template_name: TOSCA NFV Sample Template', '', 'policy_types:', '  tosca.policies.Placement.Geolocation:', '    description: Geolocation policy', '    derived_from: tosca.policies.Placement', '', 'topology_template:', '  node_templates:', '    VNF1:', '      type: tosca.nodes.nfv.VNF', '      properties:', '        id: vnf1', '        vendor: acmetelco', '        version: 1.0', '', '    VNF2:', '      type: tosca.nodes.nfv.VNF', '      properties:', '        id: vnf2', '        vendor: ericsson', '        version: 1.0', '', '    VNF3:', '      type: tosca.nodes.nfv.VNF', '      properties:', '        id: vnf3', '        vendor: huawei', '        version: 1.0', '', '  policies:', '    - rule1:', '        type: tosca.policies.Placement.Geolocation', '        targets: [ VNF1 ]', '        properties:', '          region: [ us-west-1 ]', '    - rule2:', '        type: tosca.policies.Placement.Geolocation', '        targets: [ VNF2, VNF3 ]', '        properties:', '          region: [ us-west-1 , us-west-2 ]']
-11/18/2016 12:40:37 PM ERRNO 17; ./toscafiles/ exists. Creating: ./toscafiles/template1.yaml
-11/18/2016 12:40:37 PM Node Labels: {'VNF2': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1', 'tosca.policies.Placement.Geolocation:properties:region:us-west-2']), 'VNF3': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1', 'tosca.policies.Placement.Geolocation:properties:region:us-west-2']), 'VNF1': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1'])}
-11/18/2016 12:40:37 PM Site Maps: {'VNF2': set([]), 'VNF3': set([]), 'VNF1': set([0])}
-11/18/2016 12:40:37 PM Selected Sites: {'VNF2': [], 'VNF3': [], 'VNF1': 0}
-11/18/2016 12:40:37 PM Per domain file paths: {0: './toscafiles/template_part0.yaml'}
-11/18/2016 12:40:37 PM Push Response received from 0
+12/01/2016 12:06:18 PM Domino Server Starting...
+12/01/2016 12:06:19 PM Registration Request received for UUID 12345678123456781234567812345678 from IP: 192.168.255.10 port: 9091
+12/01/2016 12:06:20 PM Registration Request received for UUID 12345678123456781234567812345678 from IP: 192.168.255.10 port: 9092
+12/01/2016 12:06:21 PM heartbeat received from 12345678123456781234567812345678
+12/01/2016 12:06:22 PM Subscribe Request received from 12345678123456781234567812345678
+12/01/2016 12:06:22 PM APPENDING Labels...
+12/01/2016 12:06:22 PM Supported Template: set(['hot']) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-1'])
+12/01/2016 12:06:23 PM Subscribe Request received from 12345678123456781234567812345678
+12/01/2016 12:06:23 PM APPENDING Labels...
+12/01/2016 12:06:23 PM Supported Template: set(['dummy2', 'dummy1']) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-1'])
+12/01/2016 12:06:24 PM Subscribe Request received from 12345678123456781234567812345678
+12/01/2016 12:06:24 PM APPENDING Labels...
+12/01/2016 12:06:24 PM Supported Template: set([]) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-1'])
+12/01/2016 12:06:25 PM Subscribe Request received from 12345678123456781234567812345678
+12/01/2016 12:06:25 PM APPENDING Labels...
+12/01/2016 12:06:25 PM Supported Template: set([]) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-2', 'tosca.policies.Placement:properties:region:nova-1'])
+12/01/2016 12:06:26 PM Subscribe Request received from 12345678123456781234567812345678
+12/01/2016 12:06:26 PM OVERWRITING Labels...
+12/01/2016 12:06:26 PM Supported Template: set([]) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-3'])
+12/01/2016 12:06:27 PM Subscribe Request received from 12345678123456781234567812345678
+12/01/2016 12:06:27 PM DELETING Labels...
+12/01/2016 12:06:27 PM Supported Template: set([]) Supported Labels: set([])
+12/01/2016 12:06:28 PM Publish Request received from 12345678123456781234567812345678
+12/01/2016 12:06:28 PM ['tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0', '', 'description: Template for deploying a single server with predefined properties.', '', 'metadata:', '  template_name: TOSCA NFV Sample Template', '', 'policy_types:', '  tosca.policies.Placement.Geolocation:', '    description: Geolocation policy', '    derived_from: tosca.policies.Placement', '', 'topology_template:', '  node_templates:', '    VNF1:', '      type: tosca.nodes.nfv.VNF', '      properties:', '        id: vnf1', '        vendor: acmetelco', '        version: 1.0', '', '    VNF2:', '      type: tosca.nodes.nfv.VNF', '      properties:', '        id: vnf2', '        vendor: ericsson', '        version: 1.0', '', '    VNF3:', '      type: tosca.nodes.nfv.VNF', '      properties:', '        id: vnf3', '        vendor: huawei', '        version: 1.0', '', '  policies:', '    - rule1:', '        type: tosca.policies.Placement.Geolocation', '        targets: [ VNF1 ]', '        properties:', '          region: [ us-west-1 ]', '    - rule2:', '        type: tosca.policies.Placement.Geolocation', '        targets: [ VNF2, VNF3 ]', '        properties:', '          region: [ us-west-1 , us-west-2 ]']
+12/01/2016 12:06:28 PM Node Labels: {'VNF2': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1', 'tosca.policies.Placement.Geolocation:properties:region:us-west-2']), 'VNF3': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1', 'tosca.policies.Placement.Geolocation:properties:region:us-west-2']), 'VNF1': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1'])}
+12/01/2016 12:06:28 PM Site Maps: {'VNF2': set([]), 'VNF3': set([]), 'VNF1': set([])}
+12/01/2016 12:06:28 PM Selected Sites: {'VNF2': [], 'VNF3': [], 'VNF1': []}
+12/01/2016 12:06:28 PM Per domain file paths: {}
+12/01/2016 12:06:29 PM Subscribe Request received from 12345678123456781234567812345678
+12/01/2016 12:06:29 PM APPENDING Labels...
+12/01/2016 12:06:29 PM Supported Template: set([]) Supported Labels: set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1'])
+12/01/2016 12:06:30 PM Publish Request received from 35bf10e4d2524653bf88d6cf0a184f1b
+12/01/2016 12:06:30 PM ['tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0', '', 'description: Template for deploying a single server with predefined properties.', '', 'metadata:', '  template_name: TOSCA NFV Sample Template', '', 'policy_types:', '  tosca.policies.Placement.Geolocation:', '    description: Geolocation policy', '    derived_from: tosca.policies.Placement', '', 'topology_template:', '  node_templates:', '    VNF1:', '      type: tosca.nodes.nfv.VNF', '      properties:', '        id: vnf1', '        vendor: acmetelco', '        version: 1.0', '', '    VNF2:', '      type: tosca.nodes.nfv.VNF', '      properties:', '        id: vnf2', '        vendor: ericsson', '        version: 1.0', '', '    VNF3:', '      type: tosca.nodes.nfv.VNF', '      properties:', '        id: vnf3', '        vendor: huawei', '        version: 1.0', '', '  policies:', '    - rule1:', '        type: tosca.policies.Placement.Geolocation', '        targets: [ VNF1 ]', '        properties:', '          region: [ us-west-1 ]', '    - rule2:', '        type: tosca.policies.Placement.Geolocation', '        targets: [ VNF2, VNF3 ]', '        properties:', '          region: [ us-west-1 , us-west-2 ]']
+12/01/2016 12:06:30 PM ERRNO 17; ./toscafiles/ exists. Creating: ./toscafiles/template1.yaml
+12/01/2016 12:06:30 PM Node Labels: {'VNF2': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1', 'tosca.policies.Placement.Geolocation:properties:region:us-west-2']), 'VNF3': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1', 'tosca.policies.Placement.Geolocation:properties:region:us-west-2']), 'VNF1': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1'])}
+12/01/2016 12:06:30 PM Site Maps: {'VNF2': set([]), 'VNF3': set([]), 'VNF1': set(['12345678123456781234567812345678'])}
+12/01/2016 12:06:30 PM Selected Sites: {'VNF2': [], 'VNF3': [], 'VNF1': '12345678123456781234567812345678'}
+12/01/2016 12:06:30 PM Per domain file paths: {'12345678123456781234567812345678': './toscafiles/template_part12345678123456781234567812345678.yaml'}
+12/01/2016 12:06:30 PM Push Response received from 12345678123456781234567812345678
 
 CLI Service is starting
 RPC service for CLI is starting...
 Received CLI ['heartbeat']
-0 Sending heartbeat
-heart beat received from: 0 ,sequence number: 2
+12345678123456781234567812345678 Sending heartbeat
+heart beat received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 2
 Received CLI ['subscribe', '-t', 'hot', '-l', 'tosca.policies.Placement:properties:region:nova-1']
 subscribing labels ['tosca.policies.Placement:properties:region:nova-1'] and templates ['hot']
-Subscribe Response is received from: 0 ,sequence number: 3
+Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 3
 Received CLI ['subscribe', '-t', 'dummy1,dummy2', '--top', 'OVERWRITE']
 subscribing labels [] and templates ['dummy1', 'dummy2']
-Subscribe Response is received from: 0 ,sequence number: 4
+Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 4
 Received CLI ['subscribe', '-t', 'dummy1,dummy2', '--top', 'DELETE']
 subscribing labels [] and templates ['dummy1', 'dummy2']
-Subscribe Response is received from: 0 ,sequence number: 5
+Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 5
 Received CLI ['subscribe', '-l', 'tosca.policies.Placement:properties:region:nova-2']
 subscribing labels ['tosca.policies.Placement:properties:region:nova-2'] and templates []
-Subscribe Response is received from: 0 ,sequence number: 6
+Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 6
 Received CLI ['subscribe', '-l', 'tosca.policies.Placement:properties:region:nova-3', '--lop', 'OVERWRITE']
 subscribing labels ['tosca.policies.Placement:properties:region:nova-3'] and templates []
-Subscribe Response is received from: 0 ,sequence number: 7
+Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 7
 Received CLI ['subscribe', '-l', 'tosca.policies.Placement:properties:region:nova-3', '--lop', 'DELETE']
 subscribing labels ['tosca.policies.Placement:properties:region:nova-3'] and templates []
-Subscribe Response is received from: 0 ,sequence number: 8
+Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 8
 Received CLI ['publish', '-t', './tosca-templates/tosca_helloworld_nfv.yaml']
 Publishing the template file: ./tosca-templates/tosca_helloworld_nfv.yaml
-Publish Response is received from: 0 ,sequence number: 9 Status: 2
+Publish Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 9 Status: 2
 Received CLI ['subscribe', '-l', 'tosca.policies.Placement.Geolocation:properties:region:us-west-1']
 subscribing labels ['tosca.policies.Placement.Geolocation:properties:region:us-west-1'] and templates []
-Subscribe Response is received from: 0 ,sequence number: 10
-0 Received Template File
+Subscribe Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 10
+12345678123456781234567812345678 Received Template File
 
 RPC service for CLI is starting...
 Received CLI ['publish', '-t', './tosca-templates/tosca_helloworld_nfv.yaml']
 Publishing the template file: ./tosca-templates/tosca_helloworld_nfv.yaml
-Publish Response is received from: 0 ,sequence number: 11 Status: 1
+Publish Response is received from: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,sequence number: 11 Status: 1