On Mon, Dec 25, 2017 at 8:29 PM, Michal Skrivanek <
michal.skrivanek(a)redhat.com> wrote:
> On 25 Dec 2017, at 18:41, Juan Hernández <jhernand(a)redhat.com> wrote:
>
> On 12/25/2017 05:46 PM, Yaniv Kaul wrote:
>> While trying to add an instance type, I fail with the error:
>> Operation Failed". Fault detail is "[Cannot add Template. Memory size
>> (1024MB) cannot exceed maximum memory size (0MB).]
>> The code is taken from the example in the SDK, so I'm not sure what I'm
>> doing wrong here.
>> Code:
>> instance_types_service.add(
>> types.InstanceType(
>> name='myinstancetype',
>> description='My instance type',
>> memory=1 * 2**30,
>> high_availability=types.HighAvailability(
>> enabled=True,
>> ),
>> cpu=types.Cpu(
>> topology=types.CpuTopology(
>> cores=2,
>> sockets=2,
>> ),
>> ),
>> ),
>> )
>> engine.log:
>> 2017-12-25 10:58:19,825-05 INFO
>> [org.ovirt.engine.core.bll.AddVmTemplateCommand] (default task-13)
>> [265ff704-d89f-471b-8207-fc0e1b8816fd] Lock Acquired to object
>> 'EngineLock:{exclusiveLocks='[myinstancetype=TEMPLATE_NAME,
>> 703e1265-e160-4a76-82e6-06974156b7b9=TEMPLATE]',
sharedLocks='[]'}'
>> 2017-12-25 10:58:19,831-05 WARN
>> [org.ovirt.engine.core.bll.AddVmTemplateCommand] (default task-13)
>> [265ff704-d89f-471b-8207-fc0e1b8816fd] Validation of action
'AddVmTemplate'
>> failed for user admin@internal-authz. Reasons:
>> VAR__ACTION__ADD,VAR__TYPE__VM_TEMPLATE,ACTION_TYPE_
FAILED_MAX_MEMORY_CANNOT_BE_SMALLER_THAN_MEMORY_SIZE,$maxMemory
>> 0,$memory 1024
>> 2017-12-25 10:58:19,832-05 INFO
>> [org.ovirt.engine.core.bll.AddVmTemplateCommand] (default task-13)
>> [265ff704-d89f-471b-8207-fc0e1b8816fd] Lock freed to object
>> 'EngineLock:{exclusiveLocks='[myinstancetype=TEMPLATE_NAME,
>> 703e1265-e160-4a76-82e6-06974156b7b9=TEMPLATE]',
sharedLocks='[]'}'
>> 2017-12-25 10:58:19,839-05 DEBUG
>> [org.ovirt.engine.core.common.di.interceptor.DebugLoggingInterceptor]
>> (default task-13) [265ff704-d89f-471b-8207-fc0e1b8816fd] method:
runAction,
>> params: [AddVmTemplate,
>> AddVmTemplateParameters:{commandId='179df9ed-209c-4882-
a19a-b76a4fe1adb8',
>> user='null', commandType='Unknown'}], timeElapsed: 33ms
>> 2017-12-25 10:58:19,846-05 ERROR
>> [org.ovirt.engine.api.restapi.resource.AbstractBackendResource]
(default
>> task-13) [] Operation Failed: [Cannot add Template. Memory size (1024MB)
>> cannot exceed maximum memory size (0MB).]
>> TIA,
>> Y.
>
> 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?
>
> memory_policy=types.MemoryPolicy(
> max=1 * 2**30
> )
>
> 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.
The default for VMs comes from the Blank template. There’s no template for
instance types, so it always needs to be provided
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)
When adding a VM from rest-api and max-memory is not specified then we set
max-memory = memory * 4 [1, 2].
We can do the same for templates/instance types..
[1]
https://github.com/oVirt/ovirt-engine/blob/master/backend/manager/modules...
[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..
_______________________________________________
> Devel mailing list
> Devel(a)ovirt.org
>
http://lists.ovirt.org/mailman/listinfo/devel
>
>
_______________________________________________
Devel mailing list
Devel(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/devel