Namespaces allow users to create objects with the same name in different naming spaces.

The <namespace>/<kind>/<name> is called a path.

The object selector (--service option for svcmgr and svcmon, first argument for om) accepts the path notation.

Namespaced objects have their config stored in /etc/opensvc/namespaces/<namespace>/<kind>/.

This feature is available since version 1.9-2748.

Operations with namespaces

Users have 3 methods to select a namespace to operate into:

Selector expressions

om test/svc/svc1 create

Namespace command line option

om svc1 --namespace=test create

OSVC_NAMESPACE environment variable

OSVC_NAMESPACE=test om svc1 create

With OSVC_NAMESPACE exported, all actions are applied in the context of the test namespace.

$ export OSVC_NAMESPACE=test
$ om '*' ls
$ om 'test/*' ls


A {namespace} reference is available for service configuration.


Services in an explicit namespace have the namespace name inserted in their cgroup path


The "root" pseudo namespace

Services created before namespaces support and services created without an explicit namespace are assigned to a pseudo namespace named root. Their config are stored in /etc/opensvc/.

The root pseudo namespace name is used in the cluster dns names (<name>.root.svc.<clustername>) and dns search paths, but is not embedded in docker container names nor cgroup paths.

The {namespace} reference is evaluated to root.

Select objects in the root namespace

$ om 'root/**' ls
$ om '**' ls --namespace=root
$ OSVC_NAMESPACE=root om '**' ls

Create objects in the root namespace

$ om svc1 create


Children and parents relations use object paths or object names.

  • If a name is declared in the parents, slaves or children lists, the related objects are searched in the same namespace.
  • A relation to an object in another namespace must be declared using its path instead of its name.
  • Relations to objects in the root pseudo namespace must be defined as root/<kind>/<name> to avoid ambiguity.