Re: [Engine-devel] Disk BE very small refactoring

2013-05-30 Thread Omer Frenkel


- Original Message -
 From: Vered Volansky ve...@redhat.com
 To: Maor Lipchuk mlipc...@redhat.com, Yair Zaslavsky 
 yzasl...@redhat.com, Omer Frenkel
 ofren...@redhat.com, Mike Kolesnik mkole...@redhat.com, Allon 
 Mureinik amure...@redhat.com, Daniel Erez
 de...@redhat.com
 Cc: engine-devel@ovirt.org
 Sent: Tuesday, May 28, 2013 8:40:38 PM
 Subject: Re: [Engine-devel] Disk BE very small refactoring
 
 I had a problem, didn't see all the replies till now.
 
 I'll add some more info as to why we want to do this like we do.
 It all started from adding the readOnly property to disks. It should have
 been handled like plugged is handled, yet plugged is a hack, and if we don't
 change that now, we'll only keep on adding unreasonable hacks.
 

please explain why you think plugged is a hack? what is wrong with it?

 So from the start -
 Disk currently:
 - Sometimes represents a disk in a vm context and sometimes not.
 - Holds plugged property, which is only relevant when a disk is in a vm
 context, which already suggests this is not the natural place for it.
 - Also holds bootable and interface, which cause limitations of use, but are
 not so obviously related to the relationship between Disk and Vm as plugged.
 - Can be shared between several vm's, to some plugged and to some not
 plugged.
 - Will soon be optionally RO in one VM and RW in another, which is exactly
 the same as plugged, and therefore plugged issue should be fixed first.
 
 Every column in that shows a disk in the UI receives a Disk entity, and show
 its contents, while plugged/unplugged is ignored when not in a VM context.
 The way things are now, using a VmDevice in the where we need it to show plug
 status, we'll also have to use it in all other columns, which is irrelevant
 and just totally not related.
 So using VmDevice in UI is a no go.
 
 The UI is the main limitation forcing us to use something that extends Disk,
 and what I described below is the easiest thing to implement in the time
 restrictions we have without changing the entire system.
 
 I think this answers all the questions not already answered by others.
 Regarding Maor suggestion - might be a good idea, but not in this scope or
 time-frame.
 
 If there is any other/unanswered issue or objection to the design change
 please share.
 
 I appreciate your inputs,
 Vered
 

sorry i didnt understand why the current disk object isnt good enough,
you get a disk, some of its properties are valid only in some situations.
i think its easier to use instead of couple of different objects representing 
the same entity in different situations.

 
 - Original Message -
  From: Maor Lipchuk mlipc...@redhat.com
  To: Vered Volansky ve...@redhat.com
  Cc: engine-devel@ovirt.org
  Sent: Tuesday, May 28, 2013 1:49:46 PM
  Subject: Re: [Engine-devel] Disk BE very small refactoring
  
  I think the main problem is that we abuse the business entity to act as
  an O/R mapping class to the DB and also to be used as a business entity
  for presentation purposes.
  
  I understand how Yair thought isPlugged could be fetched from vmDevice,
  this is a confusing design, and it is just one example and more to come.
  
  I suggest that if we already thinking of changing the class hierarchy,
  we can start by implementing a package for presentation classes for
  transient classes such as this instead enforcing complex hierarchy.
  
  The query class will fetch all the data from the DB and initialized the
  transient class and send it to the client.
  I think it could be a good start and will solve many issues we might
  encounter in the future.
  
  Regards,
  Maor
  
  On 05/28/2013 11:24 AM, Omer Frenkel wrote:
   
   
   - Original Message -
   From: Yair Zaslavsky yzasl...@redhat.com
   To: Vered Volansky ve...@redhat.com
   Cc: engine-devel@ovirt.org
   Sent: Monday, May 27, 2013 6:22:58 PM
   Subject: Re: [Engine-devel] Disk BE very small refactoring
  
   Vered,
   VmDevice has isPlugged field,
   Why not have somehow in your inheritence (either Disk or a subclass) a
   field
   : VmDevice device
   
   disk id is the device id, no need for field to represent the relation.
   the combination of disk-id and a specific entity (vm/template) will get
   you
   the other info
   
   and have isPlugged method called device.isPlugged() ?
  
   Then you can also add the readOnly property which is not represented at
   VmDevice.
  
  
   Does this sound logical to you?
  
   - Original Message -
   From: Vered Volansky ve...@redhat.com
   To: engine-devel@ovirt.org
   Sent: Monday, May 27, 2013 6:18:58 PM
   Subject: [Engine-devel] Disk BE very small refactoring
  
   Hi All,
  
   Please express your opinion if you have any -
  
   Currently Disk BE has a plugged property, which should be a property of
   the
   relationship between vm(or template) and a disk.
   I plan to remove this property from the Disk entity, and add new
   entity,
   called DeviceDisk.
   This should 

