Homing Policies and corresponding information required from MultiCloud for Homing in R2:









Additional Discussion:

One form of check_vim_capacity API provided by MultiCloud


{
"vCPU": int, // number of cores
"Memory": float, // size of memory, GB
"Storage": int, //GB
"VIMs": array of vim_id // VIM IDs that OOF wish to check with
}


{
"VIMs": array of vim_id // subset of requested VIM IDs satisfy with this resource requirement
}


Another response format of check_vim_capacity API

Step 0: This is pre-condition. OOF is doing global optimization with many constraints, and worked out a shortlist of 3 VIMs { cloud-region-id1, cloud-region-id2, cloud-region-id3 }. Now OOF needs to check those VIMs' capacity.

Step 1: OOF calls MultiVIM's API to check those 3 VIMs' capacity information.

Step 2: MultiVIM checks those 3 VIMs' capacity information (internal implementation of MultiVIM)

Step 3: MultiVIM returns 2 pieces of information of each VIM to OOF:
1.    One piece of information is { Yes | No }, which indicates whether this VIM has sufficient capacity ("Yes") or not ("No").
1.    If there is no knowledge (either directly or indirectly) of "Yes" or "No", empty data will be returned
2.    The other piece of information is the actual capacity data of the VIM.
1.    If the actual capacity data is not available, empty data will be returned

Step 3: OOF gets the capacity information of those 3 VIMs, and continue its work.


Request: 

check_vim_capacity({“vcpu”: int, “mem”: int, “vims”: [cloud-region-id1, cloud-region-id2, cloud-region-id3]}) 

Response: 

{

            cloud-region-1: 

                        {

                                     has_capacity: Yes, 

                                     capacities: { 

                                                “vcpu”: 20, 

                                                “mem”: 100

                                     }

                        }

            cloud-region-2: 

                        {

                                    has_capacity: Yes, 

                                     capacities: { 

                                     }

                        }

            cloud-region-3: 

                        {

                                    has_capacity: No, 

                                     capacities: { 

                                                “vcpu”: 0, 

                                                “mem”: 10

                                     }

                        }

}

Here, cloud-region-1 has capacity and is willing to give precise capacity information, cloud-region-2 has capacity, but is unwilling to provide exact numbers, while cloud-region-3 doesn’t have capacity but is willing to provide available capacity information. Therefore, OOF will now be able to recommend placement for both cloud-region-1 and cloud-region-2, and will be able to cache cloud-region-1 and cloud-region-3 capacities for making better placement decisions.



R3 and beyond:


Open Questions:



Reservations (R3 (question) + ):

Open Questions: