<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Dec 25, 2017 at 8:29 PM, Michal Skrivanek <span dir="ltr"><<a href="mailto:michal.skrivanek@redhat.com" target="_blank">michal.skrivanek@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div class="gmail-HOEnZb"><div class="gmail-h5"><br>
<br>
> On 25 Dec 2017, at 18:41, Juan Hernández <<a href="mailto:jhernand@redhat.com">jhernand@redhat.com</a>> wrote:<br>
><br>
> On 12/25/2017 05:46 PM, Yaniv Kaul wrote:<br>
>> While trying to add an instance type, I fail with the error:<br>
>> Operation Failed". Fault detail is "[Cannot add Template. Memory size<br>
>> (1024MB) cannot exceed maximum memory size (0MB).]<br>
>> The code is taken from the example in the SDK, so I'm not sure what I'm<br>
>> doing wrong here.<br>
>> Code:<br>
>> instance_types_service.add(<br>
>> types.InstanceType(<br>
>> name='myinstancetype',<br>
>> description='My instance type',<br>
>> memory=1 * 2**30,<br>
>> high_availability=types.<wbr>HighAvailability(<br>
>> enabled=True,<br>
>> ),<br>
>> cpu=types.Cpu(<br>
>> topology=types.CpuTopology(<br>
>> cores=2,<br>
>> sockets=2,<br>
>> ),<br>
>> ),<br>
>> ),<br>
>> )<br>
>> engine.log:<br>
>> 2017-12-25 10:58:19,825-05 INFO<br>
>> [org.ovirt.engine.core.bll.<wbr>AddVmTemplateCommand] (default task-13)<br>
>> [265ff704-d89f-471b-8207-<wbr>fc0e1b8816fd] Lock Acquired to object<br>
>> 'EngineLock:{exclusiveLocks='[<wbr>myinstancetype=TEMPLATE_NAME,<br>
>> 703e1265-e160-4a76-82e6-<wbr>06974156b7b9=TEMPLATE]', sharedLocks='[]'}'<br>
>> 2017-12-25 10:58:19,831-05 WARN<br>
>> [org.ovirt.engine.core.bll.<wbr>AddVmTemplateCommand] (default task-13)<br>
>> [265ff704-d89f-471b-8207-<wbr>fc0e1b8816fd] Validation of action 'AddVmTemplate'<br>
>> failed for user admin@internal-authz. Reasons:<br>
>> VAR__ACTION__ADD,VAR__TYPE__<wbr>VM_TEMPLATE,ACTION_TYPE_<wbr>FAILED_MAX_MEMORY_CANNOT_BE_<wbr>SMALLER_THAN_MEMORY_SIZE,$<wbr>maxMemory<br>
>> 0,$memory 1024<br>
>> 2017-12-25 10:58:19,832-05 INFO<br>
>> [org.ovirt.engine.core.bll.<wbr>AddVmTemplateCommand] (default task-13)<br>
>> [265ff704-d89f-471b-8207-<wbr>fc0e1b8816fd] Lock freed to object<br>
>> 'EngineLock:{exclusiveLocks='[<wbr>myinstancetype=TEMPLATE_NAME,<br>
>> 703e1265-e160-4a76-82e6-<wbr>06974156b7b9=TEMPLATE]', sharedLocks='[]'}'<br>
>> 2017-12-25 10:58:19,839-05 DEBUG<br>
>> [org.ovirt.engine.core.common.<wbr>di.interceptor.<wbr>DebugLoggingInterceptor]<br>
>> (default task-13) [265ff704-d89f-471b-8207-<wbr>fc0e1b8816fd] method: runAction,<br>
>> params: [AddVmTemplate,<br>
>> AddVmTemplateParameters:{<wbr>commandId='179df9ed-209c-4882-<wbr>a19a-b76a4fe1adb8',<br>
>> user='null', commandType='Unknown'}], timeElapsed: 33ms<br>
>> 2017-12-25 10:58:19,846-05 ERROR<br>
>> [org.ovirt.engine.api.restapi.<wbr>resource.<wbr>AbstractBackendResource] (default<br>
>> task-13) [] Operation Failed: [Cannot add Template. Memory size (1024MB)<br>
>> cannot exceed maximum memory size (0MB).]<br>
>> TIA,<br>
>> Y.<br>
><br>
> I think this is related to the new `memory_policy.max` attribute that was introduced in 4.1. I think that for virtual machines it has a default value so that it isn't necessary to explicitly provide it. It may not have a default value fro instance types. Can you try adding this to the request to create the instance type?<br>
><br>
> memory_policy=types.<wbr>MemoryPolicy(<br>
> max=1 * 2**30<br>
> )<br>
><br>
> Then try again. If it works I think that we need to fix the engine so that it assigns a default value, like it does for virtual machines.<br>
<br>
</div></div>The default for VMs comes from the Blank template. There’s no template for instance types, so it always needs to be provided<br></blockquote><div><br></div><div>That's true in general, but not for max-memory. Let the blank template be defined with memory=1024mb and max-memory=4096mb. When a request to add a VM based on the blank template with memory=8192mb arrives with no max-memory specified, we cannot take the value of max-memory from the template since then the operation will fail (as the memory exceeds max memory)</div><div>When adding a VM from rest-api and max-memory is not specified then we set max-memory = memory * 4 [1, 2].</div><div>We can do the same for templates/instance types..</div><div><br></div><div>[1] <a href="https://github.com/oVirt/ovirt-engine/blob/master/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java#L163">https://github.com/oVirt/ovirt-engine/blob/master/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java#L163</a></div><div>[2] and that logic is problematic since the result may exceed the max memory limitation defined for the OS in os-info and then the operation will fail..</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<div class="gmail-HOEnZb"><div class="gmail-h5"><span style="color:rgb(34,34,34)"> </span><br></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div class="gmail-HOEnZb"><div class="gmail-h5">
> ______________________________<wbr>_________________<br>
> Devel mailing list<br>
> <a href="mailto:Devel@ovirt.org">Devel@ovirt.org</a><br>
> <a href="http://lists.ovirt.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.ovirt.org/<wbr>mailman/listinfo/devel</a><br>
><br>
><br>
<br>
______________________________<wbr>_________________<br>
Devel mailing list<br>
<a href="mailto:Devel@ovirt.org">Devel@ovirt.org</a><br>
<a href="http://lists.ovirt.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.ovirt.org/<wbr>mailman/listinfo/devel</a></div></div></blockquote></div><br></div></div>