Re: [Engine-devel] oVirt Scheduler API Design

2013-05-30 Thread Doron Fediuck
- Original Message -
 From: Gilad Chaplik gchap...@redhat.com
 To: engine-devel engine-devel@ovirt.org
 Sent: Tuesday, May 28, 2013 5:34:11 PM
 Subject: [Engine-devel] oVirt Scheduler API Design
 
 Hi all,
 
 Attached links for oVirt Scheduler API design wiki page.
 
 High level overview: http://www.ovirt.org/Features/oVirtScheduler
 Detailed design: http://www.ovirt.org/Features/oVirtSchedulerAPI
 
 You are more than welcome to share you thoughts.
 
 Thanks,
 Gilad.

Adding to users' list for all those asking about the new oVirt
scheduling features. Feel free to review and feedback.
___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


[Engine-devel] setup ovirt-engine on graphic or web mode

2013-05-30 Thread Edgar
Hi,All
so far as I know, we use engine-setup command to setup ovirt engine.
engine-setup coded in python which run in linux shell.it is not convenience 
to some people that not be familiar with Linux OS.
 
Currently,Does oVirt project has some tools or method that support to setup 
engine on graphic or web mode?
If no, Is there any plan or schedule to support this feature?
 
Thanks and Best Regards.
 ___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


Re: [Engine-devel] Disk BE very small refactoring

2013-05-30 Thread Eli Mesika


- Original Message -
 From: Omer Frenkel ofren...@redhat.com
 To: Vered Volansky ve...@redhat.com
 Cc: engine-devel@ovirt.org
 Sent: Thursday, May 30, 2013 11:29:40 AM
 Subject: Re: [Engine-devel] Disk BE very small refactoring
 
 
 
 - Original Message -
  From: Vered Volansky ve...@redhat.com
  To: Maor Lipchuk mlipc...@redhat.com, Yair Zaslavsky
  yzasl...@redhat.com, Omer Frenkel
  ofren...@redhat.com, Mike Kolesnik mkole...@redhat.com, Allon
  Mureinik amure...@redhat.com, Daniel Erez
  de...@redhat.com
  Cc: engine-devel@ovirt.org
  Sent: Tuesday, May 28, 2013 8:40:38 PM
  Subject: Re: [Engine-devel] Disk BE very small refactoring
  
  I had a problem, didn't see all the replies till now.
  
  I'll add some more info as to why we want to do this like we do.
  It all started from adding the readOnly property to disks. It should have
  been handled like plugged is handled, yet plugged is a hack, and if we
  don't
  change that now, we'll only keep on adding unreasonable hacks.
  
 
 please explain why you think plugged is a hack? what is wrong with it?

You have is_readonly and is_plugged in the device level , this is far from 
being a hack and managed in the correct place since both may apply to multiple 
device types (disk, nics )

 
  So from the start -
  Disk currently:
  - Sometimes represents a disk in a vm context and sometimes not.
  - Holds plugged property, which is only relevant when a disk is in a vm
  context, which already suggests this is not the natural place for it.
  - Also holds bootable and interface, which cause limitations of use, but
  are
  not so obviously related to the relationship between Disk and Vm as
  plugged.
  - Can be shared between several vm's, to some plugged and to some not
  plugged.
  - Will soon be optionally RO in one VM and RW in another, which is exactly
  the same as plugged, and therefore plugged issue should be fixed first.
  
  Every column in that shows a disk in the UI receives a Disk entity, and
  show
  its contents, while plugged/unplugged is ignored when not in a VM context.
  The way things are now, using a VmDevice in the where we need it to show
  plug
  status, we'll also have to use it in all other columns, which is irrelevant
  and just totally not related.
  So using VmDevice in UI is a no go.
  
  The UI is the main limitation forcing us to use something that extends
  Disk,
  and what I described below is the easiest thing to implement in the time
  restrictions we have without changing the entire system.
  
  I think this answers all the questions not already answered by others.
  Regarding Maor suggestion - might be a good idea, but not in this scope or
  time-frame.
  
  If there is any other/unanswered issue or objection to the design change
  please share.
  
  I appreciate your inputs,
  Vered
  
 
 sorry i didnt understand why the current disk object isnt good enough,
 you get a disk, some of its properties are valid only in some situations.
 i think its easier to use instead of couple of different objects representing
 the same entity in different situations.

