confctl¶
Confctl module to abstract Conftool.
- exception spicerack.confctl.ConfctlError[source]¶
Bases:
SpicerackError
Custom exception class for errors of this module.
- class spicerack.confctl.Confctl(config: str = '/etc/conftool/config.yaml', schema: str = '/etc/conftool/schema.yaml', dry_run: bool = True) None [source]¶
Bases:
object
Confctl class to abstract conftool operations.
Initialize the instance.
- Parameters:
- entity(entity_name: str) spicerack.confctl.ConftoolEntity [source]¶
Get the Conftool specific entity class.
- Parameters:
entity_name (
str
) -- the name of the entity..- Return type:
- class spicerack.confctl.ConftoolEntity(entity: conftool.kvobject.Entity, dry_run: bool = True) None [source]¶
Bases:
object
ConftoolEntity class to perform operations on a specific Conftool entity.
Initialize the instance.
- Parameters:
entity (
conftool.kvobject.Entity
) -- an instance of Conftool entity.dry_run (
bool
, default:True
) -- whether this is a DRY-RUN.
- change_and_revert(field: str, original: bool | str | int | float, changed: bool | str | int | float, **tags: str) collections.abc.Iterator[collections.abc.Iterable[conftool.kvobject.Entity]] [source]¶
Context manager to perform actions with a changed value in conftool.
This method will only act on objects that had the original value.
Warning
If the code executed within the contextmanager raises an unhandled exception, the original state of the objects will NOT be restored.
- Parameters:
- Yields:
generator -- conftool.kvObject.Entity the objects that were acted upon.
- Return type:
collections.abc.Iterator
[collections.abc.Iterable
[conftool.kvobject.Entity
]]
- filter_objects(filter_expr: dict[str, bool | str | int | float], **tags: str) collections.abc.Iterator[conftool.kvobject.Entity] [source]¶
Filters objects coming from conftool based on values.
A generator will be returned which will contain only objects that match all filters.
- Parameters:
- Yields:
conftool.kvobject.Entity -- the selected object.
- Raises:
spicerack.confctl.ConfctlError -- if no object corresponds to the tags.
- Return type:
collections.abc.Iterator
[conftool.kvobject.Entity
]
- get(**tags: str) collections.abc.Iterator[conftool.kvobject.Entity] [source]¶
Generator that yields conftool objects corresponding to the selection.
- Parameters:
**tags (
str
) -- arbitrary Conftool tags as keyword arguments.- Yields:
conftool.kvobject.Entity -- the selected object.
- Return type:
collections.abc.Iterator
[conftool.kvobject.Entity
]
- set_and_verify(key: str, value: bool | str | int | float, **tags: str) None [source]¶
Set and verify a single Conftool value.
- Parameters:
- Raises:
spicerack.confctl.ConfctlError -- on etcd or Conftool errors or failing to verify the changes.
- Return type:
- update(changed: dict[str, bool | str | int | float], **tags: str) None [source]¶
Updates the value of conftool objects corresponding to the selection done with tags.
- Parameters:
- Raises:
spicerack.confctl.ConfctlError -- on etcd or Conftool errors.
- Return type:
Examples
>>> confctl.update({'pooled': 'no'}, service='appservers-.*', name='eqiad')
- update_objects(changed: dict[str, bool | str | int | float], objects: collections.abc.Iterable[conftool.kvobject.Entity]) None [source]¶
Updates the value of the provided conftool objects.
Examples
>>> inactive = confctl.filter_objects({'pooled': 'inactive'}, service='appservers-.*', name='eqiad') >>> confctl.update_objects({'pooled': 'no'}, inactive)
- Parameters:
- Raises:
spicerack.confctl.ConfctlError -- on etcd or Conftool errors.
- Return type: