[Engine-devel] ovirt-sdk-python 3.3.0.1 released
by Michael Pasternak
- added new collection ClusterGlusterVolumeBrickStatistics
- added NetUp 'cloned disk' importing capabilities
- to ClusterGlusterVolumeBricks.list() added new argument "all_content"
- to ClusterGlusterVolumeBricks.get() added new argument "all_content"
- to host install method added new parameter "image"
- to host add method added new parameter "display.address"
- to vm add method added new parameter "vm.cpu.mode"
- to vm add method added new overload for creating vm from snapshot
- to cluster added tunnel_migration
- to display added keyboard_layout
- to display added smartcard_enabled
- to DataCenter added Clusters sub-collection
- to StorageDomain added Disks sub-collection
- to Disks.list() added 'unregistered' argument
- to Host added display.address
- to Snapshot added commit/preview/undo actions
- to vms.add() added overload for creating vm from snapshot
- to hosts.add() added [@param host.display.address: string]
- to vm.ticket() added [@param action.ticket.value: string]
- return error if amount of fetched objects in X.get() is > 1 #890327
- session based authentication for /localhost is broken #916285
- explicitly ask for reply in xml
- Add constructor parameter validate_cert_chain=True #915225
- defend against malformed server reply
For more details see [1].
[1] http://wiki.ovirt.org/Python-sdk-changelog
--
Michael Pasternak
RedHat, ENG-Virtualization R&D
10 years, 11 months
[Engine-devel] failed to add host into cluster
by Chen, Wei D
------=_NextPart_000_0063_01CE8F8D.53576440
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
Hi,
Failed to add a node into cluster. I saw follow hints, but still don't know how to fix it. OS is fedora 19 both for node and engine,
anyone can help me?
Host *** does not comply with the cluster *** emulated machines. The Hosts emulated machines are clipper,none and the cluster is
[rhel6.4.0, pc-1.0]}
Best Regards,
Dave Chen
------=_NextPart_000_0063_01CE8F8D.53576440
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
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
7OVqYgP/vY8X0gLYrtGgBjwIkPOmFrSB2oRNEQiAtbP8YyOlprYHDeAUHFziVb6UPjPD9sR15q00
rH41v9qhRcll5V2cz4krCAdzSEWMGxnpZMBS8vV3zrwD1fiU0LLyn8Nb1u1MT0Sh0ZKQrWC/Icv1
UWklTdaGkbUxUa3eUZZdH5ayXIfLir4h3hChmkWsjLeLWXMHz/fCn3KW6qP64+WJJr0kcnpOM/Sp
07F9F6yfdg27HVWEHAphROkHJFdHK47RxnWWrnmB6lLMdzkCAwEAAaOCAywwggMoMEQGCSqGSIb3
DQEJDwQ3MDUwDgYIKoZIhvcNAwICAgCAMA4GCCqGSIb3DQMEAgIAgDAHBgUrDgMCBzAKBggqhkiG
9w0DBzAdBgNVHQ4EFgQUUIOKK8gtAh2SucBYccty6S33jggwCwYDVR0PBAQDAgeAMB8GA1UdIwQY
MBaAFB5pKrTcKP5HGE4hCz+8rBEv8Jj1MIHJBgNVHR8EgcEwgb4wgbuggbiggbWGVGh0dHA6Ly93
d3cuaW50ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwRXh0ZXJuYWwlMjBCYXNpYyUyMElz
c3VpbmclMjBDQSUyMDRBLmNybIZdaHR0cDovL2NlcnRpZmljYXRlcy5pbnRlbC5jb20vcmVwb3Np
dG9yeS9DUkwvSW50ZWwlMjBFeHRlcm5hbCUyMEJhc2ljJTIwSXNzdWluZyUyMENBJTIwNEEuY3Js
MIH1BggrBgEFBQcBAQSB6DCB5TBsBggrBgEFBQcwAoZgaHR0cDovL3d3dy5pbnRlbC5jb20vcmVw
b3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBFeHRlcm5hbCUyMEJhc2ljJTIwSXNzdWluZyUy
MENBJTIwNEEoMikuY3J0MHUGCCsGAQUFBzAChmlodHRwOi8vY2VydGlmaWNhdGVzLmludGVsLmNv
bS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9JbnRlbCUyMEV4dGVybmFsJTIwQmFzaWMlMjBJc3N1
aW5nJTIwQ0ElMjA0QSgyKS5jcnQwPAYJKwYBBAGCNxUHBC8wLQYlKwYBBAGCNxUIhsOMdYSZ5VGD
/YEohY6fU4KRwAlngd69OZXwQwIBZAIBCDAfBgNVHSUEGDAWBggrBgEFBQcDBAYKKwYBBAGCNwoD
DDApBgkrBgEEAYI3FQoEHDAaMAoGCCsGAQUFBwMEMAwGCisGAQQBgjcKAwwwRQYDVR0RBD4wPKAk
BgorBgEEAYI3FAIDoBYMFHdlaS5kLmNoZW5AaW50ZWwuY29tgRR3ZWkuZC5jaGVuQGludGVsLmNv
bTANBgkqhkiG9w0BAQUFAAOCAQEAFKXJisQoKmP6JRz7poS0Z+AbM5QEpy/NTxT4lI+nHfznQcEW
emgt5pFJORthxKKFipifuHQxDYpnmNBq5wkn5zLpnMJQVMqoG/FPP2NWXW7NHRmzewousUCjm6ci
MSJbu7YNSfJAPz/fUznOKxmwBi5i+yROQXpeAx5eU9bcqaClBUt7e0FRyUCUEGfuwrzqamuPaxGc
Jg0zS7t7uPLtMQ+Xg83nVUBmWzjCXEzJesEG4KkY9lXInQojn7nIqSYJyQnm+0xK1TKNQ/G/J2DD
m2V7WDlfyECVbQwzwseJcFCET+zKvePggmgwoJ7Vjc/6gju3mj9wrr4TEil7PzVKIjCCBmcwggVP
oAMCAQICChcsF54AAgAAFNMwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMCVVMxCzAJBgNVBAgT
AkNBMRQwEgYDVQQHEwtTYW50YSBDbGFyYTEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xKzAp
BgNVBAMTIkludGVsIEV4dGVybmFsIEJhc2ljIElzc3VpbmcgQ0EgNEEwHhcNMTMwNzE4MDExMDUy
WhcNMTYwNzAyMDExMDUyWjA7MRQwEgYDVQQDEwtDaGVuLCBXZWkgRDEjMCEGCSqGSIb3DQEJARYU
d2VpLmQuY2hlbkBpbnRlbC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpHWFM
hzvKyQ+h07xAyVymceQlT/Y1YK+nxXKFLq6Kglz8suv/Uk4ur+YXoBfW/+OWxjYU+misOO+apdAw
my3KXs+222bBd7hmxvMdOuz5jN1m+dLYlMlWpWyvLe+3531ufG4yymmlGxfifVtqKVmWSZ8li1gm
MbOGip1GU1dXfdckGwinmRFaSHFThcy+6jOKMY88cf7gRY/pJP6g3/tSwnO3LZgRZzqBu7VkZJpE
phgfPHMgmNLWQRUuQ/PEO/XrLkCrNWo90RhQzYbvWMFOx+/y/VGRvf/QKqJBUj+cDOT7qLtp15lm
vm5oBGC/qBLv5ty2ZSHU/lUih1Io4nclAgMBAAGjggMtMIIDKTBEBgkqhkiG9w0BCQ8ENzA1MA4G
CCqGSIb3DQMCAgIAgDAOBggqhkiG9w0DBAICAIAwBwYFKw4DAgcwCgYIKoZIhvcNAwcwHQYDVR0O
BBYEFIQlFPFOAdRJpFVdkBxzADk9BtROMAsGA1UdDwQEAwIEMDAfBgNVHSMEGDAWgBQeaSq03Cj+
RxhOIQs/vKwRL/CY9TCByQYDVR0fBIHBMIG+MIG7oIG4oIG1hlRodHRwOi8vd3d3LmludGVsLmNv
bS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEV4dGVybmFsJTIwQmFzaWMlMjBJc3N1aW5nJTIwQ0El
MjA0QS5jcmyGXWh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0lu
dGVsJTIwRXh0ZXJuYWwlMjBCYXNpYyUyMElzc3VpbmclMjBDQSUyMDRBLmNybDCB9QYIKwYBBQUH
AQEEgegwgeUwbAYIKwYBBQUHMAKGYGh0dHA6Ly93d3cuaW50ZWwuY29tL3JlcG9zaXRvcnkvY2Vy
dGlmaWNhdGVzL0ludGVsJTIwRXh0ZXJuYWwlMjBCYXNpYyUyMElzc3VpbmclMjBDQSUyMDRBKDIp
LmNydDB1BggrBgEFBQcwAoZpaHR0cDovL2NlcnRpZmljYXRlcy5pbnRlbC5jb20vcmVwb3NpdG9y
eS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBFeHRlcm5hbCUyMEJhc2ljJTIwSXNzdWluZyUyMENBJTIw
NEEoMikuY3J0MD0GCSsGAQQBgjcVBwQwMC4GJisGAQQBgjcVCIbDjHWEmeVRg/2BKIWOn1OCkcAJ
Z4S52UGHhP9OAgFkAgENMB8GA1UdJQQYMBYGCCsGAQUFBwMEBgorBgEEAYI3CgMEMCkGCSsGAQQB
gjcVCgQcMBowCgYIKwYBBQUHAwQwDAYKKwYBBAGCNwoDBDBFBgNVHREEPjA8oCQGCisGAQQBgjcU
AgOgFgwUd2VpLmQuY2hlbkBpbnRlbC5jb22BFHdlaS5kLmNoZW5AaW50ZWwuY29tMA0GCSqGSIb3
DQEBBQUAA4IBAQBKK79ulOFE5/S7yfejfIXz8xX3aRUmggULkjwh4sTe1M6JEKLDB9AqzNMKb/hy
PHPDFAlSuYToRu5QUiIIREdC4+RJhZrJ/NRELZktPJrOIpydhKsOAODNle2Rlypq9XvmeCqElLiR
XZTrBQQ4j4bMhnJVjS2h0ZULsR3qraV3ssWYjC1d6mBysmf4IdVnNSKECjGAJhLhwsow9igtjCzz
qKZ9A62vrG+ag/vnlx8bOO7ReqoK/X3hCYvuappzZ7udulpjf5zD/oAv5xJU0S0mSr1XKyfNOCIT
btX0zJM9tOoV1zr0eJb1I+aulgCjqqxaZqbvWdkQPdn++dAgQsmAMYIDvDCCA7gCAQEwgYcweTEL
MAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRQwEgYDVQQHEwtTYW50YSBDbGFyYTEaMBgGA1UEChMR
SW50ZWwgQ29ycG9yYXRpb24xKzApBgNVBAMTIkludGVsIEV4dGVybmFsIEJhc2ljIElzc3Vpbmcg
Q0EgNEECChcr3JIAAgAAFNIwCQYFKw4DAhoFAKCCAgkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEH
ATAcBgkqhkiG9w0BCQUxDxcNMTMwODAyMDYzMzU5WjAjBgkqhkiG9w0BCQQxFgQUU0szBQqrHyk3
00cWkuAJkNAF1rQwcgYJKoZIhvcNAQkPMWUwYzALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAoG
CCqGSIb3DQMHMAsGCWCGSAFlAwQBAjAHBgUrDgMCGjALBglghkgBZQMEAgMwCwYJYIZIAWUDBAIC
MAsGCWCGSAFlAwQCATCBmAYJKwYBBAGCNxAEMYGKMIGHMHkxCzAJBgNVBAYTAlVTMQswCQYDVQQI
EwJDQTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExGjAYBgNVBAoTEUludGVsIENvcnBvcmF0aW9uMSsw
KQYDVQQDEyJJbnRlbCBFeHRlcm5hbCBCYXNpYyBJc3N1aW5nIENBIDRBAgoXLBeeAAIAABTTMIGa
BgsqhkiG9w0BCRACCzGBiqCBhzB5MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFDASBgNVBAcT
C1NhbnRhIENsYXJhMRowGAYDVQQKExFJbnRlbCBDb3Jwb3JhdGlvbjErMCkGA1UEAxMiSW50ZWwg
RXh0ZXJuYWwgQmFzaWMgSXNzdWluZyBDQSA0QQIKFywXngACAAAU0zANBgkqhkiG9w0BAQEFAASC
AQBHOVJ8v26UwJh9yvZ9FQUcPFtV8uJx2HBXOaqoHDKtS3KWAOjFvfJxMdv/+gyLCvzjPUbp90DN
1GACK/Qye17dtXaxYxjkTZi2UwzoW9lYBqVvbYLY36gh6evmEQ9sKjHCFa1jKG/bi3bwibm+lgx3
KgeDmVRQCBsQQ8L8S9xR8QtBOGl0QLbdH9RKTEbIeKtt1DCaS93R9dNGj7mEQr+QtYZisxdjjBP7
+w4hCSQ5HfbgEouelZ7LvGGaSMWYROs9WDmlS8le5TK/v6gdfxL3W5Wtn8B+OZd4fntBR6OqzBLU
7ievh5r1t0WzgO5pbrUSFzPDTmcobVbgUCWcERfXAAAAAAAA
------=_NextPart_000_0063_01CE8F8D.53576440--
10 years, 12 months
[Engine-devel] ovirt-cli 3.3.0.1 released
by Michael Pasternak
- at vm.start() --vm-os-boot doesn't send the order of devices #921464
- rephrase status command help
- add option to retrieve system summary #854369
- accept IP address as FQ argument rather than string #886067
- fix broken pipe
- Bad error message when trying to create a new Role #908284
- add flag --dont-validate-cert-chain #915231
- collection-based-options could be passed in 2 ways #859684
- make NO_SUCH_ACTION error a bit more clear
- ovirt-cli DistributionNotFound exception on f18 #881011
- ovirt-shell misleading help for command "connect" #907943
- show event -id accept strings instead of numeric values #886786
- Use vncviewer passwordFile instead of passwdInput
More details can be found at [1].
[1] http://wiki.ovirt.org/Cli-changelog
--
Michael Pasternak
RedHat, ENG-Virtualization R&D
11 years
[Engine-devel] Introducing generics to UiCommon
by Tomas Jelinek
Hey all,
as we have passed the oVirt feature freeze I would like to celebrate it with a little bit of cleanup :)
A good candidate for this is to introduce generics into uicommonweb project. The fact that it is not generic
brings quite some hidden expectations into our code, makes it unreadable and error prone.
Also, the gwt-common and both webadmin and userportal are mostly prepared to be generic but because the uicommonweb is not, we have code like:
new ListModelListBoxEditor<Object>(new NullSafeRenderer<Object>() {
@Override
public String renderNullSafe(Object object)
return ((Version) object).getValue();
}
});
which is quite ugly and error prone.
So I have prepared two patches, one [1] which introduces the generic infrastructure (and prepares one widget for it, more about this below) and one [2] which uses it and refactors the DataCenterModel
to use it (I have chosen this model because it is big enough to show how to do it and what the benefits are but small enough to be quickly review-able).
The infrastructure change:
- changes the ListModel and EntityModel to be genreic
- adjusts the UiCommonEditorDriverGenerator to work with generics (e.g. to make it aware that ListModel<String> is indeed a ListModel, same for EntityModel)
- created a String version of EntityModelTextBox
The reason why the String EntityModelTextBox had to be created is that the EntityModelTextBox is an EditorWidget<Object, ...> so it can work only with EntityModel<Object>. I saw 2 ways how to make this work with EntityModel<String>:
1: Create a String version of this editor inside the .generic sub-package, incrementally replace the usage of the non-generic EntityModelTextBox and when the non-generic will be completely replaced, delete it and move the generic one
out from the generic sub-package
2: Change the EditorWidget<Object, ...> to EditorWidget<T, ...> and replace each usage of the "EntityModelTextBox someWidget" by "EntityModelTextBox<Object> someWidget" and than incrementally replace the <Object> to <String> as the
underlying models will be refactored. After the last one will be refactored, change the EditorWidget<T, ...> to EditorWidget<String, ...> and replace all "EntityModelTextBox<Object> someWidget" by "EntityModelTextBox someWidget"
I have chosen the first option because:
- much less classes touched at once (e.g. much more safe)
- the EntityModelTextBox<T> invites to use something like EntityModelTextBox<VM> which is not correct and fails on class cast exceptions
But at the same time I see the disadvantages of this approach (mostly that we have two versions of the same class). Please note that far not all the widgets will need two versions, only the ones editing only Strings which
are declared as EditorWidget<Object> which are:
- EntityModelLabel
- EntityModelTextAreaLabel (used only in couple of places - can be refactored together without the need to have two versions)
- EntityModelTextBox (already in the [1])
- EntityModelPasswordBox
- EntityModelTextArea
- ListModelSuggestBox (used only in couple of places - can be refactored together without the need to have two versions)
The rest of the widgets should be already prepared to be used in generic environment.
Please let me know what do you think about it,
have a nice day,
Tomas
[1]: http://gerrit.ovirt.org/#/c/17604/
[2]: http://gerrit.ovirt.org/#/c/17605/
11 years, 1 month
[Engine-devel] Cluster default with empty processor name with PPC64 support
by Leonardo Bianconi
--_000_50EB20226B72D6419356FC320AB62B8719173370SERV070corpeldo_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Hi everyone!
During the development of PPC64 support in the engine, we faced some UX iss=
ues regarding the default Cluster (that Cluster with empty processor name).
Currently, oVirt engine allows the default Cluster to contain empty process=
or name, and the administrator can add VMs and/or Templates to it. The proc=
essor name can be assigned later, editing the cluster or assigning a valid =
host to it.
During the implementation of PPC64 support on the engine, the field "archit=
ecture" was added to Clusters, VMs and Templates entities.
So we have the following questions regarding how the UI should behave:
- Shall we keep allowing the administrator to assign VMs and Templates to t=
he Cluster with no processor name or assigned architecture ?
-> If we have an "yes" for the question above:
-- We will have to assign the architecture to the Cluster base=
d on the OS of the first assigned VM, and the processor name could be defi=
ned the same way as currently ... editing the Cluster or assigning a compat=
ible Host to it.
-- The VM creation popup will have to be able =
to indicate the architecture of each OS ... some OSes have the same name, a=
nd it may get ambiguous since the Cluster architecture is still undefined a=
t that point (before the first VM get already created).
Thanks!
Regards.
Leonardo Bianconi
--_000_50EB20226B72D6419356FC320AB62B8719173370SERV070corpeldo_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"PT-BR" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><span lang=3D"EN-US">Hi everyone!<o:p></o:p></span><=
/p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">During the development of PPC64=
support in the engine, we faced some UX issues regarding the default Clust=
er (that Cluster with empty processor name).<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">Currently, oVirt engine allows =
the default Cluster to contain empty processor name, and the administrator =
can add VMs and/or Templates to it. The processor name can be assigned late=
r, editing the cluster or assigning
a valid host to it.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">During the implementation of PP=
C64 support on the engine, the field “architecture“ was added t=
o Clusters, VMs and Templates entities.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">So we have the following questi=
ons regarding how the UI should behave:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">- Shall we keep allowing the ad=
ministrator to assign VMs and Templates to the Cluster with no processor na=
me or assigned architecture ?<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> &=
nbsp; -> If we have an “yes=
221; for the question above:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> &=
nbsp; -- We will have to assign the arc=
hitecture to the Cluster based on the OS of the first assigned VM, and =
; the processor name could be defined the same way as currently … edi=
ting the Cluster or assigning a
compatible Host to it.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> &=
nbsp; &nbs=
p; -- The VM cr=
eation popup will have to be able to indicate the architecture of each OS &=
#8230; some OSes have the same name, and it may get ambiguous since the Clu=
ster architecture is still undefined
at that point (before the first VM get already created).<o:p></o:p></span>=
</p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p> </o:p></span></p>
<p class=3D"MsoNormal">Thanks!<o:p></o:p></p>
<p class=3D"MsoNormal">Regards.<o:p></o:p></p>
<p class=3D"MsoNormal">Leonardo Bianconi<o:p></o:p></p>
</div>
</body>
</html>
--_000_50EB20226B72D6419356FC320AB62B8719173370SERV070corpeldo_--
11 years, 1 month
[Engine-devel] Mapping between supported display protocols and video devices
by Vitor de Lima
Hi everyone,
Recently the changes #18150, #18677 and #17885 were submitted in order to avoid the selection of display protocols and virtual video cards that are incompatible with the PPC64 architecture and to map the VNC protocol with the standard VGA virtual device, since the Cirrus Logic device is not supported in the PPC64 architecture. I would like some feedback about that.
So far, these changes use an existing parameter in the osinfo (called "spiceSupport") to validate if the selected operating system supports SPICE and hide it in the frontend in case it doesn't. They also change the default virtual video card for each display protocol according to new properties in the osinfo, e.g.:
os.other.spiceSupport.value = true
os.other.devices.vnc.vmDeviceType.value = cirrus os.other.devices.qxl.vmDeviceType.value = qxl
os.other_ppc64.spiceSupport.value = false os.other_ppc64.devices.vnc.vmDeviceType.value = vga
(This maps the qxl protocol into the qxl device and the VNC protocol into the cirrus device in the x86_64 arch, and the VNC protocol into the VGA device in the PPC64)
However, this still has some limitations, such as:
* It doesn't allow the user to choose between the different virtual devices that exist and can be used in the VNC protocol (such as the QXL and VMware VGA)
* The syntax is ugly. As suggested in the code reviews, it could be a list of supported protocols, e.g.:
os.other.displayProtocols = vnc, spice
So, how should the engine be modified to allow multiple video cards for each display protocol? What do you think should be done?
Thanks,
Vitor de Lima
11 years, 2 months
[Engine-devel] ok to sort login domains on backend?
by Greg Sheremeta
------=_Part_3762588_2036386564.1377865608371
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Hi,
I'm working on https://bugzilla.redhat.com/785555 -- "domain selection list in login screen should be sorted alphabetically"
I was going to put the sort logic in the web apps, but it makes sense to just put it in the backend, specifically in GetDomainListQuery. (There is already a sort there, but it needs to be tweaked to put "internal" always last.) This would affect non-webapp clients (REST API), so I want to make sure there are no objections. Unit tests pass and it seems to work fine (screen attached).
Any objections?
Thanks,
Greg
Greg Sheremeta
Red Hat, Inc.
Sr. Software Engineer, RHEV
Cell: 919-807-1086
gshereme(a)redhat.com
------=_Part_3762588_2036386564.1377865608371
Content-Type: image/png; name="login domain selectbox.png"
Content-Disposition: attachment; filename="login domain selectbox.png"
Content-Transfer-Encoding: base64
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
------=_Part_3762588_2036386564.1377865608371--
11 years, 2 months
[Engine-devel] Opimizing Postgres Stored Procedures
by Eli Mesika
Hi
I had merged the following patch
http://gerrit.ovirt.org/#/c/17962/
This patch introduce usage of the IMMUTABLE, STABLE and STRICT keywords in order to boost performance of the Postgres SPs.
Please make sure that your current/and future DB scripts applied that.
Volatility
----------
* A function should be marked as IMMUTABLE if it doesn't change the database, and if it doesn't perform any lookups (even for database configuration values) during its operation.
* A function should be marked STABLE if it doesn't change the database, but might perform lookups (IMMUTABLE is preferable if function meets the requirements).
* A function doesn't need to be marked VOLATILE, because that's the default.
STRICTNESS
----------
A function should be marked STRICT if it should return NULL when it is passed a NULL argument, and then the function won't even be called if it is indeed passed a NULL argument.
I am available for any questions.
Thanks
Eli
11 years, 2 months