I totally agree with Omer, please specify what is impossible or hard to achieve 
with the current schema 

 
  
  - Original Message -
   From: Maor Lipchuk mlipc...@redhat.com
   To: Vered Volansky ve...@redhat.com
   Cc: engine-devel@ovirt.org
   Sent: Tuesday, May 28, 2013 1:49:46 PM
   Subject: Re: [Engine-devel] Disk BE very small refactoring
   
   I think the main problem is that we abuse the business entity to act as
   an O/R mapping class to the DB and also to be used as a business entity
   for presentation purposes.
   
   I understand how Yair thought isPlugged could be fetched from vmDevice,
   this is a confusing design, and it is just one example and more to come.
   
   I suggest that if we already thinking of changing the class hierarchy,
   we can start by implementing a package for presentation classes for
   transient classes such as this instead enforcing complex hierarchy.
   
   The query class will fetch all the data from the DB and initialized the
   transient class and send it to the client.
   I think it could be a good start and will solve many issues we might
   encounter in the future.
   
   Regards,
   Maor
   
   On 05/28/2013 11:24 AM, Omer Frenkel wrote:


- Original Message -
From: Yair Zaslavsky yzasl...@redhat.com
To: Vered Volansky ve...@redhat.com
Cc: engine-devel@ovirt.org
Sent: Monday, May 27, 2013 6:22:58 PM
Subject: Re: [Engine-devel] Disk BE very small refactoring
   
Vered,
VmDevice has isPlugged field,
Why not have somehow in your inheritence (either Disk or a subclass) a
field
: VmDevice device

disk id is the device id, no need for field to represent the relation.
the combination of disk-id and a specific entity (vm/template) will get
you
the other info

and have isPlugged method called device.isPlugged() ?
  

Re: [Engine-devel] [vdsm] Proposal VDSM = Engine Data Statistics Retrieval Optimization

2013-05-30 Thread Vinzenz Feenstra

Hi,

I finally have an update for the proposal ready, after some thinking and 
throwing some ideas around with colleagues we came to the conclusion 
that the best approach might be as followed (without having dynamic 
return values)


I have set up some test engine with 'FakeVDSM' and I am tracking the 
data sent. The system has 250 hosts and about 1 VMs running. I have 
captured 1.3 GiB TCP data within about 20 minutes only from the 
communication between the engine and the fake VDSM host. In a frame of 
23 minutes I have captured 13.560 getAllVMStats and getAllVdsStats 
calls, and 67827 calls to list.


getAllVmStats replies have produced in that time about 510MiB of data 
transmitted to the engine. This proposal below would reduce the overall 
amount of data significantly and we're preparing to work on a prototype 
for the engine backend as well so we can backup this statement with hard 
numbers.



Here's the proposal.


   VDSM = Engine data retrieval optimization


 Motivation:

Currently the oVirt Engine is polling a lot of data from VDSM every 15 
seconds. This should be optimized and the amount of data requested 
should be more specific.


For each VM the data currently contains much more information than 
actually needed which blows up the size of the XML content quite big. We 
could optimize this by splitting the reply on the getVmStats based on 
the needs of the engine into different requests. For this reason Omer 
Frenkel and me have split up the data into parts based on their usage.



 Changes


   New Verbs


 getAllRuntimeStats

Get runtime information of all VMs
Returns for each VM a map with UUID and a value of:

 * *@cpuSys* Ratio of CPU time spent by qemu on other than guest time
 * *@cpuUser* Ratio of CPU time spent by the guest VM
 * *@memUsage* The percent of memory in use by the guest
 * *@elapsedTime* The number of seconds that the VM has been running
 * *@status* The current status of the given VM
 * *@statsAge* The age of these statistics in seconds
 * *@hashes* Hashes of several statistics and information around VMs

