For now I have removed cpu, ram and cpu speed fields from vm_instance table.

On 18-Dec-2013, at 6:22 AM, Prachi Damle <prachi.da...@citrix.com> wrote:

> Koushik,
> 
> My comments inline.
> 
> Prachi
> -----Original Message-----
> From: Koushik Das 
> Sent: Tuesday, December 17, 2013 4:06 AM
> To: Prachi Damle; <dev@cloudstack.apache.org>
> Subject: Re: VMEntityVO and VMInstanceVO
> 
> Thanks Prachi.
> I was looking at CLOUDSTACK-5458 when I came across this.
> 
> I don't quite follow the logic of multiple VOs based on a subset of fields. 
> If multiple VOs are targeting a subset of fields for the same row in the db. 
> then that essentially means that the fields in each subset must be 
> independent of each other. If there is any dependency between the 
> subsets/views than managing them will be very complex. One service can update 
> its subset of fields and make the other fields inconsistent (the specific bug 
> I have mentioned is an example). And if the subsets must be independent then 
> isn't it simpler to have separate tables?
> 
>>> Ideal solution is to have independent tables. But this was the intermediate 
>>> solution we thought of to achieve the separation of services while 
>>> affecting minimal functionality and then separate out the DB's too in a 
>>> later phase.
> 
> Also why the VMEntityVO has fields like cpu, speed, memory when these are 
> already part of service offering?
>>> Orchestration layer does not have any notion of service offering - offering 
>>> is a pure business logic of the API layer.  So the view of the 
>>> orchestration layer is flat and carries all  the parameters it needs to 
>>> talk to the backend inorder to get the VM running. 
>>> Hence these fields are carried into the VMEntityVO directly.
>>> I looked at the bug and talked to Alex as well. Currently it seems correct 
>>> to just remove these extra fields from the vm_instance table and the VO for 
>>> now until we resume the refactoring further in this direction. I think 
>>> these fields are not being used anywhere yet.
> 
> -Koushik
> 
> On 17-Dec-2013, at 3:18 AM, Prachi Damle <prachi.da...@citrix.com> wrote:
> 
>> Koushik,
>> 
>> This is part of the cloud-engine / orchestration layer refactoring started 
>> in 4.1. The final idea is to separate out the cloudstack API layer and  the 
>> orchestration logic into different services. Each service will have its own 
>> set of VO's as per the view the service works with. Thus the VO will 
>> populate/retrieve only those fields that are visible/essential for that 
>> service functionality. Hence you see some difference in the two VO's you 
>> mention.
>> The VM deployment API layer works with VMInstanceVO ; while the 
>> orchestration flow works with VMEntityVO.
>> 
>> There are many other entities for which this has been done so far, Alex has 
>> put everything under cloud-engine-schema recently where you can find some 
>> more of such examples.
>> 
>> Prachi
>> 
>> -----Original Message-----
>> From: Koushik Das 
>> Sent: Sunday, December 15, 2013 9:50 PM
>> To: <dev@cloudstack.apache.org>
>> Cc: Prachi Damle
>> Subject: Re: VMEntityVO and VMInstanceVO
>> 
>> Prachi, From the history I see that you added VMEntityVO. Any specific 
>> reason for having both?
>> 
>> On 12-Dec-2013, at 2:36 PM, Koushik Das <koushik....@citrix.com> wrote:
>> 
>>> I see that both the VOs uses the same vm_instance table. What is the need 
>>> for having 2 VOs for the same table? Should one be removed?
>>> Also VMEntityVO I see a field called "speed" which is not there in 
>>> VMInstanceVO. Why this discrepancy?
>>> 
>>> Thanks,
>>> Koushik
>> 
> 

Reply via email to