def create_reservation( self, project_id: str, processor_id: str, start: datetime.datetime, end: datetime.datetime, whitelisted_users: Optional[List[str]] = None, ): """Creates a quantum reservation and returns the created object. Args: project_id: A project_id of the parent Google Cloud Project. processor_id: The processor unique identifier. reservation_id: Unique ID of the reservation in the parent project, or None if the engine should generate an id start: the starting time of the reservation as a datetime object end: the ending time of the reservation as a datetime object whitelisted_users: a list of emails that can use the reservation. """ parent = self._processor_name_from_ids(project_id, processor_id) reservation = qtypes.QuantumReservation( name='', start_time=Timestamp(seconds=int(start.timestamp())), end_time=Timestamp(seconds=int(end.timestamp())), ) if whitelisted_users: reservation.whitelisted_users.extend(whitelisted_users) return self._make_request( lambda: self.grpc_client.create_quantum_reservation( parent=parent, quantum_reservation=reservation))
def update_reservation( self, project_id: str, processor_id: str, reservation_id: str, start: Optional[datetime.datetime] = None, end: Optional[datetime.datetime] = None, whitelisted_users: Optional[List[str]] = None, ): """Updates a quantum reservation. This will update a quantum reservation's starting time, ending time, and list of whitelisted users. If any field is not filled, it will not be updated. Args: project_id: A project_id of the parent Google Cloud Project. processor_id: The processor unique identifier. reservation_id: Unique ID of the reservation in the parent project, start: the new starting time of the reservation as a datetime object end: the new ending time of the reservation as a datetime object whitelisted_users: a list of emails that can use the reservation. The empty list, [], will clear the whitelisted_users while None will leave the value unchanged. """ name = (self._reservation_name_from_ids(project_id, processor_id, reservation_id) if reservation_id else '') reservation = qtypes.QuantumReservation(name=name, ) paths = [] if start: reservation.start_time.seconds = int(start.timestamp()) paths.append('start_time') if end: reservation.end_time.seconds = int(end.timestamp()) paths.append('end_time') if whitelisted_users != None: reservation.whitelisted_users.extend(whitelisted_users) paths.append('whitelisted_users') return self._make_request( lambda: self.grpc_client.update_quantum_reservation( name=name, quantum_reservation=reservation, update_mask=qtypes.field_mask_pb2.FieldMask(paths=paths), ))