[Engine-devel] Quota in 3.2 - design
by Ofri Masad
Hi,
The new design for quota in 3.2 is available here: http://wiki.ovirt.org/wiki/Features/Design/Quota-3.2
Most of the changes would be in the backend.
Feedbacks would be more than welcome. We are trying to make quota more inherent (more framework like) and easier to handle when you create a new command.
Other than the design described in the wiki, we thought of two other designs which would help us identify the commands which are dependent on quota:
1. Using annotations -
by this approach we would add an annotation to the command class
telling us it's a quota consumer and a second annotation to the method returning
the consumption parameters.
2. Using just interfaces without the markings in VdcActionType (this is the current implementation) -
in this case the implemented interfaces are inherited by extending commands.
So if one inherits some command without handling the quota parameters - we get
wrong quota consumption and even holes in the quota.
again, any feedbacks would be more than welcome.
Thanks ahead,
Ofri
12 years
[Engine-devel] git-review
by Saggi Mizrahi
I've recently encountered more and more people not using the git-review tool and manually pushing their changes to Gerrit using raw git commands.
Even though there is nothing wrong with doing things the hard way. I prefer not using an overly complicated error prone way to interact with Gerrit.
Last I checked the version of git-review in Fedora is broken but I suggest using pip anyway as it is always synced with the master branch.
Also, please use topics. Either use a BZ# or a topic codename (eg. live_migration, vdsm_api, nfs4_support) so people can skim the review list for topics they might want to review.
Be careful, it automatically uses current the branch name (unless you use -t) so if you giving your branches funny names (I know I do) don't forget to manually specify a topic.
More information.
http://wiki.openstack.org/GerritWorkflow
https://github.com/openstack-ci/git-review
12 years
[Engine-devel] Strange input from oVirt-engine for create (VM) API
by Adam Litke
Hi all,
Today I was watching the vdsm log as ovirt-engine started a VM and I saw
something peculiar with how VM device addresses were specified. Here is a
sample of the python dictionary for the VM from vdsm.log (I reformatted it with
pprint for readability):
{'address': {' bus': '1',
' controller': '0',
' target': '0',
' type': 'drive',
'unit': '0'},
Notice the whitespace in the 'controller', 'target', and 'type' keys. Could
someone explain why this is happening? Is it deliberate or a bug?
Thanks!
--
Adam Litke <agl(a)us.ibm.com>
IBM Linux Technology Center
12 years
[Engine-devel] Couple of small Feature Requests
by Dead Horse
Would like to make a couple of small feature requests.
1) Allow for the SPICE or VNC password to be set in the UI by admin's or
power users.
Benefit: (Assumes spice SSL has been disabled) allows user or admin to set
a password for access by a standalone remote session via vncviewer or
remote-viewer or the spice html5 implementation which is WIP, or standalone
HW thin client
- This may also assume that vdsm is running with SSL disabled as well to
have had vdsm make the neccesary changes to the qemu spice configuration
2) Display currently configured OR generated password and IP/Port for
either VNC or SPICE console of the VM within the PUP and Admin UI
Benefit: At the very least a standalone remote client can be used to
connect once the password and IP/PORT is known for spice or VNC
- Currently VNC will display a dialog that shows the this info but it
would be more useful to have it displayed in the UI given proper privilege
3) Display the UUID of a VM in the Admin UI (similar to the how the disks
tab breaks down and shows DISK UUID mappings)
- Benefit: Easier for administrators to map UUID to VM config file data in
the data stores or export domains
- DHC
12 years, 1 month
Re: [Engine-devel] [Users] oVirt Node 2.5.2 ISO released
by Simon Grinberg
----- Original Message -----
> From: "Simon Grinberg" <simon(a)redhat.com>
> To: "Mike Burns" <mburns(a)redhat.com>
> Cc: "node-devel" <node-devel(a)ovirt.org>
> Sent: Sunday, October 14, 2012 5:10:40 PM
> Subject: Re: [Users] oVirt Node 2.5.2 ISO released
>
> Hi Mike,
>
> I was trying to install it and when setting from the TUI I get an
> error message command "hostname" not found.
> Dropping into shell I get the same. /etc/sysconfig/network is getting
> the proper value, but after reboot this is not reflected in the host
> name (though the value in /etc/sysconfig/network is persisted)
OK, I managed to workaround this by directly changing the host name:
echo <new host name> > /proc/sys/kernel/hostname
This allowed me to register the node with the engine (before that it complained on missing proper certificates)
The change does not sustain reboot, but it seems that the connection with VDSM does.
I guess the next time point I'll be hit by this issue is live migration, but not sure about that (I don't remember if libvirt still validates the host name before migration).
>
> Any idea?
>
> Thanks,
> Simon.
>
> ----- Original Message -----
> > From: "Mike Burns" <mburns(a)redhat.com>
> > To: "node-devel" <node-devel(a)ovirt.org>, "users" <users(a)ovirt.org>
> > Sent: Friday, October 5, 2012 6:23:11 PM
> > Subject: [Users] oVirt Node 2.5.2 ISO released
> >
> > The long awaited and much anticipated oVirt Node 2.5.2 ISO is now
> > available on ovirt.org. This build includes the fixed vdsm to
> > allow
> > nfs
> > based domains to be attached.
> >
> > Thanks for the patience while we worked out the issue with NFS.
> >
> > The oVirt Node Team
> >
> > http://ovirt.org/releases/3.1/tools/ovirt-node-iso-2.5.2-0.1.fc17.iso
> >
> >
> > _______________________________________________
> > Users mailing list
> > Users(a)ovirt.org
> > http://lists.ovirt.org/mailman/listinfo/users
> >
>
12 years, 1 month
[Engine-devel] Network related hooks in vdsm
by Igor Lvovsky
Hi everyone,
As you know vdsm has hooks mechanism and we already support dozen of hooks for different needs.
Now it's a network's time.
We would like to get your comments regarding our proposition for network related hooks.
In general we are planning to prepare framework for future support of bunch network related hooks.
Some of them already proposed by Itzik Brown [1] and Dan Yasny [2].
Below you can find the additional hooks list that we propose:
Note: In the first stage we can implement these hooks without any parameters, just to provide an entry point
for simple hooks.
Networks manipulation:
- before_add_network(conf={}, customProperty={})
- after_add_network(conf={}, customProperty={})
- before_del_network(conf={}, customProperty={})
- after_del_network(conf={}, customProperty={})
- before_edit_network(conf={}, customProperty={})
- after_edit_network(conf={}, customProperty={})
- TBD
Bondings manipulations:
- before_add_bond(conf={}, customProperty={})
- after_add_bond(conf={}, customProperty={})
- before_del_bond(conf={}, customProperty={})
- after_del_bond(conf={}, customProperty={})
- before_edit_bond(conf={}, customProperty={})
- after_edit_bond(conf={}, customProperty={})
- TBD
General purpose:
- before_persist_network
- after_persist_network
Now we just need to figure out the use cases.
Your input more than welcome...
[1] http://gerrit.ovirt.org/#/c/7224/ - Adding hooks support for NIC hotplug
[2] http://gerrit.ovirt.org/#/c/7547/ - Hook: Cisco VM-FEX support
Regards,
Igor Lvovsky
12 years, 1 month
[Engine-devel] Update on UI Plugins: context-sensitive button API preview
by Vojtech Szocs
------=_Part_7675795_1562088388.1350047011300
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Hi guys,
I've been working on implementing "custom context-sensitive button / menu item" plugin API feature recently, and wanted to share some code with you.
Here's a sample code that adds "Do something with selected host(s)" button to Hosts main tab data grid:
api.register({
UiInit: function() {
api. addMainTabActionButton ('Host', 'Do something with selected host(s)', {
onClick : function() {
// 'arguments' contain host entities currently selected
window.alert(arguments.length + ' host(s) selected');
window.alert('first selected host ID = ' + arguments[0].entityId);
// Open new popup window
// In future, we might use "dialog UI" plugin API here
window.open('http://example.com', '_blank');
},
isEnabled : function() {
// 'true' means the button is enabled and clickable (default)
// 'false' means the button is disabled and non-clickable
// Enable button only when the number of selected items > 0
return arguments.length > 0;
},
isAccessible : function() {
// 'true' means the button is visible (default)
// 'false' means the button is hidden
return true;
}
});
}
});
The signature of addMainTabActionButton plugin API function is following:
addMainTabActionButton(entityTypeName, label, actionButtonInterface)
entityTypeName indicates which main tab the button should be added to, e.g. "Host" for Host main tab. [Quick question for NetApp guys: do we want to support all main tab entity types?]
label is the title displayed on the button.
actionButtonInterface represents an object that "implements the button interface" by declaring its functions: onClick , isEnabled , isAccessible . Since JavaScript language uses different techniques and syntax to achieve OOP programming model, I've decided to keep things simple and stay with plain objects containing functions. While some JavaScript guru could advocate different approach, from WebAdmin vs. plugin integration perspective, the above mentioned approach is the easiest way. I'm also interested to hear your opinion on this.
All functions of actionButtonInterface receive currently selected item(s) as function arguments. Within a JavaScript function, "arguments" represents an implicit array of its arguments.
For now, WebAdmin will pass simple JSON-like objects to these functions, for example:
{ entityId: "<whatever>" }
In future, we can extend or modify this concept to match the contract of various oVirt REST API entities.
This feature will be part of UI Plugins PoC rev.6, which should come out next week.
Regards,
Vojtech
------=_Part_7675795_1562088388.1350047011300
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
<html><head><style type=3D'text/css'>p { margin: 0; }</style></head><body><=
div style=3D'font-family: times new roman,new york,times,serif; font-size: =
12pt; color: #000000'>Hi guys,<br><br>I've been working on implementing "cu=
stom context-sensitive button / menu item" plugin API feature recently, and=
wanted to share some code with you.<br><br>Here's a sample code that adds =
"Do something with selected host(s)" button to Hosts main tab data grid:<br=
><br><span style=3D"font-family: courier new,courier,monaco,monospace,sans-=
serif;"></span><span style=3D"font-family: courier new,courier,monaco,monos=
pace,sans-serif;">api.register({</span><br style=3D"font-family: courier ne=
w,courier,monaco,monospace,sans-serif;"><span style=3D"font-family: courier=
new,courier,monaco,monospace,sans-serif;"> UiInit: function() {</spa=
n><br><br style=3D"font-family: courier new,courier,monaco,monospace,sans-s=
erif;"><span style=3D"font-family: courier new,courier,monaco,monospace,san=
s-serif;"> api.<span style=3D"font-weight: bold; color: r=
gb(51, 51, 255);">addMainTabActionButton</span>('Host', 'Do something with =
selected host(s)', {</span><br><br style=3D"font-family: courier new,courie=
r,monaco,monospace,sans-serif;"><span style=3D"font-family: courier new,cou=
rier,monaco,monospace,sans-serif;"> <span sty=
le=3D"color: rgb(204, 51, 204); font-weight: bold;">onClick</span>: functio=
n() {</span><span style=3D"white-space:pre"><br style=3D"font-family: couri=
er new,courier,monaco,monospace,sans-serif;"></span><span style=3D"font-fam=
ily: courier new,courier,monaco,monospace,sans-serif;"><span style=3D"color=
: rgb(0, 102, 0);"> // 'arguments=
' contain host entities currently selected</span><br style=3D"color: rgb(0,=
102, 0);"> window.alert(argument=
s.length + ' host(s) selected');<br> &nb=
sp; window.alert('first selected host ID =3D ' + arguments[0].entityId);<br=
><br><span style=3D"color: rgb(0, 102, 0);"> &=
nbsp; // Open new popup window</span><br style=3D"color: rgb(0, 102, =
0);"><span style=3D"color: rgb(0, 102, 0);"> &=
nbsp; // In future, we might use "dialog UI" plugin API here</span><b=
r style=3D"color: rgb(0, 102, 0);"> &nbs=
p; window.open('http://example.com', '_blank');<br></span><span style=3D"fo=
nt-family: courier new,courier,monaco,monospace,sans-serif;"></span><span s=
tyle=3D"font-family: courier new,courier,monaco,monospace,sans-serif;">&nbs=
p; },</span><br><br style=3D"font-family: courier n=
ew,courier,monaco,monospace,sans-serif;"><span style=3D"font-family: courie=
r new,courier,monaco,monospace,sans-serif;"> =
<span style=3D"font-weight: bold; color: rgb(204, 51, 204);">isEnabled</spa=
n>: function() {</span><br style=3D"font-family: courier new,courier,monaco=
,monospace,sans-serif;"><span style=3D"font-family: courier new,courier,mon=
aco,monospace,sans-serif; color: rgb(0, 102, 0);"> &=
nbsp; // 'true' means the button is enabled and clickable (defa=
ult)<br> // 'false' means the but=
ton is disabled and non-clickable<br><br> &nbs=
p; // Enable button only when the number of selected items > 0<br>=
</span><span style=3D"font-family: courier new,courier,monaco,monospace,san=
s-serif;"> return arguments.lengt=
h > 0;</span><br style=3D"font-family: courier new,courier,monaco,monosp=
ace,sans-serif;"><span style=3D"font-family: courier new,courier,monaco,mon=
ospace,sans-serif;"> },</span><br><br style=
=3D"font-family: courier new,courier,monaco,monospace,sans-serif;"><span st=
yle=3D"font-family: courier new,courier,monaco,monospace,sans-serif;"> =
; <span style=3D"font-weight: bold; color: rgb(204,=
51, 204);">isAccessible</span>: function() {</span><br style=3D"font-famil=
y: courier new,courier,monaco,monospace,sans-serif;"><span style=3D"font-fa=
mily: courier new,courier,monaco,monospace,sans-serif; color: rgb(0, 102, 0=
);"> // 'true' means the button i=
s visible (default)<br> // 'false=
' means the button is hidden<br style=3D"font-family: courier new,courier,m=
onaco,monospace,sans-serif;"></span><span style=3D"font-family: courier new=
,courier,monaco,monospace,sans-serif;"> =
return true;</span><br style=3D"font-family: courier new,courier,mon=
aco,monospace,sans-serif;"><span style=3D"font-family: courier new,courier,=
monaco,monospace,sans-serif;"> }</span><br><b=
r style=3D"font-family: courier new,courier,monaco,monospace,sans-serif;"><=
span style=3D"font-family: courier new,courier,monaco,monospace,sans-serif;=
"> });</span><br><br style=3D"font-family: courier new,co=
urier,monaco,monospace,sans-serif;"><span style=3D"font-family: courier new=
,courier,monaco,monospace,sans-serif;"> }</span><br style=3D"font-fam=
ily: courier new,courier,monaco,monospace,sans-serif;"><span style=3D"font-=
family: courier new,courier,monaco,monospace,sans-serif;">});</span><br sty=
le=3D"font-family: courier new,courier,monaco,monospace,sans-serif;"><br>Th=
e signature of <strong>addMainTabActionButton</strong> plugin API function =
is following:<br><br><span style=3D"font-family: courier new,courier,monaco=
,monospace,sans-serif;">addMainTabActionButton(entityTypeName, label, actio=
nButtonInterface)</span><br><br><em>entityTypeName</em> indicates which mai=
n tab the button should be added to, e.g. "Host" for Host main tab. [Quick =
question for NetApp guys: do we want to support all main tab entity types?]=
<br><br><span style=3D"font-style: italic;">label</span> is the title displ=
ayed on the button.<br><br><span style=3D"font-style: italic;">actionButton=
Interface</span> represents an object that "implements the button interface=
" by declaring its functions: <span style=3D"font-style: italic;">onClick</=
span>, <span style=3D"font-style: italic;">isEnabled</span>, <span style=3D=
"font-style: italic;">isAccessible</span>. Since JavaScript language uses d=
ifferent techniques and syntax to achieve OOP programming model, I've decid=
ed to keep things simple and stay with plain objects containing functions. =
While some JavaScript guru could advocate different approach, from WebAdmin=
vs. plugin integration perspective, the above mentioned approach is the ea=
siest way. I'm also interested to hear your opinion on this.<br><br>All fun=
ctions of <span style=3D"font-style: italic;">actionButtonInterface</span> =
receive currently selected item(s) as function arguments. Within a JavaScri=
pt function, "arguments" represents an implicit array of its arguments.<br>=
<br>For now, WebAdmin will pass simple JSON-like objects to these functions=
, for example:<br><br><span style=3D"font-family: courier new,courier,monac=
o,monospace,sans-serif;">{ entityId: "<whatever>" }</span><br><br>In =
future, we can extend or modify this concept to match the contract of vario=
us oVirt REST API entities.<br><br>This feature will be part of UI Plugins =
PoC rev.6, which should come out next week.<br><br>Regards,<br>Vojtech<br><=
br></div></body></html>
------=_Part_7675795_1562088388.1350047011300--
12 years, 1 month