File manager - Edit - /opt/saltstack/salt/lib/python3.10/site-packages/salt/states/influxdb_retention_policy.py
Back
""" Management of Influxdb retention policies ========================================= .. versionadded:: 2017.7.0 (compatible with InfluxDB version 0.9+) """ def __virtual__(): """ Only load if the influxdb module is available """ if "influxdb.db_exists" in __salt__: return "influxdb_retention_policy" return (False, "influxdb module could not be loaded") def convert_duration(duration): """ Convert the a duration string into XXhYYmZZs format duration Duration to convert Returns: duration_string String representation of duration in XXhYYmZZs format """ # durations must be specified in days, weeks or hours if duration.endswith("h"): hours = int(duration.split("h")) elif duration.endswith("d"): days = duration.split("d") hours = int(days[0]) * 24 elif duration.endswith("w"): weeks = duration.split("w") hours = int(weeks[0]) * 24 * 7 duration_string = str(hours) + "h0m0s" return duration_string def present(name, database, duration="7d", replication=1, default=False, **client_args): """ Ensure that given retention policy is present. name Name of the retention policy to create. database Database to create retention policy on. """ ret = { "name": name, "changes": {}, "result": True, "comment": f"retention policy {name} is already present", } if not __salt__["influxdb.retention_policy_exists"]( name=name, database=database, **client_args ): if __opts__["test"]: ret["result"] = None ret["comment"] = f" {name} is absent and will be created" return ret if __salt__["influxdb.create_retention_policy"]( database, name, duration, replication, default, **client_args ): ret["comment"] = f"retention policy {name} has been created" ret["changes"][name] = "Present" return ret else: ret["comment"] = f"Failed to create retention policy {name}" ret["result"] = False return ret else: current_policy = __salt__["influxdb.get_retention_policy"]( database=database, name=name, **client_args ) update_policy = False if current_policy["duration"] != convert_duration(duration): update_policy = True ret["changes"]["duration"] = "Retention changed from {} to {}.".format( current_policy["duration"], duration ) if current_policy["replicaN"] != replication: update_policy = True ret["changes"]["replication"] = "Replication changed from {} to {}.".format( current_policy["replicaN"], replication ) if current_policy["default"] != default: update_policy = True ret["changes"]["default"] = "Default changed from {} to {}.".format( current_policy["default"], default ) if update_policy: if __opts__["test"]: ret["result"] = None ret["comment"] = f" {name} is present and set to be changed" return ret else: if __salt__["influxdb.alter_retention_policy"]( database, name, duration, replication, default, **client_args ): ret["comment"] = f"retention policy {name} has been changed" return ret else: ret["comment"] = f"Failed to update retention policy {name}" ret["result"] = False return ret return ret def absent(name, database, **client_args): """ Ensure that given retention policy is absent. name Name of the retention policy to remove. database Name of the database that the retention policy was defined on. """ ret = { "name": name, "changes": {}, "result": True, "comment": f"retention policy {name} is not present", } if __salt__["influxdb.retention_policy_exists"](database, name, **client_args): if __opts__["test"]: ret["result"] = None ret["comment"] = ( f"retention policy {name} is present and needs to be removed" ) return ret if __salt__["influxdb.drop_retention_policy"](database, name, **client_args): ret["comment"] = f"retention policy {name} has been removed" ret["changes"][name] = "Absent" return ret else: ret["comment"] = f"Failed to remove retention policy {name}" ret["result"] = False return ret return ret
| ver. 1.4 |
Github
|
.
| PHP 8.2.30 | Generation time: 0 |
proxy
|
phpinfo
|
Settings