def _handle_isNodeAuthorized(self, url):
   """CNReplication.isNodeAuthorized(session, targetNodeSubject, pid) → boolean
   GET /replicaAuthorizations/{pid}?targetNodeSubject={targetNodeSubject}
   """
   m = re.match(r'/v1/replicaAuthorizations/(.*)', url.path)
   if not m:
     return False
   pid = m.group(1)
   query = urlparse.parse_qs(url.query)
   target_node_subject = query['targetNodeSubject'][0]
   self._logger.debug(
     'Handling call: isNodeAuthorized() pid="{}", dst_node="{}")'
     .format(pid, target_node_subject)
   )
   if pid == self.server.src_existing_pid_approve:
     self._generate_response_success()
     self._record_mn_call(
       'isNodeAuthorized_approved', pid, target_node_subject
     )
   elif pid == self.server.src_existing_pid_deny:
     self._generate_response_NotAuthorized()
     self._record_mn_call(
       'isNodeAuthorized_rejected', pid, target_node_subject
     )
   else:
     raise replication_error.ReplicationTesterError(
       'Invalid Test PID: {0}'.format(pid)
     )
   return True
Example #2
0
 def do_PUT(self):
     self._logger.debug('Received HTTP PUT: {}'.format(self.path))
     url = urlparse.urlparse(urllib.unquote(self.path))
     if self._handle_setReplicationStatus(url):
         return
     else:
         raise replication_error.ReplicationTesterError(
             'Unknown REST URL: {}'.format(self.path))
Example #3
0
 def do_GET(self):
     self._logger.debug('Received HTTP GET: {}'.format(self.path))
     url = urlparse.urlparse(urllib.unquote(self.path))
     if self._handle_isNodeAuthorized(url):
         return
     elif self._handle_getReplica(url):
         return
     elif self._handle_listNodes(url):
         return
     elif self._handle_getSystemMetadata(url):
         return
     else:
         raise replication_error.ReplicationTesterError(
             'Unknown REST URL: {}'.format(self.path))