moat-kv 0.70.23__py3-none-any.whl → 0.71.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- build/lib/docs/source/conf.py +201 -0
- build/lib/examples/pathify.py +45 -0
- build/lib/moat/kv/__init__.py +19 -0
- build/lib/moat/kv/_cfg.yaml +93 -0
- build/lib/moat/kv/_main.py +91 -0
- build/lib/moat/kv/actor/__init__.py +98 -0
- build/lib/moat/kv/actor/deletor.py +139 -0
- build/lib/moat/kv/auth/__init__.py +444 -0
- build/lib/moat/kv/auth/_test.py +166 -0
- build/lib/moat/kv/auth/password.py +234 -0
- build/lib/moat/kv/auth/root.py +58 -0
- build/lib/moat/kv/backend/__init__.py +67 -0
- build/lib/moat/kv/backend/mqtt.py +71 -0
- build/lib/moat/kv/client.py +1025 -0
- build/lib/moat/kv/code.py +236 -0
- build/lib/moat/kv/codec.py +11 -0
- build/lib/moat/kv/command/__init__.py +1 -0
- build/lib/moat/kv/command/acl.py +180 -0
- build/lib/moat/kv/command/auth.py +261 -0
- build/lib/moat/kv/command/code.py +293 -0
- build/lib/moat/kv/command/codec.py +186 -0
- build/lib/moat/kv/command/data.py +265 -0
- build/lib/moat/kv/command/dump/__init__.py +143 -0
- build/lib/moat/kv/command/error.py +149 -0
- build/lib/moat/kv/command/internal.py +248 -0
- build/lib/moat/kv/command/job.py +433 -0
- build/lib/moat/kv/command/log.py +53 -0
- build/lib/moat/kv/command/server.py +114 -0
- build/lib/moat/kv/command/type.py +201 -0
- build/lib/moat/kv/config.py +46 -0
- build/lib/moat/kv/data.py +216 -0
- build/lib/moat/kv/errors.py +561 -0
- build/lib/moat/kv/exceptions.py +126 -0
- build/lib/moat/kv/mock/__init__.py +101 -0
- build/lib/moat/kv/mock/mqtt.py +159 -0
- build/lib/moat/kv/mock/tracer.py +63 -0
- build/lib/moat/kv/model.py +1069 -0
- build/lib/moat/kv/obj/__init__.py +646 -0
- build/lib/moat/kv/obj/command.py +241 -0
- build/lib/moat/kv/runner.py +1347 -0
- build/lib/moat/kv/server.py +2809 -0
- build/lib/moat/kv/types.py +513 -0
- ci/rtd-requirements.txt +4 -0
- ci/test-requirements.txt +7 -0
- ci/travis.sh +96 -0
- debian/.gitignore +7 -0
- debian/changelog +1435 -0
- debian/control +43 -0
- debian/moat-kv/usr/lib/python3/dist-packages/docs/source/conf.py +201 -0
- debian/moat-kv/usr/lib/python3/dist-packages/examples/pathify.py +45 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/__init__.py +19 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/_cfg.yaml +93 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/_main.py +91 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/actor/__init__.py +98 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/actor/deletor.py +139 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/__init__.py +444 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/_test.py +166 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/password.py +234 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/root.py +58 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/backend/__init__.py +67 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/backend/mqtt.py +71 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/client.py +1025 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/code.py +236 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/codec.py +11 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/__init__.py +1 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/acl.py +180 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/auth.py +261 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/code.py +293 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/codec.py +186 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/data.py +265 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/dump/__init__.py +143 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/error.py +149 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/internal.py +248 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/job.py +433 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/log.py +53 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/server.py +114 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/type.py +201 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/config.py +46 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/data.py +216 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/errors.py +561 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/exceptions.py +126 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/__init__.py +101 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/mqtt.py +159 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/tracer.py +63 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/model.py +1069 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/obj/__init__.py +646 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/obj/command.py +241 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/runner.py +1347 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/server.py +2809 -0
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/types.py +513 -0
- debian/moat-kv.postinst +3 -0
- debian/rules +20 -0
- debian/source/format +1 -0
- debian/watch +4 -0
- docs/Makefile +20 -0
- docs/make.bat +36 -0
- docs/source/TODO.rst +61 -0
- docs/source/_static/.gitkeep +0 -0
- docs/source/acls.rst +80 -0
- docs/source/auth.rst +84 -0
- docs/source/client_protocol.rst +456 -0
- docs/source/code.rst +341 -0
- docs/source/command_line.rst +1187 -0
- docs/source/common_protocol.rst +47 -0
- docs/source/conf.py +201 -0
- docs/source/debugging.rst +70 -0
- docs/source/extend.rst +37 -0
- docs/source/history.rst +36 -0
- docs/source/index.rst +75 -0
- docs/source/model.rst +54 -0
- docs/source/overview.rst +83 -0
- docs/source/related.rst +89 -0
- docs/source/server_protocol.rst +450 -0
- docs/source/startup.rst +31 -0
- docs/source/translator.rst +244 -0
- docs/source/tutorial.rst +711 -0
- docs/source/v3.rst +168 -0
- examples/code/transform.scale.yml +21 -0
- examples/code/transform.switch.yml +82 -0
- examples/code/transform.timeslot.yml +63 -0
- examples/pathify.py +45 -0
- moat/kv/_cfg.yaml +2 -6
- moat/kv/actor/__init__.py +98 -0
- moat/kv/actor/deletor.py +139 -0
- moat/kv/auth/__init__.py +444 -0
- moat/kv/auth/_test.py +166 -0
- moat/kv/auth/password.py +234 -0
- moat/kv/auth/root.py +58 -0
- moat/kv/backend/__init__.py +67 -0
- moat/kv/backend/mqtt.py +71 -0
- moat/kv/command/__init__.py +1 -0
- moat/kv/command/acl.py +180 -0
- moat/kv/command/auth.py +261 -0
- moat/kv/command/code.py +293 -0
- moat/kv/command/codec.py +186 -0
- moat/kv/command/data.py +265 -0
- moat/kv/command/dump/__init__.py +143 -0
- moat/kv/command/error.py +149 -0
- moat/kv/command/internal.py +248 -0
- moat/kv/command/job.py +433 -0
- moat/kv/command/log.py +53 -0
- moat/kv/command/server.py +114 -0
- moat/kv/command/type.py +201 -0
- moat/kv/mock/__init__.py +101 -0
- moat/kv/mock/mqtt.py +159 -0
- moat/kv/mock/tracer.py +63 -0
- moat/kv/obj/__init__.py +646 -0
- moat/kv/obj/command.py +241 -0
- {moat_kv-0.70.23.dist-info → moat_kv-0.71.0.dist-info}/METADATA +2 -5
- moat_kv-0.71.0.dist-info/RECORD +188 -0
- moat_kv-0.71.0.dist-info/top_level.txt +9 -0
- scripts/current +15 -0
- scripts/env +8 -0
- scripts/init +39 -0
- scripts/recover +17 -0
- scripts/rotate +33 -0
- scripts/run +29 -0
- scripts/run-all +10 -0
- scripts/run-any +10 -0
- scripts/run-single +15 -0
- scripts/success +4 -0
- systemd/moat-kv-recover.service +21 -0
- systemd/moat-kv-rotate.service +20 -0
- systemd/moat-kv-rotate.timer +10 -0
- systemd/moat-kv-run-all.service +26 -0
- systemd/moat-kv-run-all@.service +25 -0
- systemd/moat-kv-run-any.service +26 -0
- systemd/moat-kv-run-any@.service +25 -0
- systemd/moat-kv-run-single.service +26 -0
- systemd/moat-kv-run-single@.service +25 -0
- systemd/moat-kv.service +27 -0
- systemd/postinst +7 -0
- systemd/sysusers +3 -0
- moat_kv-0.70.23.dist-info/RECORD +0 -19
- moat_kv-0.70.23.dist-info/top_level.txt +0 -1
- {moat_kv-0.70.23.dist-info → moat_kv-0.71.0.dist-info}/WHEEL +0 -0
- {moat_kv-0.70.23.dist-info → moat_kv-0.71.0.dist-info}/licenses/LICENSE.txt +0 -0
moat/kv/obj/command.py
ADDED
@@ -0,0 +1,241 @@
|
|
1
|
+
# command line interface helpers for objects
|
2
|
+
from __future__ import annotations
|
3
|
+
|
4
|
+
import logging
|
5
|
+
import sys
|
6
|
+
|
7
|
+
import asyncclick as click
|
8
|
+
from moat.util import NotGiven
|
9
|
+
|
10
|
+
logger = logging.getLogger(__name__)
|
11
|
+
|
12
|
+
__all__ = ["std_command"]
|
13
|
+
|
14
|
+
|
15
|
+
class _InvSub:
|
16
|
+
"""
|
17
|
+
This class is a helper for "std_command".
|
18
|
+
"""
|
19
|
+
|
20
|
+
def __init__(
|
21
|
+
self,
|
22
|
+
name,
|
23
|
+
id_name="name",
|
24
|
+
id_typ=str,
|
25
|
+
aux=(),
|
26
|
+
name_cb=None,
|
27
|
+
id_cb=None,
|
28
|
+
postproc=None,
|
29
|
+
apply=None,
|
30
|
+
short_help=None,
|
31
|
+
sub_base=None,
|
32
|
+
sub_name=None,
|
33
|
+
long_name=None,
|
34
|
+
prepare=None,
|
35
|
+
list_recursive=False,
|
36
|
+
):
|
37
|
+
self.name = name
|
38
|
+
self.id_name = id_name
|
39
|
+
self.id_typ = id_typ
|
40
|
+
self.id_cb = id_cb or (lambda _c, _k, x: x)
|
41
|
+
self.apply = apply or (lambda _c, _t, _x: None)
|
42
|
+
self.name_cb = name_cb or (lambda _c, _k, x: x)
|
43
|
+
self.aux = aux
|
44
|
+
self.short_help = short_help
|
45
|
+
self.postproc = postproc or (lambda _c, _t, x: None)
|
46
|
+
self.long_name = long_name or name
|
47
|
+
self.sub_base = sub_base
|
48
|
+
self.prepare = prepare
|
49
|
+
self.list_recursive = list_recursive
|
50
|
+
if sub_name is NotGiven:
|
51
|
+
self.sub_name = None
|
52
|
+
else:
|
53
|
+
self.sub_name = sub_name or name
|
54
|
+
|
55
|
+
def id_arg(self, proc):
|
56
|
+
if self.id_name is None:
|
57
|
+
return proc
|
58
|
+
return click.argument(self.id_name, type=self.id_typ, callback=self.id_cb, nargs=1)(proc)
|
59
|
+
|
60
|
+
def apply_aux(self, proc):
|
61
|
+
for t in self.aux:
|
62
|
+
proc = t(proc)
|
63
|
+
return proc
|
64
|
+
|
65
|
+
|
66
|
+
def std_command(cli, *a, **kw):
|
67
|
+
"""
|
68
|
+
This procedure builds the interface for an inventory-ish thing.
|
69
|
+
|
70
|
+
Usage::
|
71
|
+
|
72
|
+
@click.group(short_help="Manage computer inventory.")
|
73
|
+
@click.pass_obj
|
74
|
+
async def cli(obj):
|
75
|
+
"Inventorize your computers, networks, and their connections."
|
76
|
+
obj.inv = await InventoryRoot.as_handler(obj.client)
|
77
|
+
|
78
|
+
std_command(
|
79
|
+
cli, # from above
|
80
|
+
"vlan", # subcommand name
|
81
|
+
"id", # item identifier
|
82
|
+
int, # item identifier type
|
83
|
+
aux=( # additional attributes
|
84
|
+
click.option("-d", "--desc", type=str, default=None, help="Description"),
|
85
|
+
click.option("-w", "--wlan", type=str, default=None, help="WLAN SSID"),
|
86
|
+
),
|
87
|
+
short_help="Manage VLANs",
|
88
|
+
)
|
89
|
+
"""
|
90
|
+
tinv = _InvSub(*a, **kw)
|
91
|
+
tname = tinv.name
|
92
|
+
tnname = "n_" + tname
|
93
|
+
|
94
|
+
def this(obj):
|
95
|
+
# Delayed resolving of the actual thing subhierarchy
|
96
|
+
if tinv.sub_base:
|
97
|
+
data = getattr(obj, tinv.sub_base)
|
98
|
+
else:
|
99
|
+
data = obj.data
|
100
|
+
if tinv.sub_name:
|
101
|
+
return getattr(data, tinv.sub_name)
|
102
|
+
return data
|
103
|
+
|
104
|
+
@cli.group(
|
105
|
+
name=tname,
|
106
|
+
invoke_without_command=True,
|
107
|
+
short_help=tinv.short_help,
|
108
|
+
help=f"""\
|
109
|
+
Manager for {tinv.long_name}s.
|
110
|
+
|
111
|
+
\b
|
112
|
+
Use '… {tname} -' to list all entries.
|
113
|
+
Use '… {tname} NAME' to show details of a single entry.
|
114
|
+
""",
|
115
|
+
)
|
116
|
+
@click.argument("name", type=str, nargs=1)
|
117
|
+
@click.pass_context
|
118
|
+
async def typ(ctx, name):
|
119
|
+
obj = ctx.obj
|
120
|
+
if tinv.prepare is not None:
|
121
|
+
await tinv.prepare(obj)
|
122
|
+
|
123
|
+
if name == "-":
|
124
|
+
if ctx.invoked_subcommand is not None:
|
125
|
+
raise click.BadParameter("The name '-' triggers a list and precludes subcommands.")
|
126
|
+
cnt = 0
|
127
|
+
for n in this(obj).all_children if tinv.list_recursive else this(obj):
|
128
|
+
cnt += 1
|
129
|
+
print(n, file=obj.stdout)
|
130
|
+
if not cnt and ctx.obj.debug:
|
131
|
+
print("no entries", file=sys.stderr)
|
132
|
+
elif ctx.invoked_subcommand is None:
|
133
|
+
# Show data from a single entry
|
134
|
+
n = this(obj).by_name(name)
|
135
|
+
if n is None:
|
136
|
+
raise KeyError(name)
|
137
|
+
cnt = 0
|
138
|
+
for k in n.ATTRS + getattr(n, "AUX_ATTRS", ()):
|
139
|
+
v = getattr(n, k, None)
|
140
|
+
if v is not None:
|
141
|
+
cnt += 1
|
142
|
+
if isinstance(v, dict):
|
143
|
+
v = v.items()
|
144
|
+
if isinstance(v, type({}.items())): # pylint: disable=W1116
|
145
|
+
for kk, vv in sorted(v):
|
146
|
+
if isinstance(vv, (tuple, list)):
|
147
|
+
if vv:
|
148
|
+
vv = " ".join(str(x) for x in vv)
|
149
|
+
else:
|
150
|
+
vv = "-"
|
151
|
+
elif isinstance(vv, dict):
|
152
|
+
vv = " ".join("%s=%s" % (x, y) for x, y in sorted(vv.items()))
|
153
|
+
print("%s %s %s" % (k, kk, vv), file=obj.stdout)
|
154
|
+
else:
|
155
|
+
print("%s %s" % (k, v), file=obj.stdout)
|
156
|
+
if not cnt and ctx.obj.debug:
|
157
|
+
print("exists, no data", file=sys.stderr)
|
158
|
+
else:
|
159
|
+
obj[tnname] = name
|
160
|
+
try:
|
161
|
+
obj[tname] = this(obj).by_name(name)
|
162
|
+
except KeyError:
|
163
|
+
obj[tname] = None
|
164
|
+
|
165
|
+
def alloc(obj, name):
|
166
|
+
# Allocate a new thing
|
167
|
+
if isinstance(name, (tuple, list)):
|
168
|
+
n = this(obj).follow(name, create=True)
|
169
|
+
else:
|
170
|
+
n = this(obj).allocate(name)
|
171
|
+
return n
|
172
|
+
|
173
|
+
# This is a hack for groups that take arguments. Doesn't work for
|
174
|
+
# multiple arguments, but you shouldn't do that anyway.
|
175
|
+
@typ.command("--help", hidden=True)
|
176
|
+
@click.pass_context
|
177
|
+
def help_(ctx): # pylint:disable=unused-variable # oh boy
|
178
|
+
print(typ.get_help(ctx))
|
179
|
+
|
180
|
+
@typ.command(short_help="Add a " + tinv.long_name)
|
181
|
+
@tinv.id_arg
|
182
|
+
@tinv.apply_aux
|
183
|
+
@click.pass_obj
|
184
|
+
async def add(obj, **kw):
|
185
|
+
name = obj[tnname]
|
186
|
+
if obj[tname] is not None:
|
187
|
+
raise RuntimeError(f"{name} already exists")
|
188
|
+
if tinv.id_name:
|
189
|
+
kw["name"] = name
|
190
|
+
n = alloc(obj, kw.pop(tinv.id_name))
|
191
|
+
else:
|
192
|
+
n = alloc(obj, name)
|
193
|
+
|
194
|
+
await _v_mod(obj, n, **kw)
|
195
|
+
|
196
|
+
add.__doc__ = f"""
|
197
|
+
Add a {tinv.long_name}
|
198
|
+
"""
|
199
|
+
|
200
|
+
@typ.command("set", short_help="Modify a " + tinv.long_name)
|
201
|
+
@tinv.apply_aux
|
202
|
+
@click.pass_obj
|
203
|
+
async def set_(obj, **kw):
|
204
|
+
n = obj[tname]
|
205
|
+
if n is None:
|
206
|
+
raise KeyError(tname)
|
207
|
+
|
208
|
+
await _v_mod(obj, n, **kw)
|
209
|
+
|
210
|
+
set_.__doc__ = f"""
|
211
|
+
Modify a {tinv.long_name}
|
212
|
+
"""
|
213
|
+
|
214
|
+
@typ.command(short_help="Delete a " + tinv.long_name)
|
215
|
+
@click.pass_obj
|
216
|
+
async def delete(obj, **kw): # pylint: disable=unused-argument,unused-variable
|
217
|
+
name = obj[tnname]
|
218
|
+
n = this(obj).by_name(name)
|
219
|
+
if n is not None:
|
220
|
+
await n.delete()
|
221
|
+
|
222
|
+
delete.__doc__ = """
|
223
|
+
Delete a {tinv.long_name}
|
224
|
+
"""
|
225
|
+
|
226
|
+
async def _v_mod(obj, thing, **kw):
|
227
|
+
tinv.apply(obj, thing, kw)
|
228
|
+
for k, v in kw.items():
|
229
|
+
if v:
|
230
|
+
if v == "-":
|
231
|
+
v = None
|
232
|
+
try:
|
233
|
+
setattr(thing, k, v)
|
234
|
+
except AttributeError:
|
235
|
+
if k != "name":
|
236
|
+
raise AttributeError(k, v) from None
|
237
|
+
tinv.postproc(obj, thing, kw)
|
238
|
+
await thing.save()
|
239
|
+
|
240
|
+
# Finally, return the CLI so the user can attach more stuff
|
241
|
+
return typ
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: moat-kv
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.71.0
|
4
4
|
Summary: A distributed no-master key-value store
|
5
5
|
Author-email: Matthias Urlichs <matthias@urlichs.de>
|
6
6
|
Project-URL: homepage, https://m-o-a-t.org
|
@@ -25,7 +25,6 @@ Requires-Dist: trio>=0.22
|
|
25
25
|
Requires-Dist: anyio>=4
|
26
26
|
Requires-Dist: range_set>=0.2
|
27
27
|
Requires-Dist: attrs>=22
|
28
|
-
Requires-Dist: asyncserf>=0.16
|
29
28
|
Requires-Dist: asyncactor>=0.24
|
30
29
|
Requires-Dist: asyncscope>=0.10.4
|
31
30
|
Requires-Dist: jsonschema>=2.5
|
@@ -34,11 +33,9 @@ Requires-Dist: PyNaCl>=1.3
|
|
34
33
|
Requires-Dist: moat-lib-diffiehellman~=0.13.4
|
35
34
|
Requires-Dist: psutil
|
36
35
|
Requires-Dist: simpleeval>=0.9.10
|
37
|
-
Requires-Dist: moat-mqtt~=0.42.
|
36
|
+
Requires-Dist: moat-mqtt~=0.42.4
|
38
37
|
Requires-Dist: moat-util~=0.56.4
|
39
38
|
Requires-Dist: exceptiongroup; python_version < "3.11"
|
40
|
-
Provides-Extra: dev
|
41
|
-
Requires-Dist: moat-src>=0.5.0; extra == "dev"
|
42
39
|
Dynamic: license-file
|
43
40
|
|
44
41
|
=======
|
@@ -0,0 +1,188 @@
|
|
1
|
+
build/lib/docs/source/conf.py,sha256=v4cO_xK-WpfHeOCQ4RaeHFk8vwBM7Gg3sw6DgGLmpCc,6072
|
2
|
+
build/lib/examples/pathify.py,sha256=cq2j7Nqhl3jmoNZ6l8wMj4j7DkHMxyB7-oTOrCZA0xQ,1128
|
3
|
+
build/lib/moat/kv/__init__.py,sha256=TO2TyH5Focv78vDDqtiN1vZVLsVihrOqvHBAlLIgVRA,508
|
4
|
+
build/lib/moat/kv/_cfg.yaml,sha256=HMyyiInthAOme_j9ydpfMzSvWVn_wgpNFAFyhpOCsuo,2153
|
5
|
+
build/lib/moat/kv/_main.py,sha256=SgI4ef8AQDOC4N4pLRiyaiSiFIzN-J337WIcuC7DPOY,2234
|
6
|
+
build/lib/moat/kv/client.py,sha256=c8YV0sjpO2XYpNE-fep7fDO2kgsNdShZxgCjohy23CY,34549
|
7
|
+
build/lib/moat/kv/code.py,sha256=gM7WNsjCfukr7h2fKm1U3zMHN5Wj-_hgy5U817LP9qE,6427
|
8
|
+
build/lib/moat/kv/codec.py,sha256=1AUNYxCOUJSZfZlny-asNZ0gmz0eaPmQKjr3biNDhWM,284
|
9
|
+
build/lib/moat/kv/config.py,sha256=cWJ1m8PRwzzapsin1XSDjRtYJCgNN6g7gA9q48luDV8,1093
|
10
|
+
build/lib/moat/kv/data.py,sha256=oiSGHnrrmJOkxC71bQj1ZsmBsVpE_vPT83IqRuHaNls,5992
|
11
|
+
build/lib/moat/kv/errors.py,sha256=wmi2OVsO4IeedScGTTFWvECkHLHMRiukoWXLpjI4-Us,16742
|
12
|
+
build/lib/moat/kv/exceptions.py,sha256=4gRsYa6kuBy1qFYiBUYElup_cvOe7QgPQtryHAYphzo,1849
|
13
|
+
build/lib/moat/kv/model.py,sha256=il8TjxrvL3EJKTZ88IDx2pJXcaKbXUSwsOIV4lXsW9Q,33390
|
14
|
+
build/lib/moat/kv/runner.py,sha256=eDXsNFWKidx5HLmP2MGpgRdeTeoL7dCSXLA_BKy55uE,41889
|
15
|
+
build/lib/moat/kv/server.py,sha256=O-yJiJYT5sQPeku9iTRo-SXqkHBq7OhKpHSA5IbKtvM,94918
|
16
|
+
build/lib/moat/kv/types.py,sha256=6klFuDHtbhRxrpLOYn1tnDndoRwE0nrolz3tFKOWtd8,14056
|
17
|
+
build/lib/moat/kv/actor/__init__.py,sha256=EdDaj0xXvL9QIecooWg3AfPyCHjdCCtKzXmtPRA7pkE,2134
|
18
|
+
build/lib/moat/kv/actor/deletor.py,sha256=v33XsCaemmaxZHRZP6JWap1yV9k7WkK6smPB-mwHyZA,4481
|
19
|
+
build/lib/moat/kv/auth/__init__.py,sha256=xd-nO76LTGeo7ppCqqv2aOc6nhzzyyRXmYKT4x3_I88,12490
|
20
|
+
build/lib/moat/kv/auth/_test.py,sha256=ZaMpMf2CTJ6sdGyENUhdWAY5TLC-kBtszM3dFQbyuWA,4342
|
21
|
+
build/lib/moat/kv/auth/password.py,sha256=DQG2BnNEoQ0H-znkHJx0G9-bcdWwg3IgqojcAHhKIsQ,6307
|
22
|
+
build/lib/moat/kv/auth/root.py,sha256=lW-_hgQp3ZIzAAe4iBl0rdMU-pFuHIC6ObA3rdFXxkk,1303
|
23
|
+
build/lib/moat/kv/backend/__init__.py,sha256=f5nIOWD2zml2YiaBNXtEOzC7SEGgwDFJMB8YzRISJ0A,1689
|
24
|
+
build/lib/moat/kv/backend/mqtt.py,sha256=XUwMR8RPzq6EPLub0cy7YzXTS1CkfBZFtZ4W9GTcQBo,2007
|
25
|
+
build/lib/moat/kv/command/__init__.py,sha256=9_8wL9Scv8_Cs8HJyJHGvx1vwXErsuvlsAqNZLcJQR0,8
|
26
|
+
build/lib/moat/kv/command/acl.py,sha256=wSdlzKBjWIFX3IxCdLcG3ZqjvtX8KPtqe38ibyU2VDo,4665
|
27
|
+
build/lib/moat/kv/command/auth.py,sha256=vP22ZIBMjRdUxN4_ELKiDgIE5ZqdMxs1ky1WDVUx50M,7149
|
28
|
+
build/lib/moat/kv/command/code.py,sha256=ycGBoKBB0Gse3Tt9h9WvgiIZVe3Yg-x92RRjfCCCXVQ,8066
|
29
|
+
build/lib/moat/kv/command/codec.py,sha256=8GqOl-oxWFM2D1Fm9Iheot2AmS_SsOYfqfbbde3qvQY,6028
|
30
|
+
build/lib/moat/kv/command/data.py,sha256=ntT6CQkmXtyFMgJNm9WMn23kVP5MR73q53w2WASsoOg,8396
|
31
|
+
build/lib/moat/kv/command/error.py,sha256=XqHmVJgBGjr6XOozi23wEjiTqPopD1CzkIeR1a3Z_vY,4350
|
32
|
+
build/lib/moat/kv/command/internal.py,sha256=wjEHTltUXIMEiXriyd5DuTDlaI_2W2uaJIi-dNLT_OA,7397
|
33
|
+
build/lib/moat/kv/command/job.py,sha256=C2qH7ghQcPL5vj-Pg0YZ2i2Rvg5kpzH58EqBTCaK1Tw,13614
|
34
|
+
build/lib/moat/kv/command/log.py,sha256=ycdtMgiBw2DaCu0yu6tpWKPLlQ33ZZemXsfwZrCzRGg,1350
|
35
|
+
build/lib/moat/kv/command/server.py,sha256=Hl_6FFq322c5KjJCKxH1nCrxo-h0VEwH4IOMbVeUBN4,3392
|
36
|
+
build/lib/moat/kv/command/type.py,sha256=JN0_Abb5wR4UJH5zHnVZgT93NJRYY6qpRD_ZQT13u4k,6226
|
37
|
+
build/lib/moat/kv/command/dump/__init__.py,sha256=L05R6W9eDzUDAr7UhfEo1lZR-UB0qYUUf-5dRHC-p-0,4000
|
38
|
+
build/lib/moat/kv/mock/__init__.py,sha256=HW6YAwo_OBVRmTeRCc-ZoUHB7-D78cEONlcb5vACdIE,2760
|
39
|
+
build/lib/moat/kv/mock/mqtt.py,sha256=b9pzbwQBmTX2eSiSgNO7nh2-7l8-0TT8n2GxinQ-1l0,5213
|
40
|
+
build/lib/moat/kv/mock/tracer.py,sha256=qLEIn9gdlYUypyRYD8O8SbM8ye8XR4xtBl3otP6uNLs,2058
|
41
|
+
build/lib/moat/kv/obj/__init__.py,sha256=yeiZ6bWM8XhK28ruqX7RmpPhytYXlOJPRw_hsWbvExk,19800
|
42
|
+
build/lib/moat/kv/obj/command.py,sha256=QQiOhPtlGV07kuutV0KowmC2HiXhmIFUktofqlRg1GA,7446
|
43
|
+
ci/rtd-requirements.txt,sha256=q_4dVDUIuXYxY3nN9_NCKYUiBpktQFouyqfmCANc1W4,123
|
44
|
+
ci/test-requirements.txt,sha256=ABIHUDbtJ3hpVgItYyHuFbh9UKuRMYmkILROxc1ygmk,74
|
45
|
+
ci/travis.sh,sha256=CZiQZUebAmYYH3DUOArik0ktJCG8Q0DE7lb0D-porDo,3335
|
46
|
+
debian/.gitignore,sha256=hecgAHAGCwd3DkI44GQT08cmd8DaCcz-zOQuINQ7ZKs,97
|
47
|
+
debian/changelog,sha256=lcGqGWXCsqfuc6LC02cFdiK7c9RD4p9tNMSqOttB81s,32353
|
48
|
+
debian/control,sha256=a5aeNf2U0O9kAZjh28-g0-HuJsYksxPWTgVNZ5kW2VY,1441
|
49
|
+
debian/moat-kv.postinst,sha256=2z322zcHXXTX0lXcOUn9DBnVPNO4f_d8nsfxuhNpfHY,33
|
50
|
+
debian/rules,sha256=bOC4tJvuLUgFaQmBu_zxcjtJGn01HkZKhctnDoqT6WY,461
|
51
|
+
debian/watch,sha256=O8zhQHur_qoHyzVIewbea-dfUSkJmCmV7P6PzZFPkR4,191
|
52
|
+
debian/moat-kv/usr/lib/python3/dist-packages/docs/source/conf.py,sha256=v4cO_xK-WpfHeOCQ4RaeHFk8vwBM7Gg3sw6DgGLmpCc,6072
|
53
|
+
debian/moat-kv/usr/lib/python3/dist-packages/examples/pathify.py,sha256=cq2j7Nqhl3jmoNZ6l8wMj4j7DkHMxyB7-oTOrCZA0xQ,1128
|
54
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/__init__.py,sha256=TO2TyH5Focv78vDDqtiN1vZVLsVihrOqvHBAlLIgVRA,508
|
55
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/_cfg.yaml,sha256=HMyyiInthAOme_j9ydpfMzSvWVn_wgpNFAFyhpOCsuo,2153
|
56
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/_main.py,sha256=SgI4ef8AQDOC4N4pLRiyaiSiFIzN-J337WIcuC7DPOY,2234
|
57
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/client.py,sha256=c8YV0sjpO2XYpNE-fep7fDO2kgsNdShZxgCjohy23CY,34549
|
58
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/code.py,sha256=gM7WNsjCfukr7h2fKm1U3zMHN5Wj-_hgy5U817LP9qE,6427
|
59
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/codec.py,sha256=1AUNYxCOUJSZfZlny-asNZ0gmz0eaPmQKjr3biNDhWM,284
|
60
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/config.py,sha256=cWJ1m8PRwzzapsin1XSDjRtYJCgNN6g7gA9q48luDV8,1093
|
61
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/data.py,sha256=oiSGHnrrmJOkxC71bQj1ZsmBsVpE_vPT83IqRuHaNls,5992
|
62
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/errors.py,sha256=wmi2OVsO4IeedScGTTFWvECkHLHMRiukoWXLpjI4-Us,16742
|
63
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/exceptions.py,sha256=4gRsYa6kuBy1qFYiBUYElup_cvOe7QgPQtryHAYphzo,1849
|
64
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/model.py,sha256=il8TjxrvL3EJKTZ88IDx2pJXcaKbXUSwsOIV4lXsW9Q,33390
|
65
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/runner.py,sha256=eDXsNFWKidx5HLmP2MGpgRdeTeoL7dCSXLA_BKy55uE,41889
|
66
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/server.py,sha256=O-yJiJYT5sQPeku9iTRo-SXqkHBq7OhKpHSA5IbKtvM,94918
|
67
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/types.py,sha256=6klFuDHtbhRxrpLOYn1tnDndoRwE0nrolz3tFKOWtd8,14056
|
68
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/actor/__init__.py,sha256=EdDaj0xXvL9QIecooWg3AfPyCHjdCCtKzXmtPRA7pkE,2134
|
69
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/actor/deletor.py,sha256=v33XsCaemmaxZHRZP6JWap1yV9k7WkK6smPB-mwHyZA,4481
|
70
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/__init__.py,sha256=xd-nO76LTGeo7ppCqqv2aOc6nhzzyyRXmYKT4x3_I88,12490
|
71
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/_test.py,sha256=ZaMpMf2CTJ6sdGyENUhdWAY5TLC-kBtszM3dFQbyuWA,4342
|
72
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/password.py,sha256=DQG2BnNEoQ0H-znkHJx0G9-bcdWwg3IgqojcAHhKIsQ,6307
|
73
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/root.py,sha256=lW-_hgQp3ZIzAAe4iBl0rdMU-pFuHIC6ObA3rdFXxkk,1303
|
74
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/backend/__init__.py,sha256=f5nIOWD2zml2YiaBNXtEOzC7SEGgwDFJMB8YzRISJ0A,1689
|
75
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/backend/mqtt.py,sha256=XUwMR8RPzq6EPLub0cy7YzXTS1CkfBZFtZ4W9GTcQBo,2007
|
76
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/__init__.py,sha256=9_8wL9Scv8_Cs8HJyJHGvx1vwXErsuvlsAqNZLcJQR0,8
|
77
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/acl.py,sha256=wSdlzKBjWIFX3IxCdLcG3ZqjvtX8KPtqe38ibyU2VDo,4665
|
78
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/auth.py,sha256=vP22ZIBMjRdUxN4_ELKiDgIE5ZqdMxs1ky1WDVUx50M,7149
|
79
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/code.py,sha256=ycGBoKBB0Gse3Tt9h9WvgiIZVe3Yg-x92RRjfCCCXVQ,8066
|
80
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/codec.py,sha256=8GqOl-oxWFM2D1Fm9Iheot2AmS_SsOYfqfbbde3qvQY,6028
|
81
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/data.py,sha256=ntT6CQkmXtyFMgJNm9WMn23kVP5MR73q53w2WASsoOg,8396
|
82
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/error.py,sha256=XqHmVJgBGjr6XOozi23wEjiTqPopD1CzkIeR1a3Z_vY,4350
|
83
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/internal.py,sha256=wjEHTltUXIMEiXriyd5DuTDlaI_2W2uaJIi-dNLT_OA,7397
|
84
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/job.py,sha256=C2qH7ghQcPL5vj-Pg0YZ2i2Rvg5kpzH58EqBTCaK1Tw,13614
|
85
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/log.py,sha256=ycdtMgiBw2DaCu0yu6tpWKPLlQ33ZZemXsfwZrCzRGg,1350
|
86
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/server.py,sha256=Hl_6FFq322c5KjJCKxH1nCrxo-h0VEwH4IOMbVeUBN4,3392
|
87
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/type.py,sha256=JN0_Abb5wR4UJH5zHnVZgT93NJRYY6qpRD_ZQT13u4k,6226
|
88
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/dump/__init__.py,sha256=L05R6W9eDzUDAr7UhfEo1lZR-UB0qYUUf-5dRHC-p-0,4000
|
89
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/__init__.py,sha256=HW6YAwo_OBVRmTeRCc-ZoUHB7-D78cEONlcb5vACdIE,2760
|
90
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/mqtt.py,sha256=b9pzbwQBmTX2eSiSgNO7nh2-7l8-0TT8n2GxinQ-1l0,5213
|
91
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/tracer.py,sha256=qLEIn9gdlYUypyRYD8O8SbM8ye8XR4xtBl3otP6uNLs,2058
|
92
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/obj/__init__.py,sha256=yeiZ6bWM8XhK28ruqX7RmpPhytYXlOJPRw_hsWbvExk,19800
|
93
|
+
debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/obj/command.py,sha256=QQiOhPtlGV07kuutV0KowmC2HiXhmIFUktofqlRg1GA,7446
|
94
|
+
debian/source/format,sha256=G-cIDXLmtWbfPiNs4sVe_fu7j6HJctgl5bZy_4dzvho,12
|
95
|
+
docs/Makefile,sha256=g6jq_WYItszUyPzdvzs04ZgPOGXE_THsm2zAbvVUMnU,609
|
96
|
+
docs/make.bat,sha256=tZwnc3a-ozijIP3JTHDoSdNFMwXwrELNhOCFMBxB7K0,779
|
97
|
+
docs/source/TODO.rst,sha256=87ZE4VAEzSgYXr2BvUCnMFYa1TSNAr3nPiZNt0b6B5Y,1921
|
98
|
+
docs/source/acls.rst,sha256=qAG7SrTnBJv2IIS36FC74ubt0FJQ5rZBwd8yXuYQZd0,2018
|
99
|
+
docs/source/auth.rst,sha256=9-4se2vH-kbB86BiUMfafTXNtmHrPHH9nZDujRxw0ww,2603
|
100
|
+
docs/source/client_protocol.rst,sha256=X_EMTbWRXBotwAPDRCDeZUEBaK2OXul8t_PV0BiC1Gs,14094
|
101
|
+
docs/source/code.rst,sha256=ihHRtzpeEWGhioCUssakSrbkB7V2heA0Qca4RKcAv00,10371
|
102
|
+
docs/source/command_line.rst,sha256=jBK1-5Kc_ySTiIhVNK7W2Ffdf21MszCLFo3Z_aC04Kw,29241
|
103
|
+
docs/source/common_protocol.rst,sha256=8TT3OMZc0nX8wRSMg6gQk88OwQ2TekWTjcJVK4ymdfc,1281
|
104
|
+
docs/source/conf.py,sha256=v4cO_xK-WpfHeOCQ4RaeHFk8vwBM7Gg3sw6DgGLmpCc,6072
|
105
|
+
docs/source/debugging.rst,sha256=1wZIQGsHjMoLCKAK0TPlvAtxqMU4UyvHa6tUhXN4_eE,2188
|
106
|
+
docs/source/extend.rst,sha256=UjLPvKaod14mEbi20r2Qtx2ROZmsu2cWRAENMfFhlD4,1402
|
107
|
+
docs/source/history.rst,sha256=ba0qchAJyGI0exigWDrhYT26KfxjIYEnf8hFcr_XKJ8,868
|
108
|
+
docs/source/index.rst,sha256=8-oMWmXV6aXzUT6JK-ghYZMphDu98srReAVkj4IV3jU,1866
|
109
|
+
docs/source/model.rst,sha256=8yZfsmoOikxDw-0d82ArPg3MP-XzLWou0lfw8Ry8C0Q,1622
|
110
|
+
docs/source/overview.rst,sha256=-PdRj09LBJP-in5zWMO66OXTCu04tZvuReyeOlHP64c,3409
|
111
|
+
docs/source/related.rst,sha256=CvlTLgsnnha3646NMhH7Kg9KW1WZr0xQistU903C9Gc,2749
|
112
|
+
docs/source/server_protocol.rst,sha256=l9uG0yKOSmr9X7JuokWYbOauGUyp-FZYnbP73UTHNgk,16180
|
113
|
+
docs/source/startup.rst,sha256=vx2_zvNrKHiRaYK5GIfzzJ1SmtMtVJ8yXJHfRhfxWuI,1085
|
114
|
+
docs/source/translator.rst,sha256=b1x0H_8E9abPEA-dBk656wWQpnioGpNmJKfbZz1XnnU,7513
|
115
|
+
docs/source/tutorial.rst,sha256=uoAZR44f6734Y7N9TYLai6-SEF0iPZRfJ8iXHn0yeKA,22429
|
116
|
+
docs/source/v3.rst,sha256=EQf1i4LJe7cSyWCgi_gLYAJjBmeF1KJ5yaKRzpB5psc,3960
|
117
|
+
docs/source/_static/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
118
|
+
examples/pathify.py,sha256=cq2j7Nqhl3jmoNZ6l8wMj4j7DkHMxyB7-oTOrCZA0xQ,1128
|
119
|
+
examples/code/transform.scale.yml,sha256=aim0aTXvbrGfkNsZ6WM5JUHTXfZdGCvKPGhq-8O9IQo,550
|
120
|
+
examples/code/transform.switch.yml,sha256=NUoO3241TtL-L-orMR0a3i2I0ZJLpgbz_TVXT07NocE,3033
|
121
|
+
examples/code/transform.timeslot.yml,sha256=9SSOEE77rT2iveH0UZLrmv9VeUJkAgb5k5bGV5C8WAk,2142
|
122
|
+
moat/kv/__init__.py,sha256=TO2TyH5Focv78vDDqtiN1vZVLsVihrOqvHBAlLIgVRA,508
|
123
|
+
moat/kv/_cfg.yaml,sha256=HMyyiInthAOme_j9ydpfMzSvWVn_wgpNFAFyhpOCsuo,2153
|
124
|
+
moat/kv/_main.py,sha256=SgI4ef8AQDOC4N4pLRiyaiSiFIzN-J337WIcuC7DPOY,2234
|
125
|
+
moat/kv/client.py,sha256=c8YV0sjpO2XYpNE-fep7fDO2kgsNdShZxgCjohy23CY,34549
|
126
|
+
moat/kv/code.py,sha256=gM7WNsjCfukr7h2fKm1U3zMHN5Wj-_hgy5U817LP9qE,6427
|
127
|
+
moat/kv/codec.py,sha256=1AUNYxCOUJSZfZlny-asNZ0gmz0eaPmQKjr3biNDhWM,284
|
128
|
+
moat/kv/config.py,sha256=cWJ1m8PRwzzapsin1XSDjRtYJCgNN6g7gA9q48luDV8,1093
|
129
|
+
moat/kv/data.py,sha256=oiSGHnrrmJOkxC71bQj1ZsmBsVpE_vPT83IqRuHaNls,5992
|
130
|
+
moat/kv/errors.py,sha256=wmi2OVsO4IeedScGTTFWvECkHLHMRiukoWXLpjI4-Us,16742
|
131
|
+
moat/kv/exceptions.py,sha256=4gRsYa6kuBy1qFYiBUYElup_cvOe7QgPQtryHAYphzo,1849
|
132
|
+
moat/kv/model.py,sha256=il8TjxrvL3EJKTZ88IDx2pJXcaKbXUSwsOIV4lXsW9Q,33390
|
133
|
+
moat/kv/runner.py,sha256=eDXsNFWKidx5HLmP2MGpgRdeTeoL7dCSXLA_BKy55uE,41889
|
134
|
+
moat/kv/server.py,sha256=O-yJiJYT5sQPeku9iTRo-SXqkHBq7OhKpHSA5IbKtvM,94918
|
135
|
+
moat/kv/types.py,sha256=6klFuDHtbhRxrpLOYn1tnDndoRwE0nrolz3tFKOWtd8,14056
|
136
|
+
moat/kv/actor/__init__.py,sha256=EdDaj0xXvL9QIecooWg3AfPyCHjdCCtKzXmtPRA7pkE,2134
|
137
|
+
moat/kv/actor/deletor.py,sha256=v33XsCaemmaxZHRZP6JWap1yV9k7WkK6smPB-mwHyZA,4481
|
138
|
+
moat/kv/auth/__init__.py,sha256=xd-nO76LTGeo7ppCqqv2aOc6nhzzyyRXmYKT4x3_I88,12490
|
139
|
+
moat/kv/auth/_test.py,sha256=ZaMpMf2CTJ6sdGyENUhdWAY5TLC-kBtszM3dFQbyuWA,4342
|
140
|
+
moat/kv/auth/password.py,sha256=DQG2BnNEoQ0H-znkHJx0G9-bcdWwg3IgqojcAHhKIsQ,6307
|
141
|
+
moat/kv/auth/root.py,sha256=lW-_hgQp3ZIzAAe4iBl0rdMU-pFuHIC6ObA3rdFXxkk,1303
|
142
|
+
moat/kv/backend/__init__.py,sha256=f5nIOWD2zml2YiaBNXtEOzC7SEGgwDFJMB8YzRISJ0A,1689
|
143
|
+
moat/kv/backend/mqtt.py,sha256=XUwMR8RPzq6EPLub0cy7YzXTS1CkfBZFtZ4W9GTcQBo,2007
|
144
|
+
moat/kv/command/__init__.py,sha256=9_8wL9Scv8_Cs8HJyJHGvx1vwXErsuvlsAqNZLcJQR0,8
|
145
|
+
moat/kv/command/acl.py,sha256=wSdlzKBjWIFX3IxCdLcG3ZqjvtX8KPtqe38ibyU2VDo,4665
|
146
|
+
moat/kv/command/auth.py,sha256=vP22ZIBMjRdUxN4_ELKiDgIE5ZqdMxs1ky1WDVUx50M,7149
|
147
|
+
moat/kv/command/code.py,sha256=ycGBoKBB0Gse3Tt9h9WvgiIZVe3Yg-x92RRjfCCCXVQ,8066
|
148
|
+
moat/kv/command/codec.py,sha256=8GqOl-oxWFM2D1Fm9Iheot2AmS_SsOYfqfbbde3qvQY,6028
|
149
|
+
moat/kv/command/data.py,sha256=ntT6CQkmXtyFMgJNm9WMn23kVP5MR73q53w2WASsoOg,8396
|
150
|
+
moat/kv/command/error.py,sha256=XqHmVJgBGjr6XOozi23wEjiTqPopD1CzkIeR1a3Z_vY,4350
|
151
|
+
moat/kv/command/internal.py,sha256=wjEHTltUXIMEiXriyd5DuTDlaI_2W2uaJIi-dNLT_OA,7397
|
152
|
+
moat/kv/command/job.py,sha256=C2qH7ghQcPL5vj-Pg0YZ2i2Rvg5kpzH58EqBTCaK1Tw,13614
|
153
|
+
moat/kv/command/log.py,sha256=ycdtMgiBw2DaCu0yu6tpWKPLlQ33ZZemXsfwZrCzRGg,1350
|
154
|
+
moat/kv/command/server.py,sha256=Hl_6FFq322c5KjJCKxH1nCrxo-h0VEwH4IOMbVeUBN4,3392
|
155
|
+
moat/kv/command/type.py,sha256=JN0_Abb5wR4UJH5zHnVZgT93NJRYY6qpRD_ZQT13u4k,6226
|
156
|
+
moat/kv/command/dump/__init__.py,sha256=L05R6W9eDzUDAr7UhfEo1lZR-UB0qYUUf-5dRHC-p-0,4000
|
157
|
+
moat/kv/mock/__init__.py,sha256=HW6YAwo_OBVRmTeRCc-ZoUHB7-D78cEONlcb5vACdIE,2760
|
158
|
+
moat/kv/mock/mqtt.py,sha256=b9pzbwQBmTX2eSiSgNO7nh2-7l8-0TT8n2GxinQ-1l0,5213
|
159
|
+
moat/kv/mock/tracer.py,sha256=qLEIn9gdlYUypyRYD8O8SbM8ye8XR4xtBl3otP6uNLs,2058
|
160
|
+
moat/kv/obj/__init__.py,sha256=yeiZ6bWM8XhK28ruqX7RmpPhytYXlOJPRw_hsWbvExk,19800
|
161
|
+
moat/kv/obj/command.py,sha256=QQiOhPtlGV07kuutV0KowmC2HiXhmIFUktofqlRg1GA,7446
|
162
|
+
moat_kv-0.71.0.dist-info/licenses/LICENSE.txt,sha256=L5vKJLVOg5t0CEEPpW9-O_0vzbP0PEjEF06tLvnIDuk,541
|
163
|
+
scripts/current,sha256=91NXrtN9AWtOdwGZs-yTaAgU_EKF4xXPo9Dvr9E3BkA,374
|
164
|
+
scripts/env,sha256=Le76hZQSvDrNiFfhCzK0PDe4STLOdIpMcsQTYgk74Qs,113
|
165
|
+
scripts/init,sha256=gvezyZaPG-6RJ5nLC9Wc0kR_tZaiJAjLpJfRVnyfFik,1071
|
166
|
+
scripts/recover,sha256=dBuIN9v6yJ_dffVAsax8AfnD9oRfQHi0U8kk5w1ReH4,332
|
167
|
+
scripts/rotate,sha256=zoBI7A5hN54TNgC0FYIMGusHmqe1LcICNyhkukL7eYs,837
|
168
|
+
scripts/run,sha256=Zbh5Qa5oYmn-fMpg_qUaPVbJrpDx4ht0rjKSm0eQt7E,795
|
169
|
+
scripts/run-all,sha256=GlheLEcCxQejv0cPmPPHSpXvK0ZcGQ_XDbt7W-ouPTM,220
|
170
|
+
scripts/run-any,sha256=y0y1Lk7ppUnOtiYrcAWHBetsW77nZEmlx-S2A7mhxYg,210
|
171
|
+
scripts/run-single,sha256=GmGi5Nu0uUmcs5PJiEBaEbz3O7k1-669nUoAX-Bj2KQ,316
|
172
|
+
scripts/success,sha256=KCkdAPsgiEiUBcEgluKJFcB5fGk6VEv0Uo8FP9frKLA,33
|
173
|
+
systemd/moat-kv-recover.service,sha256=zqqDEBW21iQ8O2tBdiAMEUoGdgt1ZLLzmhToIAq76Ew,355
|
174
|
+
systemd/moat-kv-rotate.service,sha256=BFhLT6FIwk0w0q9AH_mfKS9S1T0wcjr-8oH01bn2LPI,355
|
175
|
+
systemd/moat-kv-rotate.timer,sha256=vQ6oVU4KhvD9q-90y8GUil1ewIv0ld4jULrLelHJ-2I,161
|
176
|
+
systemd/moat-kv-run-all.service,sha256=D34_d8o3qmNAGEtlqpdx4oaU2jUd7h3qypkjQMcGgHE,428
|
177
|
+
systemd/moat-kv-run-all@.service,sha256=-00TrYu3-3k01spmb0_FfbZFBkzguOMcp3LUyjiesfI,397
|
178
|
+
systemd/moat-kv-run-any.service,sha256=kINPhW7CIQCIuMsuKnXTkzOw9dTZ-ujxpJWWQPcC-Ic,428
|
179
|
+
systemd/moat-kv-run-any@.service,sha256=EQXBp1P-MgAzGD1wr2RXgBDkz_zx1MGcz6FMf09GCwU,397
|
180
|
+
systemd/moat-kv-run-single.service,sha256=ASLd9fH-tY8ZnAsuPmNxiuKaVfGzLC56EJU39UtlEgk,436
|
181
|
+
systemd/moat-kv-run-single@.service,sha256=uhy3Pl9ojm4vJhYVP1CxYdM_e-vtIq0q6b-oWjrdABQ,402
|
182
|
+
systemd/moat-kv.service,sha256=g9BtStXpKDQ0o3Ivgw5t9s5KintzXabJIR6FvL-nJnQ,502
|
183
|
+
systemd/postinst,sha256=INv8dSI8KT5VKX9Fr8uN0l6IbAO3Bi28aTQTgfQArL8,198
|
184
|
+
systemd/sysusers,sha256=swfLW1o9tZ8i1d8KL5JP75R1p7DVMekLX0r-YTNPZlY,78
|
185
|
+
moat_kv-0.71.0.dist-info/METADATA,sha256=sRDrUCQS6Kf6Z6xmDdcXPzbNFv3wougCrsWIRcrqu2c,3271
|
186
|
+
moat_kv-0.71.0.dist-info/WHEEL,sha256=xcaH6rP_nCxh1LBIPM7Q0uOnzSGjsIye-Q44j_zbzw8,104
|
187
|
+
moat_kv-0.71.0.dist-info/top_level.txt,sha256=LyFVSz3-SU-7B8r2qZ3ODVF_QvXqE08qepkD1rfQLk4,56
|
188
|
+
moat_kv-0.71.0.dist-info/RECORD,,
|
scripts/current
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
set -ex
|
3
|
+
|
4
|
+
# This script takes the most-current state files and writes them to the
|
5
|
+
# named file.
|
6
|
+
|
7
|
+
test -n "$1"
|
8
|
+
F="$(python3 -c "import sys; from os.path import abspath; print(abspath(sys.argv[1]))" "$1")"
|
9
|
+
|
10
|
+
mkdir -p "$DEST"
|
11
|
+
cd "$DEST"
|
12
|
+
d=$(find . -name 0.dkv -size +1c -print | sort -r | head -1)
|
13
|
+
cd $(dirname "$d")
|
14
|
+
|
15
|
+
ls | grep '\.dkv$' | sort -n | xargs cat > "$TEMP"
|
scripts/env
ADDED
scripts/init
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
set -ex
|
3
|
+
|
4
|
+
# This script sets up an initial MoaT-KV master.
|
5
|
+
systemd-sysusers --no-pager /usr/lib/sysusers.d/moat-kv.conf
|
6
|
+
|
7
|
+
. /usr/lib/moat/kv/env
|
8
|
+
|
9
|
+
mkdir -p /etc/moat
|
10
|
+
test -f /etc/moat/kv.env || touch /etc/moat/kv.env
|
11
|
+
grep -qs '^MODE=' /etc/moat/kv.env || echo MODE=hybrid >>/etc/moat/kv.env
|
12
|
+
grep -qs '^NAME=' /etc/moat/kv.env || echo NAME=$(hostname) >>/etc/moat/kv.env
|
13
|
+
grep -qs '^LOCAL=' /etc/moat/kv.env || echo LOCAL=no >>/etc/moat/kv.env
|
14
|
+
|
15
|
+
. /etc/moat/kv.env
|
16
|
+
|
17
|
+
if test "$MODE" != "slave" ; then
|
18
|
+
mkdir -p "$DEST"
|
19
|
+
cd "$DEST"
|
20
|
+
d="$(find . -name 0.dkv -size +1c | sort | head -1)"
|
21
|
+
if test -n "$d" ; then
|
22
|
+
d="$(dirname "$d")"
|
23
|
+
else
|
24
|
+
d="$(date -d 2019-01-01 +"$DATE")"
|
25
|
+
mkdir -p "$d"
|
26
|
+
fi
|
27
|
+
cd $d
|
28
|
+
|
29
|
+
if test ! -s "0.dkv" ; then
|
30
|
+
moat kv dump init $NAME 0.dkv
|
31
|
+
chown -R MoaT-KV:MoaT "$DEST"
|
32
|
+
fi
|
33
|
+
fi
|
34
|
+
|
35
|
+
if test "$(moat util cfg kv.conn.host)" = "127.0.0.1" ; then
|
36
|
+
systemctl enable moat-kv.service
|
37
|
+
systemctl enable moat-kv-rotate.timer || true # may be masked
|
38
|
+
systemctl restart moat-kv.service &
|
39
|
+
fi
|
scripts/recover
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -ex
|
3
|
+
|
4
|
+
# This script tries to recover from hybrid mode start failure
|
5
|
+
# by re-starting in master mode.
|
6
|
+
|
7
|
+
if ! test "$MODE" = hybrid ; then
|
8
|
+
echo "Not hybrid mode. Not restarting." >&2
|
9
|
+
exit 1
|
10
|
+
fi
|
11
|
+
|
12
|
+
if test -f "$TEMP" ; then
|
13
|
+
echo "$TEMP exists, not restarting" >&2
|
14
|
+
exit 1
|
15
|
+
fi
|
16
|
+
/usr/lib/moat/kv/current "$TEMP"
|
17
|
+
|
scripts/rotate
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
set -ex
|
3
|
+
|
4
|
+
# This script tells MoaT-KV to continue with the next log file.
|
5
|
+
# By default it writes a full dump daily.
|
6
|
+
|
7
|
+
cd "$DEST"
|
8
|
+
D=$(date +"$DATE")
|
9
|
+
test -d $D || mkdir -p $D
|
10
|
+
cd $D
|
11
|
+
|
12
|
+
x=$(ls|sort -rn|head -1)
|
13
|
+
if test -n "$x" ; then
|
14
|
+
x=$(expr $(basename $x .dkv) + 1)
|
15
|
+
I="-i"
|
16
|
+
else
|
17
|
+
x=0
|
18
|
+
I=""
|
19
|
+
fi
|
20
|
+
|
21
|
+
export PYTHONPATH
|
22
|
+
moat -c /etc/moat/moat.cfg kv client log dest $I "$DEST/$D/$x.dkv"
|
23
|
+
if test $x -eq 0 ; then
|
24
|
+
# Now, delete some old backups
|
25
|
+
cd "$DEST"
|
26
|
+
|
27
|
+
# delete hourly after ten days but keep the day's first backup
|
28
|
+
find . -maxdepth 1 ! -name \*-00 -mtime +10 -print0|xargs -0r rm -rf
|
29
|
+
# delete daily after 45 days but keep the month's first backup
|
30
|
+
find . -maxdepth 1 ! -name \*01-00 -mtime +45 -print0|xargs -0r rm -rf
|
31
|
+
# delete monthly (i.e. the rest) after a year or so
|
32
|
+
find . -maxdepth 1 -mtime +400 -print0|xargs -0r rm -rf
|
33
|
+
fi
|
scripts/run
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -ex
|
3
|
+
|
4
|
+
# This script starts up MoaT-KV.
|
5
|
+
|
6
|
+
# Normally, starting MoaT-KV on a host where clients don't connect locally is
|
7
|
+
# a bad idea. However, on a system that has more than one network namespace
|
8
|
+
# you need to use a specific address. So set LOCAL=yes to force starting
|
9
|
+
# anyway.
|
10
|
+
|
11
|
+
if test "$LOCAL" != "yes" && test "$(moat util cfg kv.conn.host)" != "127.0.0.1"; then
|
12
|
+
echo "Server is not localhost: not starting."
|
13
|
+
exit 42 # mark as succeeded
|
14
|
+
fi
|
15
|
+
|
16
|
+
if test "$MODE" = "master" ; then
|
17
|
+
/usr/lib/moat/kv/current "$TEMP"
|
18
|
+
fi
|
19
|
+
|
20
|
+
if test ! -v NAME ; then
|
21
|
+
echo "NAME is not set. Exiting." >&2
|
22
|
+
exit 1
|
23
|
+
fi
|
24
|
+
|
25
|
+
if test -v TEMP && test -s "$TEMP" ; then
|
26
|
+
exec moat -c /etc/moat/moat.cfg kv server -a -l "$TEMP" "$NAME"
|
27
|
+
else
|
28
|
+
exec moat -c /etc/moat/moat.cfg kv server "$NAME"
|
29
|
+
fi
|
scripts/run-all
ADDED
scripts/run-any
ADDED
scripts/run-single
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -ex
|
3
|
+
|
4
|
+
# This script file starts up a MoaT-KV single-node runner.
|
5
|
+
|
6
|
+
if test ! -v NAME ; then
|
7
|
+
echo "NAME is not set. Exiting." >&2
|
8
|
+
exit 1
|
9
|
+
fi
|
10
|
+
|
11
|
+
if test $# = 1 ; then
|
12
|
+
exec moat -c /etc/moat/moat.cfg kv job -n "$NAME" -g "$1" run
|
13
|
+
else
|
14
|
+
exec moat -c /etc/moat/moat.cfg kv job -n "$NAME" run
|
15
|
+
fi
|