03:03:04 <Sundar> #startmeeting openstack-cyborg 03:03:05 <openstack> Meeting started Wed Jun 5 03:03:04 2019 UTC and is due to finish in 60 minutes. The chair is Sundar. Information about MeetBot at http://wiki.debian.org/MeetBot. 03:03:06 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 03:03:08 <openstack> The meeting name has been set to 'openstack_cyborg' 03:03:16 <Sundar> #topic Roll call 03:03:36 <Sundar> #info Sundar 03:04:24 <Sundar> wangzhh, ikuo_o, Biwei: o/ 03:04:34 <yikun> #info yikun 03:04:41 <wangzhh> #info wangzhh 03:04:45 <ikuo_o> #info ikuo_o 03:04:47 <Sundar> Hi yikun 03:04:56 <Biwei> #info Biwei 03:04:58 <yikun> hey, Sundar 03:05:07 <Sundar> Agenda: https://wiki.openstack.org/wiki/Meetings/CyborgTeamMeeting#Agenda 03:05:13 <Sundar> ANything to add to that? 03:06:05 <Sundar> #topic Python cyborg client decision 03:06:10 <wangzhh> Coco said she has other bussiness. Will miss this meeting. 03:06:24 <Sundar> Please see the thread starting from http://lists.openstack.org/pipermail/openstack-discuss/2019-May/006543.html 03:06:41 <Sundar> wangzhh, thanks for letting us know 03:07:38 <Sundar> For the client, we have 2 options: write our own plugin (as many other projects seem to have done) or integrate with openstackclient repo (less work, but need to depend on the repo owners for reviews) 03:08:56 <Sundar> For the 2nd option, there are some guidelines and rules, which seem ok to me. But we have to discuss with the repo owners about their opinions 03:08:57 <xinranwang> Hi all 03:09:04 <xinranwang> #info xinranwang 03:09:11 <Sundar> Hi xinranwang 03:09:34 <Sundar> Writing a plugin may not be that bad, given the previous examples 03:09:39 <Sundar> What do you all think? 03:09:58 <yikun> So, we have to choose one from these two option? 03:10:46 <Sundar> yikun, do you have any other option? These seem like the 2 ways that are recommended or have precedents. We could do neither and write our own client -- but that is not recommended 03:10:47 <wangzhh> yikun, I think so. Do u have other suggestions? 03:10:56 <xinranwang> I think writing our own plugin is better 03:11:16 <ikuo_o> Thanks for summarizing. 03:11:26 <xinranwang> More indenpendency 03:11:34 <wangzhh> Yes, I also vote the first one. Agree with xinran. 03:12:31 <ikuo_o> It is better to write plugin, but I heard the option is not prepared by OSC. 03:12:48 <ikuo_o> Maybe my misunderstanding... 03:12:49 <yikun> OK, just want to sure any other way to complete, and I also vote to the 1st 03:12:58 <Sundar> ikuo_o: "option is not prepared by OSC" -- what do you mean? 03:13:33 <Sundar> OSC folks are not recomending against plugin -- they gave us the options. 03:13:52 <xinranwang> please also consider the case where cyborg can run as a standalone project 03:14:24 <Sundar> xinranwang: Sure, both options should be compatible with standalone usage 03:15:17 <ikuo_o> I see. I thought the plugin option is difficult for OSC side, but maybe my misunderstanding 03:15:17 <ikuo_o> If it is realized in other works, plugin is better I think. 03:15:19 <wangzhh> Sundar, do u have any example of these two options? Maybe two different projects with two options. 03:15:51 <xinranwang> We do have the cyborgclient repo with some V1 APIs implemented, right? 03:16:00 <Sundar> wangzhh: There are many examples of plugins: https://docs.openstack.org/python-openstackclient/pike/contributor/plugins.html 03:16:06 <wangzhh> Thx. 03:16:20 <Biwei> https://github.com/openstack/python-cyborgclient is that what you are talking about? Xinran 03:17:11 <xinranwang> Biwei: Ah yes, thanks 03:17:14 <Sundar> wangzhh: Some examples of commands integrated with OSC: https://github.com/openstack/python-openstackclient/tree/master/openstackclient 03:17:22 <yikun> wangzhh: I think the nova is 2nd(https://github.com/openstack/python-openstackclient/blob/master/setup.cfg), and placement is 1st example 03:17:23 <Sundar> Includes compute, identity, etc. 03:17:52 <yikun> https://github.com/openstack/osc-placement 03:17:52 <wangzhh> Cool, Thx Sundar, yikun. 03:18:13 <Sundar> xinranwang: The cyborg client for v1 API is neither: it uses osc-like syntax but is not a plugin 03:18:34 <yikun> Can we complete it by 1st way first, and we our client is stable, and we switch it to 2nd way? 03:18:48 <Sundar> ikuo_o: IIUC, you are also voting for plugin? or are you still considering? 03:18:51 <yikun> Can we complete it by 1st way first, and when our client is stable, and we switch it to 2nd way? 03:19:15 <ikuo_o> Sundar: I vote plugin. 03:19:19 <Sundar> yikun: What would motivate us to switch like that? 03:20:03 <yikun> We need +2+a right at first, because we perhaps frequently at first version. 03:20:04 <xinranwang> Is there any necessity to switch to 2nd way? 03:20:33 <yikun> xinranwang: I think the only reason is sundar mentioned, the osc team want 2nd way. - -# 03:21:01 <Sundar> OK. Shall we say it is unanimously agreed that we will go with the plugin option (at least for now)? 03:21:21 <xinranwang> yikun: lol 03:21:26 <ikuo_o> ok 03:21:42 <xinranwang> Sundar: I am fine with 1st one 03:21:45 <Biwei> yes, plugin sounds good 03:22:15 <Sundar> #agreed Cyborg client v2 shall be written as a osc plugin. It was previously decided that it will use the openstack SDK. 03:22:25 <Sundar> Thanks, Biwei and all 03:22:45 <yikun> +1, and I think the placement repo would be a good example for us, https://github.com/openstack/osc-placement 03:22:53 <Sundar> #topic Cyborg API fixtures in Nova 03:23:08 <Sundar> Please see Line 409 in https://review.opendev.org/#/c/603955/13/specs/train/approved/nova-cyborg-interaction.rst,unified 03:23:32 <yikun> #link https://review.opendev.org/#/c/603955/13/specs/train/approved/nova-cyborg-interaction.rst@409 03:23:46 <Sundar> Many Nova developers have asked for a functional test in Nova which will call fake CYborg API. This is not the same as a fake CYborg driver, which we discussed before 03:24:35 <Sundar> IIUC, it is enough to do tempest CI with real hardware (no fake driver needed). That is already driven by Xinran and Biwei 03:25:18 <Sundar> But it seems we still need to an upstream CI, not 3rd party CI, which can be a Cyborg API fixture 03:25:34 <Sundar> First, does anybody have any questions on that? 03:26:06 <Biwei> what do you mean by upstream CI? 03:26:25 <Biwei> and 3rd party CI 03:26:55 <ikuo_o> I want to know those too. 03:27:30 <Sundar> 3rd party CI involves equipment from a company outside of OpenStack open infra (Zuul). Upstream CI means that it is all in ZUul, maintained by the foundation, not another company 03:27:50 <Sundar> For example, Intel may set up a FPGA-based CI and integrate that with Zuul: that's 3rd party CI 03:28:17 <Sundar> If we have a CI running in a VM with devstack, that would be upstream 03:28:24 <Sundar> Good? 03:29:10 <yikun> I guess the comments from matt was talking about is add cyborg api fixture in nova test code? 03:29:25 <yikun> Like something, the placement done: https://github.com/openstack/nova/blob/master/nova/tests/functional/fixtures.py#L79-L90 03:29:30 <Sundar> yikun: Yes 03:29:59 <Sundar> I think Nova developers are coming from the historical experience that 3rd party hardware/CI sometimes beaks, and may take time to fix. 03:30:06 <Sundar> *breaks 03:30:38 <Sundar> A non-hardware-dependent CI is easier to maintain by the community and more reliable, even if it is not an end-to-end test 03:30:51 <Biwei> ok I see 03:30:55 <xinranwang> I understand what 3rd parth CI do, but I am confused about what upstream CI do exactly 03:31:24 <xinranwang> is it used for let nova call fake Cyborg API? 03:31:37 <Sundar> xinranwang: They are functional or tempest tests that do not rely on specialize d hardware 03:32:07 <Sundar> Yes, when Nova patches are submitted, they will automatically run tests that will simulate caling Cyborg to get device profiles and ARQs 03:32:43 <Sundar> The functional test fixture will return some values without actually calling Cyborg 03:33:07 <Sundar> You could think of it as mocking CYborg API 03:33:12 <xinranwang> Ok, so no more fake driver required in upstream CI, just simulate API layer and return right data? 03:33:19 <Sundar> Yes 03:33:27 <ikuo_o> Sundar: do you mean we should make upstream CI instead the CI by Xinran and Biwei? 03:33:53 <xinranwang> Sundar: got it, thanks 03:34:02 <Sundar> ikuo_o: Xinran/Biwei will work on real hardware i.e. 3rd party CI 03:34:12 <Biwei> that sounds like a different effort from the tempest plugin. Do we need both? Sundar 03:34:26 <xinranwang> I think we need both. ;) 03:34:34 <Biwei> Oh got ya 03:34:44 <Sundar> If we do a fake Cyborg driver, we will be doing tempest tests 2 ways, which seems redundant. 03:35:02 <ikuo_o> I see. 03:35:28 <Sundar> The downside is that the tempest CI will test only FPGAs, not GPUs or anything else 03:35:47 <Sundar> The common Cyborg code will not be exercised by 3rd party tempest CI, as planned now 03:36:08 <Sundar> Sorry -- badly phrased 03:36:26 <Sundar> The Cyborg code for GPUs and other devices will not be tested by 3rd party tempest CI 03:38:27 <ikuo_o> Does FPGA mean Intel FPGA? 03:38:42 <Sundar> Yes 03:38:59 <Sundar> Depending on your interest, we could push for a fake GPU/generic driver (with tempest) OR fake Cyborg API (functional test) 03:39:07 <Sundar> No need for both IMHO 03:40:04 <Sundar> With tempest, bugs in Cyborg will break Nova tests. 03:40:16 <Sundar> But, of course, we will not have any bugs ;) 03:41:26 <ikuo_o> Thanks. should we choose the two option (fake GPU/generic driver (with tempest) OR fake Cyborg API (functional test)) now? 03:41:41 <xinranwang> tempest test runs in real env, how to use fake driver with tempest 03:42:18 <Sundar> xinranwang: the fake driver will return driver OVOs and implement the same API calls as a regular driver 03:42:39 <Sundar> You mean you cannot put up a VM with a fake driver? 03:43:28 <xinranwang> yes, we cannot boot VM with accelerators with fake driver 03:44:08 <Sundar> ikuo_o: We have to implement _some_ tests for the Nova patches to merge. It looks like the 3rd party tempest may take sometime and it is not clear that Nova folks will accept that alone 03:44:57 <ikuo_o> I got it. 03:45:20 <Sundar> xinranwang: there may be some way to fake that success too? It has been suggested an an option by Nova folks too. E.g. Line 20 of https://etherpad.openstack.org/p/ptg-train-xproj-nova-cyborg 03:46:51 <Sundar> Anyways, may be we can take this up in tomorrow's Zoom meeting, because we have only 15 minutes left for today 03:47:16 <xinranwang> Ok 03:47:20 <Sundar> #topic Cyborg specs 03:47:33 <Sundar> Device/driver discovery spec: https://review.opendev.org/#/c/593726 03:48:03 <Sundar> We have already implemented it, though the spec is not merged. Do we need the spec? 03:48:53 <yikun> any different between specs and impletation? If not I think we didn't need it anymore 03:49:19 <ikuo_o> yikun +1 03:49:29 <xinranwang> +1 03:49:58 <Sundar> The spec was probably obsolete anyway :) So there may be differences. But that may not be relevant anyway. 03:50:46 <Sundar> Do the +1s mean 'we do not need it' or 'if no difference, we don't need it' ? 03:51:28 <ikuo_o> Thanks Sundar. Then the spec seems unnecessary 03:51:43 <ikuo_o> we do not need it +! 03:52:00 <Sundar> Good, thanks ikuo_o. I like that answer :) 03:52:21 <Sundar> I already abandoned it. I'll remove it from Nova spec as well 03:52:55 <Sundar> specs/index.rst: https://review.opendev.org/#/c/658498/ I think yikun already did that. SO, abandon this? 03:53:56 <yikun> https://review.opendev.org/#/c/651061/9/doc/source/index.rst@12 03:53:58 <yikun> Yes 03:54:17 <yikun> I fixed it in the other merged patch. 03:54:25 <Sundar> Thanks, yikun. Done. 03:54:48 <Sundar> Please review these specs: https://review.opendev.org/#/c/602978/, https://review.opendev.org/#/c/605237/ 03:55:46 <yikun> OK, add to my review list 03:55:57 <Sundar> For device profiles, some more changes _may_ be needed in the future for 'nested magic'. See http://eavesdrop.openstack.org/irclogs/%23openstack-placement/%23openstack-placement.2019-06-04.log.html#t2019-06-04T13:17:48 03:56:13 <Sundar> But we can always add a change spec 03:56:40 <Sundar> #topic Cyborg patches 03:57:00 <Sundar> Q: Why not use asserts? They are complementary to exceptions, IMHO 03:57:37 <Sundar> Like I said in the code reviews, other projects use them. And they are useful to check internal program logic. E.g. a function must return a list 03:58:11 <Sundar> If we make exceptions for everything, there will be too many exceptions or, worse, developers will not put the check 03:58:52 <Sundar> yikun said they produce unclear messages 03:59:20 <Sundar> But we can say: assert x == y: "Bad state for x, differ s from y" 03:59:53 <ikuo_o> "They" means exceptions? 04:00:01 <yikun> Both the ways of the assert or exception is okay to me, :) But I prefer to use the exception. 04:00:26 <Sundar> ikuo_o: "they" mean asserts 04:01:14 <Sundar> yikun: OK. For e.g., would you put an exception to check that a function returns a list? 04:03:07 <Sundar> Anyways, this is food for thought :) 04:03:37 <yikun> OK, I think assert and exception has their use case. :) so, I said, both okay to me 04:03:44 <Sundar> If you are all ok, I'll leave the asserts in the code. IMHO, it is a good practice, recommended in software engineering books 04:03:54 <Sundar> yikun, ok. Thanks ;) 04:04:02 <ikuo_o> Sure. 04:04:11 <Sundar> #topic AoB 04:04:17 <Sundar> There is a Zoom meeting tomorrow 04:04:36 <Sundar> Mostly to wrap up the spec and patch reviews as much as possible 04:04:45 <ikuo_o> Ok, I will see you tomorrow. 04:05:01 <Sundar> ikuo_o and all, see you all tomorrow :) 04:05:08 <yikun> ok will join it, and thereare some patches need you guys eyes: 04:05:15 <yikun> https://review.opendev.org/#/c/658987 04:05:15 <yikun> ^ the generic driver spec have been approved, and the patch is ready for review. 04:05:15 <yikun> https://review.opendev.org/#/c/660874/ 04:05:15 <yikun> ^ also the huawei ascend driver is also ready to merged 04:05:29 <Sundar> Great, will review 04:05:35 <yikun> any question, you can leave your comments, thanks. :) 04:05:37 <Sundar> Good day, everybody! 04:05:41 <Sundar> #endmeeting