Earlier  
Posted Nick Remark
#openstack-nova - 2019-09-05
21:57:03 efried_afk dansmith: vpmem json blob => hyp-specific ovo (https://review.opendev.org/#/c/678448/), you said to follow the example of LiveMigrateData.
21:57:03 efried_afk So I think that means they should make a base class (e.g. ResourceMetadata) and make LibvirtPMEMDevice (https://review.opendev.org/#/c/678453/19/nova/objects/resource.py) a subclass thereof.
21:57:03 efried_afk I can't see where LiveMigrateData is a field in another ovo, though; is it kosher to make Resource.metadata of type ResourceMetadata even though IRL it will always be a *subclass*?
21:57:39 openstackgerrit Matt Riedemann proposed openstack/nova master: Rename Claims resources to compute_node https://review.opendev.org/679470
21:58:13 dansmith yeah, although you might have to register the base to make that work, which I don't think was required for the MD case because we always sent the child and not the parent, IIRC, but it's been a whiel
21:58:33 efried_afk what does "register the base" mean?
21:59:40 mriedem @obj_base.NovaObjectRegistry.register
22:00:10 mriedem note that the base LiveMigrateData is not registered
22:00:11 mriedem https://github.com/openstack/nova/blob/master/nova/objects/migrate_data.py#L112
22:00:16 mriedem b/c everything uses the subclasses
22:00:25 dansmith right that ^
22:00:48 dansmith efried: ovo requires a shared registry of the schemas on either side to ensure proper versioning
22:00:50 efried everything will use the subclass in this case too... unless you mean that the Resource object will "use" the base class?
22:00:55 mriedem so i can't do something like this in my driver: migrate_data = objects.LiveMigrateData(all_my_cool_shenanigans={...})
22:01:07 dansmith efried: the difference is the inclusion in a field, which has to specify an object in the registry, IIRC
22:01:14 dansmith which is why it's by name and not by reference
22:01:17 efried okay, cool.
22:03:58 efried dansmith, mriedem: Did I say it right? https://review.opendev.org/#/c/678448/15/nova/objects/resource.py@36
22:05:01 mriedem i don't know that the chinese are going to understand the south park underpants gnomes reference
22:05:20 efried I've never actually even seen that thing
22:05:33 efried indirect meme reference culture
22:05:52 dansmith efried: commented
22:05:55 efried I could find it if I wanted
22:06:33 efried dansmith: thanks. I think nullable because not all ResourceZ are going to have metadata.
22:06:41 mriedem then don't set the field
22:06:44 dansmith efried: yeah, that's the wrong answer
22:06:47 efried ah
22:07:25 efried unset vs value of None vs object with no fields initialized vs object with fields set to None vs .....
22:07:26 dansmith I thought I already commented about this in this patch, but maybe I was overwhelmed by the larger sin of using a string here and it didn't come through
22:07:42 mriedem i need to make dan a shirt that has nullable=True on some object field with the circle bar banned icon on it
22:07:49 dansmith I'd wear it
22:08:17 dansmith efried: I suspect the right thing there is to always have a metadata object in that field (hence never None), with either fields set appropriately empty or whatever else,
22:08:26 dansmith but it's hard to tell what the right thing is because it's not defined there
22:08:43 dansmith that's probably why I didn't comment, because I don't know WHAT that is, other than a dumping ground for blobs
22:10:03 mriedem it's this thing i think https://review.opendev.org/#/c/678453/19/nova/objects/resource.py
22:10:03 efried it's for hypervisor-specific, resource-specific metadata for a Resource. And not all ResourceZ are going to have any. It would seem like a lot of work to a) make sure to set the value b) to an empty object, meaning c) you have to make sure the object type can be "empty", whatever that means, etc.
22:10:12 mriedem used here https://review.opendev.org/#/c/678454/19/nova/virt/libvirt/driver.py@6934
22:10:33 mriedem efried: not empty, just don't set the field
22:10:44 efried so does "nullable=False" just mean you're not allowed to set it to None?
22:10:48 mriedem correct
22:10:53 efried and that's the default behavior.
22:11:01 mriedem yeah
22:11:09 dansmith correct
22:11:20 efried and you check with
22:11:20 efried if 'metadata' in res_obj:
22:11:20 efried ?
22:11:23 dansmith if there's really a reason to have it =None then it _should_ be nullable,
22:11:43 dansmith but for something like this, the presence of the metadata object isn't the thing you want, it's what is inside
22:11:44 mriedem efried: yup
22:12:00 dansmith so if you always make these things nullable=True, then you always have to check first
22:12:11 dansmith like, if that was what it was intended to be in the first place, you'd have to do:
22:12:42 dansmith if foo.metadata: if parse(foo.metadata): do_something(foo.metadata)
22:12:49 dansmith when really you want to just be able to do something like
22:13:03 dansmith if foo in resources.metadata
22:13:05 dansmith or something like that
22:13:15 dansmith take a degree of freedom out of the thing by always making it present
22:13:22 mriedem if you like mega conditionals https://github.com/openstack/nova/blob/master/nova/scheduler/host_manager.py#L760
22:13:49 efried egads
22:13:50 mriedem RequestSpec is i think the king of "if a and b and c and not d"
22:13:51 dansmith because later when you have two versions out there, ambiguity is the enemy
22:15:21 efried cool, thanks for the primer. This was easier than having 12h between each call & response.
22:15:40 dansmith not for me
22:15:57 mriedem time to start a versioned objects FAQs doc
22:16:01 dansmith easier to ignore with 12h latency
22:16:37 dansmith on my blog, which is apparently the canonical source for nova RPC information
22:16:51 openstackgerrit Adam Spiers proposed openstack/nova master: Apply SEV-specific guest config when SEV is required https://review.opendev.org/644565
22:16:59 mriedem heh, you know it
22:17:36 mriedem pulling stuff from slides 5-8 here (which is a lot based on the blog) into nova docs might be good to start https://docs.google.com/presentation/d/1YeXlL1EPaZTRkbJDywJKBrugXz-Amri3fIQk2ctOugs/edit?usp=sharing
22:18:17 efried dustinc: you around?
22:18:35 mriedem note slide 11 :)
22:18:47 dustinc efried: yeah what’s up?
22:18:57 efried dustinc: I think node.list patch has a regression -- did you see https://review.opendev.org/#/c/656027/29/nova/virt/ironic/driver.py@690
22:19:14 dansmith mriedem: lol
22:19:41 openstackgerrit Adam Spiers proposed openstack/nova master: Reject live migration and suspend on SEV guests https://review.opendev.org/680158
22:19:51 efried dustinc: if that's the case, it means we're missing test coverage in the CI job and we should add it.
22:20:17 dustinc efried: haven’t really been paying attention to those last two with the providers.yaml work. I will check it out.
22:20:37 efried dustinc: this is one already merged, so it takes priority over feature work.
22:21:19 efried dustinc: on inspection, it makes sense I think, because we're asking the API for the instance_id field instead of the instance_uuid field.
22:21:36 efried this is a pain point with the sdk translation of uuid->id everywhere.
22:21:48 efried mordred: fyi
22:22:17 dustinc efried oh I see, on it now
22:22:25 efried so basically, queries *into* the API need to say uuid, but processing the results on the way out need to say id.
22:22:26 efried I think.
22:22:54 efried dustinc: You may want to ask for help in -ironic to add coverage to that CI job. Unless you already have it wired. I wouldn't know where to begin.
22:22:58 openstackgerrit Adam Spiers proposed openstack/nova master: Enable booting of libvirt guests with AMD SEV memory encryption https://review.opendev.org/666616
22:23:18 aspiers efried: OK, I'm done for the last time ... until next time ^^^
22:23:26 aspiers couple of very simple new patches in there
22:24:14 aspiers and more thorough tests than ever
22:27:21 efried dustinc: looks like it may be just tempest with configs to set up the ironic driver; which would mean that tempest in general doesn't exercise list_instances...
22:39:59 openstackgerrit Matt Riedemann proposed openstack/nova master: doc: cleanup references to conductor doc https://review.opendev.org/680535
23:17:17 openstackgerrit Eric Fried proposed openstack/nova master: Bump min for oslo.service & .privsep to fix SIGHUP https://review.opendev.org/679974
23:28:16 aspiers Is it possible to configure zuul to fail early if certain jobs fail?
23:28:54 aspiers For example 680296,1 has already failed openstack-tox-pep8 but all the other jobs are still running, taking up valuable CI resources
23:29:17 aspiers In fact there's a large CI backlog which would probably vanish quickly if this were possible
23:31:21 aspiers Hmm, seems to be possible via pipeline.failure
23:36:19 openstackgerrit Nathan Kinder proposed openstack/nova master: Allow TLS ciphers/protocols to be configurable for console proxies https://review.opendev.org/679502
23:45:56 dustinc efried: You still online?
23:51:17 openstackgerrit Dustin Cowles proposed openstack/nova master: Use fields="instance_uuid" when calling Ironic API https://review.opendev.org/680542
23:52:26 openstackgerrit Dustin Cowles proposed openstack/nova master: Use fields="instance_uuid" when calling Ironic API https://review.opendev.org/680542
#openstack-nova - 2019-09-06
00:45:28 brinzhang amotoki: What do you mean https://review.opendev.org/#/c/673485/3/novaclient/v2/shell.py@2609 ?

Earlier   Later