| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2017-04-27 | |||
| 13:59:32 | mriedem | ok i see this guy https://github.com/openstack/nova/blob/master/nova/compute/api.py#L4748 | |
| 13:59:32 | mriedem | yeah | |
| 13:59:39 | mriedem | ugh | |
| 13:59:55 | mriedem | so this is kind of like the same issue we have that prompted the need for using uuids in the services and hypervisors APIs | |
| 14:00:07 | dansmith | it's fairly dumb because this only affects ironic and only in that kindof silly case, but.. | |
| 14:00:12 | mriedem | and you had to workaround in the HostAPI code for now | |
| 14:00:23 | mriedem | so i think we do the same thing you already did in the HostAPI to find a service/host | |
| 14:00:33 | dansmith | why is it the same? | |
| 14:00:40 | mriedem | iterate the cells until we find a match, if we don't find one, 404, if we find multiple, 409 | |
| 14:00:43 | dansmith | just that we don't know the cell by the uuid you mean I guess | |
| 14:01:05 | dansmith | well, I don't know that we need to handle the multiple case necessarily | |
| 14:01:30 | dansmith | if you have multiple compute services with the same hostname you have already messed up your mappings anyway | |
| 14:01:40 | dansmith | we did the 409 because we were deleting something, | |
| 14:01:46 | mriedem | i'm talking about this https://github.com/openstack/nova/blob/master/nova/compute/api.py#L4413 | |
| 14:01:48 | dansmith | but I think in this case it's okay to take the first and stop looping | |
| 14:01:58 | dansmith | yeah I know | |
| 14:02:07 | zioproto | mriedem: I am looking at the database, select connection_info from block_device_mapping where instance_uuid= ... | |
| 14:02:16 | zioproto | mriedem: what exactly should I check ? | |
| 14:02:41 | zioproto | everything looks exactly the same | |
| 14:02:44 | zioproto | except the volume uuid | |
| 14:05:03 | mriedem | dansmith: not sure what you mean by "but I think in this case it's okay to take the first and stop looping" | |
| 14:05:26 | mriedem | your #2 is start looping the cells looking for the service by hostname right? | |
| 14:05:33 | mriedem | if we find a match we use that cell context | |
| 14:05:39 | dansmith | mriedem: you *will* have duplicate service ids by no fault of your own because it's autoincrement.. you only have duplicate service hostnames if you're doing it wrong | |
| 14:05:50 | dansmith | mriedem: so I think it's okay to not do the full scan dupe check if you're looking up by hostname | |
| 14:06:05 | mriedem | this came up in the spec and i think johnthetubaguy said duplicate hostnames is a thing | |
| 14:06:09 | zioproto | mriedem: in the xml file both disks have this same line | |
| 14:06:12 | zioproto | <address type='drive' controller='0' bus='0' target='0' unit='0'/> | |
| 14:06:27 | mriedem | zioproto: that seems like the cause then | |
| 14:06:34 | dansmith | mriedem: can't be, otherwise our HostMapping doesn't work :) | |
| 14:06:39 | zioproto | but this xml file is generated by nova, correct ? | |
| 14:06:58 | mriedem | zioproto: yes, would have to lookup the code | |
| 14:07:04 | mriedem | dansmith: let me check the spec | |
| 14:07:10 | mriedem | because one of these APIs takes hostname and i remember talking about htis | |
| 14:07:11 | mriedem | *this | |
| 14:08:07 | dansmith | mriedem: we do all our rpc routing by hostname, have a unique constraint there, etc | |
| 14:08:34 | dansmith | mriedem: if we had dupes, we'd be sending rpc messages to the wrong hosts all over the place | |
| 14:08:43 | mriedem | dansmith: but in a cells v1 world your unique constraint is only scoped to the cell | |
| 14:08:46 | mriedem | right? | |
| 14:08:58 | zioproto | mriedem: most likely this machine booted in Liberty and not in Mitaka it cannot boot anymore :( | |
| 14:09:03 | dansmith | mriedem: it's all mirrored up to the top level db, where there is a constraint | |
| 14:09:04 | zioproto | mriedem: should I open a bug | |
| 14:09:06 | zioproto | ? | |
| 14:09:22 | mriedem | zioproto: i'm not sure what liberty vs mitaka has to do with this | |
| 14:09:23 | dansmith | mriedem: i.e. all the services are in the cell dbs and in the main unified one at the top | |
| 14:09:37 | mriedem | dansmith: ok, well, i'm just telling you what i was told | |
| 14:09:47 | mriedem | you'll have to get the details from johnthetubaguy's horses mouth | |
| 14:09:49 | dansmith | mriedem: anyway, finish your convo with zioproto, we can argue about this detail in the review | |
| 14:12:04 | mriedem | dansmith: ok i think i remember now | |
| 14:12:09 | mriedem | it's the PUT /os-services APIs | |
| 14:12:23 | mriedem | https://developer.openstack.org/api-ref/compute/?expanded=add-host-detail,enable-scheduling-for-a-compute-service-detail#enable-scheduling-for-a-compute-service | |
| 14:12:28 | mriedem | they don't take an id | |
| 14:12:31 | mriedem | the body contains a host | |
| 14:12:35 | mriedem | *hostname | |
| 14:12:54 | mriedem | that's when i started asking about if we could have collisions there and john said we could | |
| 14:13:06 | mriedem | don't ask me how | |
| 14:13:22 | dansmith | mriedem: okay I totally don't understand how, but I'll put this up and hopefully he'll show up | |
| 14:13:37 | mriedem | anywho, as part of the spec we're collapsing those garbage PUT APIs into a single PUT with a service uuid in the path | |
| 14:13:57 | mriedem | so | |
| 14:13:58 | mriedem | PUT /os-services/disable { "host": "host1", "binary": "nova-compute" } | |
| 14:14:00 | mriedem | becomes | |
| 14:14:04 | mriedem | PUT /os-services/{service_id} { "status": "disabled" } | |
| 14:14:12 | mriedem | where service_id is a uuid | |
| 14:14:28 | mriedem | having said all that, i think we're fine with what you're proposing :) | |
| 14:14:39 | mriedem | we == me and the turd in my pocket | |
| 14:15:02 | dansmith | ack, yep | |
| 14:42:16 | openstackgerrit | Dan Smith proposed openstack/nova master: re-Allow adding computes with no ComputeNodes to aggregates https://review.openstack.org/460616 | |
| 14:54:22 | mriedem | hmm, isn't it possible to override a mock? | |
| 14:54:35 | mriedem | like if the test class does a global mock of something but a test case wants to override it | |
| 14:54:49 | mriedem | i thought just decorating the test case would override the mock from the test class... | |
| 14:54:52 | mriedem | but apparently not | |
| 14:58:35 | artom | mriedem, maybe explicit assignment will work? | |
| 14:58:58 | artom | nova.stuff.moar = mock.Mock() | |
| 14:59:21 | zioproto | mriedem: in the table block_device_mapping what is the column no_device for ? for one attachment I have value 0 and for the other NULL | |
| 15:03:20 | openstackgerrit | Béla Vancsics proposed openstack/nova master: [WIP] Transform aggregate.update_metadata notification https://review.openstack.org/460625 | |
| 15:03:37 | mriedem | zioproto: good question | |
| 15:03:47 | mriedem | zioproto: let me consult my tome of bdm fields | |
| 15:08:12 | mriedem | not doc'ed in the api | |
| 15:08:24 | mriedem | schema says it could be a dict in the api? | |
| 15:08:38 | mriedem | but it's treated like a boolean, | |
| 15:08:43 | mriedem | it's definitely some legacy bdmv1 thing | |
| 15:09:15 | mriedem | https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/schemas/block_device_mapping_v1.py#L34 | |
| 15:10:10 | mriedem | https://github.com/openstack/nova/blob/master/nova/compute/api.py#L2969 | |
| 15:14:15 | mriedem | boolean in the object model https://github.com/openstack/nova/blob/master/nova/objects/block_device.py#L85 | |
| 15:14:47 | mriedem | boolean in the data model https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/models.py#L622 | |
| 15:16:31 | mriedem | zioproto: i'm not really sure what the hell it means, | |
| 15:16:40 | mriedem | but it looks like maybe your customer did a swap volume operation on that instance? | |
| 15:16:48 | mriedem | because that sets 'no_device': None | |
| 15:16:49 | mriedem | in the bdm | |
| 15:18:06 | zioproto | possible | |
| 15:18:06 | zioproto | also | |
| 15:18:09 | zioproto | I dont understand | |
| 15:18:15 | zioproto | why when I attach this volume | |
| 15:18:20 | zioproto | the device is /dev/hda | |
| 15:18:26 | zioproto | this is the attachment | |
| 15:18:34 | zioproto | where this /dev/hda is generated from ? | |
| 15:19:05 | mriedem | zioproto: should be from nova/virt/libvirt/blockinfo.py i think | |
| 15:19:59 | mriedem | see find_disk_dev_for_disk_bus | |
| 15:23:33 | mriedem | mdbooth: god i'd love to remove all of this bdm v1 code | |
| 15:23:56 | mdbooth | mriedem: Hehe | |