]> rtime.felk.cvut.cz Git - frescor/frsh-forb.git/commitdiff
fcb: redistribute_spare_capacity: added_change vreses function
authorTuka Martin <tukamart@fel.cvut.cz>
Wed, 2 May 2012 21:15:28 +0000 (23:15 +0200)
committerTuka Martin <tukamart@fel.cvut.cz>
Wed, 2 May 2012 21:15:28 +0000 (23:15 +0200)
src/frsh/fres/cbroker/fcb.c

index 2e92ee3c0dd7a6b6589dfaabe037cb9adc25f855..c08b278e177865c7945eb5d377e16f580c76cc3c 100644 (file)
@@ -1035,7 +1035,9 @@ void redistribute_spare_capacity(fres_contract_broker obj,
        const frsh_resource_type_t restype_to_find = restype;
        struct fcb_contract * fc;
        struct res_key * rk;
-       
+
+       int ret;
+       fres_contract_ptr_seq *schedulable_contracts;   
 
        //TODO: delete debug outputs
 /*     int num_of_resources = 0;
@@ -1088,7 +1090,45 @@ void redistribute_spare_capacity(fres_contract_broker obj,
 /*     CORBA_sequence_set_release(ids, CORBA_TRUE); */
 /*     *ids_out = ids;         /\* ids is freed by FORB *\/ */
 
-       rebalance_spare_capacity_and_reserve(resource);
+       ret = rebalance_spare_capacity_and_reserve(resource);
+       if (ret) {
+               if (ret == FRSH_ERR_CONTRACT_REJECTED) {
+                       ul_logmsg("Contract(s) was/were rejected\n");
+               } else {
+                       char msg[100];
+                       fres_strerror(ret, msg, sizeof(msg));
+                       ul_logerr("Reservation error: %s\n", msg);
+               }
+               goto error;
+       }
+
+       /* Commit contracts */
+       ret = commit_resource(resource, &schedulable_contracts);
+       if (ret) {
+               ul_logmsg("commit_resource bad return value: %d\n", ret);       
+               goto error;
+       }
+       
+       //ret = fcb_remember_contracts(fcb, fcb_contracts, num);
+       //if (ret) {
+       //      ul_logmsg("fcb_remember_contracts: %d\n", ret); 
+       //      goto error;
+       //}
+       
+       ret = fcb_remember_schedulable_contracts(fcb, schedulable_contracts);
+       if (ret) {
+               ul_logmsg("fcb_remember_schedulable_contracts bad return value: %d\n", ret);    
+               goto error;
+       }
+
+       ret = change_vreses(fcb, schedulable_contracts);
+       if (ret) {
+               ul_logmsg("change_vreses bad return value: %d\n", ret); 
+               goto error;
+       }
+error:
+       return;
+
 }
 
 CORBA_long register_resource(fres_contract_broker obj,