On 27/10/17 16:51, Ivan Necas wrote: > Hi, > > I've not found a compute resource plugin, that would extend the > network interface in this way, which is probably the reason > why you're hitting it first. I believe it's the correct way, but gap > in the foreman core. Hm. The change you suggested doesn't look to complicated, I'll see if can't implement that. I don't know when I'll get to it, though, since I will also use your workaround. > I know it's sub-optimal, but wouldn't be an option to re-use some of > the existing params allowed for > compute attributes on network? See > https://github.com/theforeman/foreman/blob/18780e5cb7f7d0fbcf97b99426217730b1a54635/app/controllers/concerns/foreman/controller/parameters/nic_base.rb#L27 Yes, I guess that'll have to do for now > -- Ivan Thanks for your help and suggestions!
-- jbm > > On Wed, Oct 25, 2017 at 6:06 PM, jbm <[email protected]> wrote: >> On 24/10/17 17:42, Ivan Necas wrote: >>> On Tue, Oct 24, 2017 at 3:16 PM, jbm <[email protected]> wrote: >>>> On 24/10/17 13:20, Ivan Necas wrote: >>>>> Hi, >>>>> >>>>> I was hitting this issue recently in the rex plugin, I needed to >>>>> change the way the param is whitelisted, >>>>> from using an array, to pass it via a block like this: >>>>> >>>>> https://github.com/theforeman/foreman_remote_execution/pull/276 >>>> I changed the portion to >>>> >>>> parameter_filter Nic::Interface do |ctx| >>>> ctx.permit compute_attributes: [:my_param] >>>> end >>>> >>>> but it still doesn't work. I also tried `ctx.permit :my_param', which >>>> worked neither. >>>> >>>> I'm not sure if I transfered your solution correctly to my usecase, as you >>>> seem to be passing the NIC parameters differently than I do (I do it in >>>> app/views/compute_resources_vms/form/powervm/_network.html.erb, you in >>>> app/views/overrides/nics/_execution_interface.html.erb). >>>>> Also, make sure you're testing it with the version of Foreman that has >>>>> this patch >>>>> https://github.com/theforeman/foreman/pull/4886, as it needs it to >>>>> work properly. >>>> I'm using the latest develop branch, so this is included >>> Oh, I haven't realized you need to put it under the >>> `compute_attributes`. In that case, I think >>> you would need to convert the `compute_attributes` in >>> (https://github.com/theforeman/foreman/blob/c6760930cf08a4b584b75df8a621092dd787da01/app/controllers/concerns/foreman/controller/parameters/host_base.rb#L42) >>> to use filter >>> (such as Nic::ComputeAttribute), similarly as we have in >>> the host >>> (https://github.com/theforeman/foreman/blob/c6760930cf08a4b584b75df8a621092dd787da01/app/controllers/concerns/foreman/controller/parameters/host_base.rb#L42) >>> and then, define the parameter_filter on `Nic::ComputeAttribute`) >> Just so I understand you right: Are you saying that it is a missing feature >> in foreman that one can not add custom parameters in the >> `compute_attributes'? If so, did I understand the "How to Create a Plugin" >> guide wrong? Is `compute_attributes' *not* the correct way to add custom >> provider specific parameters to the NIC creation (by adding them to >> `app/views/compute_resources_vms/form/foreman_powervm/_network.html.erb')? >> What is the correct way? >> >> If the only way to do this is to implement your suggested change in foreman, >> I will do that, but since I don't know how fast I could get this patch to >> the production system I want to run my plugin on I'd prefer a solution that >> works without altering foreman and would be happy for a suggestion. >> >> -- >> jbm >>> - Ivan >>> >>>>> -- Ivan >>>>> >>>>> On Thu, Oct 12, 2017 at 7:24 PM, jbm <[email protected]> wrote: >>>>>> Hi, >>>>>> >>>>>> I'm currently working on a Foreman plugin to use IBM PowerVM instances as >>>>>> compute resources, and have run into the following problem when >>>>>> implementing >>>>>> the network interface form: >>>>>> >>>>>> Following the guide at [1], I put my additional network parameters in >>>>>> `foreman_powervm/app/views/compute_resources_vms/form/foreman_powervm/_network.html.erb', >>>>>> like this: >>>>>> >>>>>> <%= number_f f, :my_param >>>>>> :label => _("Foo") %> >>>>>> >>>>>> I now expected :my_param to be available in >>>>>> ForemanPowerVM::PowerVM#create_vm (which is my subclass of >>>>>> ComputeResource), >>>>>> in the form of args['interfaces_attributes'][i]['my_param'], but it is >>>>>> not >>>>>> there (even though the foreman log shows that my_param was in fact >>>>>> recieved >>>>>> as a POST parameter). >>>>>> >>>>>> So, as described in [2], I added >>>>>> >>>>>> parameter_filter Nic::Interface, compute_attributes: [:my_param] >>>>>> >>>>>> to the Plugin.register block in my Engine class, but to no avail. >>>>>> >>>>>> >>>>>> After a bit of digging around in the foreman code I managed to "fix" >>>>>> this by >>>>>> adding :my_param to the :compute_attributes entry in >>>>>> Foreman::Controller::Parameters::NicBase#add_nic_base_params_filter (file >>>>>> `foreman_app/controllers/concerns/foreman/controller/parameters/nic_base.rb:27'). >>>>>> >>>>>> >>>>>> How do I keep my parameter from being filtered without altering foreman >>>>>> code? What is the correct way to register parameters, as parameter_filter >>>>>> doesnt seem to work? >>>>>> >>>>>> >>>>>> Thanks for reading and hopefully your help! >>>>>> >>>>>> >>>>>> [1]: >>>>>> http://projects.theforeman.org/projects/foreman/wiki/How_to_Create_a_Plugin#Required-views >>>>>> [2]: >>>>>> http://projects.theforeman.org/projects/foreman/wiki/Strong_parameters >>>>>> >>>>>> -- >>>>>> jbm >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google Groups >>>>>> "foreman-dev" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, send an >>>>>> email to [email protected]. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>> -- >>>> You received this message because you are subscribed to the Google Groups >>>> "foreman-dev" group. >>>> To unsubscribe from this group and stop receiving emails from it, send an >>>> email to [email protected]. >>>> For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "foreman-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
