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
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))
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))