Object Storage & Indexing System (OSIS)
this is the object storage system as part of this wiki & application server. OSIS allows you to define complex types and lots of code is autogenerated for you.
for spec format of model check:
OISS requires several client connection to be configured.
- mongodb_client
- influxdb_client
- redis
It uses mongodb to store the objects.
Redis is used for temperary models and caching.
Influxdb is used for metric data gather from the nodes.
Structure
OSIS structures models under namespaces this is a logical seperation of models.
Each model inside a namespace we call a category
The basepath of OSIS is typically /opt/jumpscale7/apps/osis
Under this path we have a folder logic where our namespaces are stored.
In a namespace we can define how objects should be processed.
We have three files to manage this OSIS_auth.py OSIS_category_template.py OSIS_parent.py
OSIS_parent
from JumpScale import j
from JumpScale.grid.osis.OSISStoreMongo import OSISStoreMongo
class mainclass(OSISStoreMongo):
pass
Typicly we inherit from OSISStoreMongo and use the default settings. It is possible to overwrite the set method and preprocess the data comming in.
OSIS_category_template
This files is used during generation how each category should store its models. Typicly this files inherits from the namespace itself.
from JumpScale import j
parentclass=j.core.osis.getOsisImplementationParentClass("system") #is the name of the namespace
class mainclass(parentclass):
"""
"""
OSIS_auth
In OSIS_auth we can specify the authentication for each and every call.
Typicly we validate if admin level is require or node level
Example
from JumpScale import j
import ujson
class AUTH():
def load(self,osis):
pass
def authenticate(self,osis,method,user,passwd, session):
if j.core.osis.cmds._authenticateAdmin(user=user,passwd=passwd, die=False):
return True
return False