Hashes consists of:

 * *@info* Hash for VmConfInfo data
 * *@config* Hash of the VM configuration XML
 * *@status* Hash of the VmStatusInfo data
 * *@guestDetails* Hash of the VmGuestDetails data


 getStatus

Get status information about a list of VMs
Parameters:

 * *@vmIDs* a list of UUIDs for VMs to query

Returns for each VM in vmIDs a map with UUID and a value of:

 * *timeOffset* The time difference from host to the VM in seconds
 * *monitorResponse* Indicates if the qemu monitor is responsive
 * *clientIp* The IP address of the client connected to the display
 * *username* the username associated with the current session
 * *session* The current state of user interaction with the VM
 * *guestIPs* A space separated string of assigned IPv4 addresses
 * *pauseCode* Indicates the reason a VM has been paused


 getConfInfo

Get configuration information about a list of VMs
Parameters:

 * *@vmIDs* a list of UUIDs for VMs to query

Returns for each VM in vmIDs a map with UUID and a value of:

 * *acpiEnable* Indicates if ACPI is enabled inside the VM
 * *displayPort* The port in use for unencrypted display data
 * *displaySecurePort* The port in use for encrypted display data
 * *displayType* The type of display in use
 * *displayIp* The IP address to use for accessing the VM display
 * *pid* The process ID of the underlying qemu process
 * *vmType* The type of VM
 * *kvmEnable* Indicates if KVM hardware acceleration is enabled
 * *cdrom* /*optional*/ The path to an ISO image used in the VM's
   CD-ROM device
 * *boot* /*optional*/ An alias for the type of device used to boot the VM


 getAllDeviceStats

VM device statistics containing information for getting statistics and 
SLA information

Returns for each VM a map with UUID and a value of:

 * *memoryStats* Memory statistics as reported by the guest agent
 * *balloonInfo* Guest memory balloon information
 * *disksUsage* Info about mounted filesystems as reported by the agent
 * *network* Network bandwidth/utilization statistics
 * *disks* Disk bandwidth/utilization statistics


 getGuestDetails

Get details from the guest OS from a list of VMs
Parameters:

 * *@vmIDs* a list of UUIDs for VMs to query

Returns for each VM in vmIDs a map with UUID and a value of:

 * *appsList* A list of installed applications with their versions
 * *netIfaces* Network device address info as reported by the agent


   Usage

Currently the engine is requesting currently every 3 seconds the vm list 
from each vdsm host and every 15 seconds all the data mentioned above 
for all VMs.


The change would be as follows:

The engine requests every 3 seconds getAllRuntimeStats from vdsm which 
will give the engine the most used data. If the engine has a mismatch of 
the hashes returned by getAllRuntimeStats it should request the data 
changed.


if hashes.info changed = 

[Engine-devel] cannot execute command in the class of InitVdsOnUpCommand

2013-05-30 Thread Chen, Wei D
Hi,

We suppose when one VDS is added into cluster, executeCommand method in 
InitVdsOnUpCommand.java will be invoked, so, some logic will be checked there. 
But per our experiment, this is depended on what we actually did.
Here are some cases:
1. when reboot VDS, the logic in  executeCommand will be invoked.
2. when re-deploy engine, the logic in  executeCommand will be invoked.
3. when we add a new VDS (vdsm is running) into cluster, the logic in  
executeCommand will not be invoked.

What we expect is the logic will also be invoked in the third case, but why 
it's not invoked? What's behind all of these?


Best Regards,
Dave Chen


___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


Re: [Engine-devel] static header only in VM dialog?

2013-05-30 Thread Malini Rao
Sorry to join the thread late. The long weekend was followed by a conference 
for the UX team and hence the delay. See comments below inline - 

