# Module custom-role

User-defined role API.

If you want to implement your own role it must conform this API.

## Functions

### init (opts)

Role initialization callback. Called when role is enabled on an instance. Caused either by editing topology or instance restart.

Parameters:

- opts:

  - is_master: (boolean)

### stop (opts)

Role shutdown callback. Called when role is disabled on an instance.

Parameters:

- opts:

  - is_master: (boolean)

### validate_config (conf_new, conf_old)

Validate clusterwide configuration callback.

Parameters:

- conf_new: (table)

- conf_old: (table)

### apply_config (conf, opts)

Apply clusterwide configuration callback.

Parameters:

- conf: (table) Clusterwide configuration

- opts:

  - is_master: (boolean)

## Fields

### role_name

Displayed role name. When absent, module name is used instead.

- role_name: (string)

### hidden

Hidden role flag. aren’t listed in `cartridge.admin_get_replicasets().roles` and therefore in WebUI. Hidden roled are supposed to be a dependency for another role.

- hidden: (boolean)

### permanent

Permanent role flag. Permanent roles will be enabled on every instance in cluster. Implies `hidden = true` .

- permanent: (boolean)