def relinquish(self, *, reservation: ABCClientReservation):
     self.validate(reservation=reservation)
     self.do_relinquish(actor=reservation.get_actor(),
                        proxy=reservation.get_broker(),
                        reservation=reservation,
                        callback=reservation.get_client_callback_proxy(),
                        caller=reservation.get_slice().get_owner())
 def extend_ticket(self, *, reservation: ABCClientReservation):
     self.validate(reservation=reservation, check_requested=True)
     self.do_extend_ticket(actor=reservation.get_actor(),
                           proxy=reservation.get_broker(),
                           reservation=reservation,
                           callback=reservation.get_client_callback_proxy(),
                           caller=reservation.get_slice().get_owner())
Пример #3
0
    def revisit_client(self, *, reservation: ABCClientReservation):
        """
        Recovers a source reservation.

        @param reservation reservation to recover

        @throws Exception in case of error
        """
        if (reservation.get_state() == ReservationStates.Nascent and
            reservation.get_pending_state() == ReservationPendingStates.None_) or \
            (reservation.get_state() == ReservationStates.Ticketed and
             reservation.get_pending_state() == ReservationPendingStates.ExtendingTicket):
            self.calendar.add_pending(reservation=reservation)
Пример #4
0
    def pass_reservation(self, *, reservation: ABCClientReservation,
                         auth: AuthToken) -> ABCBrokerReservation:
        slice_obj = reservation.get_slice().clone_request()

        rset = self.abstract_clone_broker(
            rset=reservation.get_requested_resources())

        term = reservation.get_requested_term().clone()

        broker_reservation = BrokerReservationFactory.create(
            rid=reservation.get_reservation_id(),
            resources=rset,
            term=term,
            slice_obj=slice_obj)
        broker_reservation.set_sequence_in(
            sequence=reservation.get_ticket_sequence_out())
        broker_reservation.set_owner(owner=self.get_identity())

        return broker_reservation
Пример #5
0
    def remove(self, *, source: ABCClientReservation):
        """
        Removes the inventory derived from the specified source.
        @param source source reservation
        @return true if the inventory was update, false otherwise
        """
        rtype = source.get_type()

        if rtype in self.map:
            inv = self.map[rtype]
            if inv.source == source:
                self.map.pop(rtype)
                return True

        return False
    def do_ticket(self, *, actor: ABCActorMixin, proxy: ABCBrokerProxy,
                  reservation: ABCClientReservation,
                  callback: ABCClientCallbackProxy, caller: AuthToken):
        proxy.get_logger().info("Outbound ticket request from <{}>: {}".format(
            caller.get_name(), reservation))

        state = proxy.prepare_ticket(reservation=reservation,
                                     callback=callback,
                                     caller=caller)
        state.set_caller(caller=caller)
        state.set_type(rtype=RPCRequestType.Ticket)
        rpc = RPCRequest(request=state,
                         actor=actor,
                         proxy=proxy,
                         reservation=reservation,
                         sequence=reservation.get_ticket_sequence_out())
        self.enqueue(rpc=rpc)
Пример #7
0
 def get_renew(self, *, reservation: ABCClientReservation) -> int:
     new_start_cycle = self.actor.get_actor_clock().cycle(
         when=reservation.get_term().get_end_time()) + 1
     return new_start_cycle - self.ADVANCE_TIME - self.CLOCK_SKEW
 def get_renew(self, reservation: ABCClientReservation) -> int:
     return self.clock.cycle(reservation.get_term().get_new_start_time())
Пример #9
0
 def demand(self, *, reservation: ABCClientReservation):
     if not reservation.is_nascent():
         self.logger.error("demand reservation is not fresh")
     else:
         self.calendar.add_demand(reservation=reservation)