Re: [openstack-dev] [Fuel] Building Fuel plugins with UI part

2014-12-15 Thread Przemyslaw Kaminski
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

2014-12-15 Thread Anton Zemlyanov
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

2014-12-15 Thread Przemyslaw Kaminski


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

2014-12-15 Thread Vitaly Kramskikh
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