]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard_v2: Add CMake target to build the frontend.
authorSebastian Wagner <sebastian.wagner@suse.com>
Wed, 28 Feb 2018 09:08:55 +0000 (10:08 +0100)
committerRicardo Dias <rdias@suse.com>
Mon, 5 Mar 2018 13:07:17 +0000 (13:07 +0000)
* Added new CMake flag `WITH_MGR_DASHBOARD_V2_FRONTEND`:
  Build the mgr/dashboard_v2 frontend using `npm install && npm run build`

* Set this flag to `OFF` when building packages.

* Removed creation of the frontend from `vstart.sh`

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
CMakeLists.txt
ceph.spec.in
debian/rules
src/pybind/mgr/dashboard_v2/CMakeLists.txt
src/vstart.sh

index 1db462b72012ed6e886f7ac48161b4fac58da695..f25a7715852b98a21dd4c2582ac58d52cd288a80 100644 (file)
@@ -590,6 +590,9 @@ else()
 endif()
 set(Boost_USE_MULTITHREADED ON)
 
+# dashboard angular2 frontend
+option(WITH_MGR_DASHBOARD_V2_FRONTEND "Build the mgr/dashboard_v2 frontend using `npm`" ON)
+
 include_directories(SYSTEM ${PROJECT_BINARY_DIR}/include)
 
 find_package(Threads REQUIRED)
index 961f94952b057c6385cd9f69f19f6b64057b9019..b8eebd082d2df55e3787f82af0444b05bb617820 100644 (file)
@@ -906,6 +906,7 @@ cmake .. \
     -DWITH_EMBEDDED=OFF \
     -DWITH_MANPAGE=ON \
     -DWITH_PYTHON3=ON \
+    -DWITH_MGR_DASHBOARD_V2_FRONTEND=OFF \
 %if %{with python2}
     -DWITH_PYTHON2=ON \
 %else
index 5f8923b48fa2087b3be1a171c4748951a360df4e..17a0d804b306efc881209f87cea766ed9834e47f 100755 (executable)
@@ -5,7 +5,7 @@ export DESTDIR=$(CURDIR)/debian/tmp
 
 export DEB_HOST_ARCH      ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
 
-extraopts += -DUSE_CRYPTOPP=OFF -DWITH_OCF=ON -DWITH_LTTNG=ON -DWITH_PYTHON3=ON -DWITH_EMBEDDED=OFF
+extraopts += -DUSE_CRYPTOPP=OFF -DWITH_OCF=ON -DWITH_LTTNG=ON -DWITH_PYTHON3=ON -DWITH_EMBEDDED=OFF -DWITH_MGR_DASHBOARD_V2_FRONTEND=OFF
 extraopts += -DWITH_CEPHFS_JAVA=ON
 extraopts += -DWITH_SYSTEMD=ON -DCEPH_SYSTEMD_ENV_DIR=/etc/default
 # assumes that ceph is exmpt from multiarch support, so we override the libdir.
index 695a3a26725f1b2e62a839ccb0a502e6fca3c454..d5c22c1610a04af25c382234fed53ef1329ef81d 100644 (file)
@@ -8,5 +8,55 @@ add_custom_target(mgr-dashboard_v2-test-venv
   COMMENT "dashboard_v2 tests virtualenv is being created")
 add_dependencies(tests mgr-dashboard_v2-test-venv)
 
-include(Distutils)
-distutils_install_module(mgr_dashboard_v2)
+if(WITH_MGR_DASHBOARD_V2_FRONTEND AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64|arm|ARM")
+
+add_custom_command(
+  OUTPUT "${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard_v2/frontend/node_modules"
+  COMMAND npm install
+  DEPENDS frontend/package.json
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard_v2/frontend
+  COMMENT "dashboard_v2 frontend dependencies are being installed"
+)
+
+add_custom_target(mgr-dashboard_v2-frontend-deps
+  DEPENDS frontend/node_modules
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard_v2/frontend
+)
+
+# Glob some frontend files. With CMake 3.6, this can be simplified
+# to *.ts *.html. Just add:
+# list(FILTER frontend_src INCLUDE REGEX "frontend/src")
+file(
+  GLOB_RECURSE frontend_src
+  frontend/src/*.ts
+  frontend/src/*.html
+  frontend/src/*/*.ts
+  frontend/src/*/*.html
+  frontend/src/*/*/*.ts
+  frontend/src/*/*/*.html
+  frontend/src/*/*/*/*.ts
+  frontend/src/*/*/*/*.html
+  frontend/src/*/*/*/*/*.ts
+  frontend/src/*/*/*/*/*.html
+  frontend/src/*/*/*/*/*/*.ts
+  frontend/src/*/*/*/*/*/*.html)
+
+if(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
+  set(npm_command npm run build -- --prod)
+else()
+  set(npm_command npm run build)
+endif()
+
+add_custom_command(
+  OUTPUT "${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard_v2/frontend/dist"
+  COMMAND ${npm_command}
+  DEPENDS ${frontend_src} frontend/node_modules
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard_v2/frontend
+  COMMENT "dashboard_v2 frontend is being created"
+)
+add_custom_target(mgr-dashboard_v2-frontend-build
+  DEPENDS frontend/dist mgr-dashboard_v2-frontend-deps
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard_v2/frontend
+)
+add_dependencies(ceph-mgr mgr-dashboard_v2-frontend-build)
+endif(WITH_MGR_DASHBOARD_V2_FRONTEND AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64|arm|ARM")
index fc7228ba0a0205f66bca08d8343054341a7961eb..d523037188c63982f92c3eaae5b31df63eafda23 100755 (executable)
@@ -720,13 +720,10 @@ EOF
     fi
 
     # dashboard_v2
-    # build frontend
-    pushd $MGR_PYTHON_PATH/dashboard_v2/frontend
-    npm install
-    npm run build
-    popd
-    # setting login credentials for dashboard_v2
+    sleep 5  # when running with more than 1 mgrs, if we enable dashboard_v2
+             # immediately it will fail, so we just wait for a bit
     ceph_adm mgr module enable dashboard_v2
+    # setting login credentials for dashboard_v2
     ceph_adm tell mgr dashboard set-login-credentials admin admin
 }