- Original Message -
 From: Einav Cohen eco...@redhat.com
 To: Daniel Erez de...@redhat.com
 Cc: Eldan Hildesheim i...@eldanet.com, engine-devel 
 engine-devel@ovirt.org, Eldan Hildesheim
 ehild...@redhat.com, Malini Rao m...@redhat.com, Tomas Jelinek 
 tjeli...@redhat.com
 Sent: Wednesday, May 29, 2013 8:21:30 AM
 Subject: Re: [Engine-devel] static header only in VM dialog?
 
  - Original Message -
  From: Daniel Erez de...@redhat.com
  Sent: Wednesday, May 29, 2013 1:36:03 AM
  
  
  
  - Original Message -
   From: Einav Cohen eco...@redhat.com
   To: Daniel Erez de...@redhat.com, Malini Rao m...@redhat.com,
   Eldan Hildesheim i...@eldanet.com, Eldan
   Hildesheim ehild...@redhat.com, Tomas Jelinek tjeli...@redhat.com
   Cc: engine-devel engine-devel@ovirt.org
   Sent: Wednesday, May 29, 2013 2:30:09 AM
   Subject: Re: static header only in VM dialog?
   
- Original Message -
From: Daniel Erez de...@redhat.com
Sent: Tuesday, May 28, 2013 6:18:20 PM


- Original Message -
 From: Einav Cohen eco...@redhat.com
 To: Malini Rao m...@redhat.com, Eldan Hildesheim
 i...@eldanet.com,
 Eldan Hildesheim ehild...@redhat.com
 Cc: Tomas Jelinek tjeli...@redhat.com, de...@redhat.com,
 engine-devel
 engine-devel@ovirt.org
 Sent: Wednesday, May 29, 2013 12:53:47 AM
 Subject: static header only in VM dialog?
 
 when reviewing the code for the redesign of vm related dialogs,
 Daniel
 has
 raised an interesting question: Why do we want the static header only
 in
 VM
 dialog?
 
 (I assume that he refers to the top section of the New VM dialog as
 seen
 in
 [1], which
 contains the DC/Cluster, Quota, etc information, and is static,
 i.e.,
 it
 is
 always
 displayed, regardless of the selected side-tab within the dialog)
 
 I agree with what Daniel is implying here: for consistency, we would
 probably
 want to
 introduce this static header to other dialogs, at least to the ones
 that
 also
 contain
 side-tabs in which it makes sense to turn the header to static
 [e.g.
 New Host (which contains a DC + Cluster header) - see
 http://oi39.tinypic.com/2z84xnp.jpg,
 New Cluster (which contains a DC header) - see
 http://oi40.tinypic.com/2vmyj2x.jpg]

MR:  Consistency is important but we need to make only UIs with similar 
purposes consistent and not aim for consistency where it will not serve a real 
Usability goal or worse get in the way. See next comment for more on UX 
motivation for this static panel for new VM creation where it was originally 
proposed.


 
 [I assume, of course, that all the VM-like dialogs (e.g. New/Edit
 VM-Pool)
 will also have
 static headers - I don't know if the patch already takes care of that
 or
 not]
 
 Thoughts?
 
 [@Daniel - if you had something else in mind, and/or other dialogs in
 mind
 -
 please feel free
 to add/amend/etc]

MR: Before we proliferate this UI paradigm into other areas, let us look at the 
list of dialogs where we are considering this against the primary UX 
motivations with which this static panel was originally suggested. UX can help 
with this exercise on where it makes sense to have the static panel.


Besides consistency matters, I wanted to understand what's the
motivation
of
keeping these widgets static. I.e. is it an essential preparation for
the
new
instance type dialog or a new concept for tab based dialogs
(as DC/Cluster values aren't necessarily relevant for each tab in the
dialog)
   
   [maybe Tomas/Eldan/Malini can help here as well]


MR: Here are the original motivations for this static panel. 

1. Context for dependencies - In the create VM dialog and the introduction of 
instance types and images, we came up with two core needs for the UI - There 
were some fields that were context-setting for other fields with dependencies. 
So, changing these context setting field values would alter the choices in 
other fields on one of the sub-tabs or eliminate or populate fields in these 
tabs. We wanted to ground the user with the context so that they can observe 
any changes that happen on a tab and determine what caused that change in the 
static panel. 

2. Basic and mandatory - In the create VM dialog and the introduction of 
instance types and images, we also had to represent different levels of 
definition needed. For e.g, there were some basic and mandatory fields that 
were minimally needed for the definition of a VM irrespective of whether the 
user was basic or advanced. These fields were included in the static panel or 
at the most in the very first sub tab if they were not a context