Rules
Required parameters
The minimum parameters to create a rule are --selector and --label.
Create a rule that configures 2 replicas for volumes with the label env=prod:
$ storageos rule create --namespace default --selector 'env==prod' --label storageos.com/replicas=2 replicator
default/replicator
Optional parameters
Rules also accept the optional parameters --action and --weight.
-a, --action string        Rule action (add|remove) (default "add")
Where multiple rules apply to the same label, a weight is used to determine the order of evaluation. Rules are evaluated starting at the lowest weight.
-w, --weight int           Rule weight determines processing order, any integer
Using rules
To create a rule that configures 2 replicas for volumes with the label env=prod:
$ storageos rule create --namespace default --selector 'env==prod' --action add --label storageos.com/replicas=2 replicator
default/replicator
View rules:
$ storageos rule ls
NAMESPACE/NAME       SELECTOR                  ACTION  LABELS
default/dev-marker   !storageos.com/replicas   add     env=dev
default/prod-marker  storageos.com/replicas>1  add     env=prod
default/replicator   env==prod                 add     storageos.com/replicas=2
default/uat-marker   storageos.com/replicas<2  add     env=uat
Inspect a rule:
$ storageos rule inspect default/replicator
[
    {
        "id": "9db3252a-bd14-885b-0d0a-b0da1dd2d4a1",
        "name": "replicator",
        "namespace": "default",
        "description": "",
        "active": true,
        "weight": 5,
        "action": "add",
        "selector": "env==prod",
        "labels": {
            "storageos.com/replicas": "2"
        }
    }
]
Then, create a volume:
storageos volume create -n default -s 1 --label env=prod prodVolume
Once it’s created, inspect it:
storageos volume inspect default/prodvolume
You should see that it has two replicas provisioned and additional labels attached:
"labels": {
        "env": "prod",
        "storageos.driver": "filesystem",
        "storageos.com/replicas": "2"
    },
Delete a rule:
$ storageos rule rm default/replicator
default/replicator
Using advanced selectors
Let’s create several rules that instead of adding storageos.com/replicas
feature label it would read it’s value and based on it would label volumes with
dev/uat/prod env values.
First, create a rule to label dev environments:
storageos rule create --namespace default --selector '!storageos.com/replicas' --action add --label env=dev dev-marker
This rule will be matching volumes that do not have (!) label storageos.com/replicas and will add env=dev
label.  Now, create a second rule to select volumes that have 1 replica (< 2) and add uat env label to them:
storageos rule create --namespace default --selector 'storageos.com/replicas<2' --action add --label env=uat uat-marker
Create new volume with 1 replica:
storageos volume create --namespace default --label storageos.com/replicas=1 uat-volume
Inspect it:
storageos volume inspect default/uat-volume
Labels should look like:
"labels": {
    "env": "uat",
    "storageos.driver": "filesystem",
    "storageos.com/replicas": "1"
},
Finally, create a rule that will mark volumes as prod if they have 2 or more
(gt) configured replicas:
storageos rule create --namespace default --selector 'storageos.com/replicas>1' --label env=prod prod-marker
default/prod-marker
Volumes created with 2 or more replicas should get env=prod label.