Re: [openstack-dev] [Fuel] Building Fuel plugins with UI part
First of all, compiling of statics shouldn't be a required step. No one does this during development. For production-ready plugins, the compiled files should already be included in the GitHub repos and installation of plugin should just be a matter of downloading it. The API should then take care of informing the UI what plugins are installed. The npm install step is mostly one-time. The grunt build step for the plugin should basically just compile the staticfiles of the plugin and not the whole project. Besides with one file this is not extendable -- for N plugins we would build 2^N files with all possible combinations of including the plugins? :) P. On 12/15/2014 11:35 AM, Anton Zemlyanov wrote: My experience with building Fuel plugins with UI part is following. To build a ui-less plugin, it takes 3 seconds and those commands: git clone https://github.com/AlgoTrader/test-plugin.git cd ./test-plugin fpb --build ./ When UI added, build start to look like this and takes many minutes: git clone https://github.com/AlgoTrader/test-plugin.git git clone https://github.com/stackforge/fuel-web.git cd ./fuel-web git fetch https://review.openstack.org/stackforge/fuel-web refs/changes/00/112600/24 git checkout FETCH_HEAD cd .. mkdir -p ./fuel-web/nailgun/static/plugins/test-plugin cp -R ./test-plugin/ui/* ./fuel-web/nailgun/static/plugins/test-plugin cd ./fuel-web/nailgun npm install npm update grunt build --static-dir=static_compressed cd ../.. rm -rf ./test-plugin/ui mkdir ./test-plugin/ui cp -R ./fuel-web/nailgun/static_compressed/plugins/test-plugin/* ./test-plugin/ui cd ./test-plugin fpb --build ./ I think we need something not so complex and fragile Anton ___ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev ___ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
Re: [openstack-dev] [Fuel] Building Fuel plugins with UI part
The building of the UI plugin has several things I do not like 1) I need to extract the UI part of the plugin and copy/symlink it to fuel-web 2) I have to run grunt build on the whole fuel-web 3) I have to copy files back to original location to pack them 4) I cannot easily switch between development/production versions (no way to easily change entry point) The only way to install plugin is `fuel plugins --install`, no matter development or production, so even development plugins should be packed to tar.gz Anton On Mon, Dec 15, 2014 at 3:30 PM, Przemyslaw Kaminski pkamin...@mirantis.com wrote: First of all, compiling of statics shouldn't be a required step. No one does this during development. For production-ready plugins, the compiled files should already be included in the GitHub repos and installation of plugin should just be a matter of downloading it. The API should then take care of informing the UI what plugins are installed. The npm install step is mostly one-time. The grunt build step for the plugin should basically just compile the staticfiles of the plugin and not the whole project. Besides with one file this is not extendable -- for N plugins we would build 2^N files with all possible combinations of including the plugins? :) P. On 12/15/2014 11:35 AM, Anton Zemlyanov wrote: My experience with building Fuel plugins with UI part is following. To build a ui-less plugin, it takes 3 seconds and those commands: git clone https://github.com/AlgoTrader/test-plugin.git cd ./test-plugin fpb --build ./ When UI added, build start to look like this and takes many minutes: git clone https://github.com/AlgoTrader/test-plugin.git git clone https://github.com/stackforge/fuel-web.git cd ./fuel-web git fetch https://review.openstack.org/stackforge/fuel-web refs/changes/00/112600/24 git checkout FETCH_HEAD cd .. mkdir -p ./fuel-web/nailgun/static/plugins/test-plugin cp -R ./test-plugin/ui/* ./fuel-web/nailgun/static/plugins/test-plugin cd ./fuel-web/nailgun npm install npm update grunt build --static-dir=static_compressed cd ../.. rm -rf ./test-plugin/ui mkdir ./test-plugin/ui cp -R ./fuel-web/nailgun/static_compressed/plugins/test-plugin/* ./test-plugin/ui cd ./test-plugin fpb --build ./ I think we need something not so complex and fragile Anton ___ OpenStack-dev mailing listOpenStack-dev@lists.openstack.orghttp://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev ___ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev ___ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
Re: [openstack-dev] [Fuel] Building Fuel plugins with UI part
On 12/15/2014 02:26 PM, Anton Zemlyanov wrote: The building of the UI plugin has several things I do not like 1) I need to extract the UI part of the plugin and copy/symlink it to fuel-web This is required, the UI part should live somewhere in statics/js. This directory is served by nginx and symlinking/copying is I think the best way, far better than adding new directories to nginx configuration. 2) I have to run grunt build on the whole fuel-web This shouldn't at all be necessary. 3) I have to copy files back to original location to pack them Shouldn't be necessary. 4) I cannot easily switch between development/production versions (no way to easily change entry point) Development/production versions should only differ by serving raw/compressed files. The compressed files should be published by the plugin author. The only way to install plugin is `fuel plugins --install`, no matter development or production, so even development plugins should be packed to tar.gz The UI part should be working immediately after symlinking somewhere in the statics/js directory imho (and after API is aware of the new pugin but). P. Anton On Mon, Dec 15, 2014 at 3:30 PM, Przemyslaw Kaminski pkamin...@mirantis.com mailto:pkamin...@mirantis.com wrote: First of all, compiling of statics shouldn't be a required step. No one does this during development. For production-ready plugins, the compiled files should already be included in the GitHub repos and installation of plugin should just be a matter of downloading it. The API should then take care of informing the UI what plugins are installed. The npm install step is mostly one-time. The grunt build step for the plugin should basically just compile the staticfiles of the plugin and not the whole project. Besides with one file this is not extendable -- for N plugins we would build 2^N files with all possible combinations of including the plugins? :) P. On 12/15/2014 11:35 AM, Anton Zemlyanov wrote: My experience with building Fuel plugins with UI part is following. To build a ui-less plugin, it takes 3 seconds and those commands: git clone https://github.com/AlgoTrader/test-plugin.git cd ./test-plugin fpb --build ./ When UI added, build start to look like this and takes many minutes: git clone https://github.com/AlgoTrader/test-plugin.git git clone https://github.com/stackforge/fuel-web.git cd ./fuel-web git fetch https://review.openstack.org/stackforge/fuel-web refs/changes/00/112600/24 git checkout FETCH_HEAD cd .. mkdir -p ./fuel-web/nailgun/static/plugins/test-plugin cp -R ./test-plugin/ui/* ./fuel-web/nailgun/static/plugins/test-plugin cd ./fuel-web/nailgun npm install npm update grunt build --static-dir=static_compressed cd ../.. rm -rf ./test-plugin/ui mkdir ./test-plugin/ui cp -R ./fuel-web/nailgun/static_compressed/plugins/test-plugin/* ./test-plugin/ui cd ./test-plugin fpb --build ./ I think we need something not so complex and fragile Anton ___ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org mailto:OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev ___ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org mailto:OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev ___ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev ___ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
Re: [openstack-dev] [Fuel] Building Fuel plugins with UI part
Hi, The only thing I don't really like is that we need fuel-web code to build plugin. But we have can do nothing with it, as typical UI plugin by design is tightly coupled with the core. If plugin want to reuse core libraries, utils, controls then it has to declare them as dependencies and if there would be a build error if these files weren't found by r.js. I created the first version of spec https://review.openstack.org/#/c/141761/1 where described my vision of build process. You can comment on it there. Some responses inline: 2014-12-15 14:48 GMT+01:00 Przemyslaw Kaminski pkamin...@mirantis.com: On 12/15/2014 02:26 PM, Anton Zemlyanov wrote: The building of the UI plugin has several things I do not like 1) I need to extract the UI part of the plugin and copy/symlink it to fuel-web This is required, the UI part should live somewhere in statics/js. This directory is served by nginx and symlinking/copying is I think the best way, far better than adding new directories to nginx configuration. I think Anton is talking not about serving, but building the plugin. Yes, to build the UI part of plugin you need to extract its UI part and move/symlink it to static/plugins/plugin_name before you can run the build. 2) I have to run grunt build on the whole fuel-web This shouldn't at all be necessary. Yes, it is not necessary. Actually you don't have if you add another task or option for grunt build to not build the main project. It can be achieved by removing these lines https://github.com/stackforge/fuel-web/blob/master/nailgun/Gruntfile.js#L45-L48. 3) I have to copy files back to original location to pack them Shouldn't be necessary. 4) I cannot easily switch between development/production versions (no way to easily change entry point) Development/production versions should only differ by serving raw/compressed files. The compressed files should be published by the plugin author. On my development machine I use different ports of nginx to serve original and compressed versions of UI. It's configuration is pretty straightforward. The only way to install plugin is `fuel plugins --install`, no matter development or production, so even development plugins should be packed to tar.gz The UI part should be working immediately after symlinking somewhere in the statics/js directory imho (and after API is aware of the new pugin but). P. Anton On Mon, Dec 15, 2014 at 3:30 PM, Przemyslaw Kaminski pkamin...@mirantis.com wrote: First of all, compiling of statics shouldn't be a required step. No one does this during development. For production-ready plugins, the compiled files should already be included in the GitHub repos and installation of plugin should just be a matter of downloading it. The API should then take care of informing the UI what plugins are installed. The npm install step is mostly one-time. The grunt build step for the plugin should basically just compile the staticfiles of the plugin and not the whole project. Besides with one file this is not extendable -- for N plugins we would build 2^N files with all possible combinations of including the plugins? :) P. On 12/15/2014 11:35 AM, Anton Zemlyanov wrote: My experience with building Fuel plugins with UI part is following. To build a ui-less plugin, it takes 3 seconds and those commands: git clone https://github.com/AlgoTrader/test-plugin.git cd ./test-plugin fpb --build ./ When UI added, build start to look like this and takes many minutes: git clone https://github.com/AlgoTrader/test-plugin.git git clone https://github.com/stackforge/fuel-web.git cd ./fuel-web git fetch https://review.openstack.org/stackforge/fuel-web refs/changes/00/112600/24 git checkout FETCH_HEAD cd .. mkdir -p ./fuel-web/nailgun/static/plugins/test-plugin cp -R ./test-plugin/ui/* ./fuel-web/nailgun/static/plugins/test-plugin cd ./fuel-web/nailgun npm install npm update grunt build --static-dir=static_compressed cd ../.. rm -rf ./test-plugin/ui mkdir ./test-plugin/ui cp -R ./fuel-web/nailgun/static_compressed/plugins/test-plugin/* ./test-plugin/ui cd ./test-plugin fpb --build ./ I think we need something not so complex and fragile Anton ___ OpenStack-dev mailing listOpenStack-dev@lists.openstack.orghttp://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev ___ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev ___ OpenStack-dev mailing listOpenStack-dev@lists.openstack.orghttp://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev ___ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev -- Vitaly