Skip to content

Commit

Permalink
cls-lua: write object classes in Lua
Browse files Browse the repository at this point in the history
Introduces cls_lua that allows object classes to be created dynamically
using the Lua language. Each request is processed in an empty Lua VM
instance, and scripts can be submitted using bufferlist or JSON
encoding.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
  • Loading branch information
dotnwat committed Jun 26, 2016
1 parent 8443bb3 commit ae16c40
Show file tree
Hide file tree
Showing 16 changed files with 2,517 additions and 1 deletion.
14 changes: 14 additions & 0 deletions src/cls/CMakeLists.txt
Expand Up @@ -128,3 +128,17 @@ endif (WITH_CEPHFS)

add_library(cls_numops_client STATIC numops/cls_numops_client.cc)

add_library(cls_lua SHARED
lua/cls_lua.cc
lua/lua_bufferlist.cc
)
set_target_properties(cls_lua PROPERTIES VERSION "1.0.0" SOVERSION "1")
install(TARGETS cls_lua DESTINATION lib/rados-classes)
target_link_libraries(cls_lua
liblua
json_spirit
)

add_library(cls_lua_client
lua/cls_lua_client.cc
)
10 changes: 9 additions & 1 deletion src/cls/Makefile-client.am
Expand Up @@ -67,6 +67,11 @@ libcls_journal_client_la_SOURCES = \
noinst_LTLIBRARIES += libcls_journal_client.la
DENCODER_DEPS += libcls_journal_client.la

libcls_lua_client_la_SOURCES = cls/lua/cls_lua_client.cc
libcls_lua_client_la_CPPFLAGS = $(LIBLUA_CPPFLAGS) $(AM_CPPFLAGS)
libcls_lua_client_la_LIBADD = $(LIBLUA)
noinst_LTLIBRARIES += libcls_lua_client.la

noinst_HEADERS += \
cls/lock/cls_lock_types.h \
cls/lock/cls_lock_ops.h \
Expand Down Expand Up @@ -101,4 +106,7 @@ noinst_HEADERS += \
cls/cephfs/cls_cephfs.h \
cls/cephfs/cls_cephfs_client.h \
cls/journal/cls_journal_client.h \
cls/journal/cls_journal_types.h
cls/journal/cls_journal_types.h \
cls/lua/cls_lua.h \
cls/lua/cls_lua_client.h \
cls/lua/cls_lua_ops.h
8 changes: 8 additions & 0 deletions src/cls/Makefile-server.am
Expand Up @@ -81,4 +81,12 @@ libcls_journal_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
libcls_journal_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
radoslib_LTLIBRARIES += libcls_journal.la

libcls_lua_la_SOURCES = \
cls/lua/cls_lua.cc \
cls/lua/lua_bufferlist.cc
libcls_lua_la_CPPFLAGS = $(LIBLUA_CPPFLAGS) $(AM_CPPFLAGS)
libcls_lua_la_LIBADD = $(LIBLUA)
libcls_lua_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
radoslib_LTLIBRARIES += libcls_lua.la

endif # WITH_OSD

0 comments on commit ae16c40

Please sign in to comment.