Skip to content

Commit 8fcb3da

Browse files
committed
locks/storage plugins: access via Manager, eliminate global vars
Author: Adam Höse
1 parent 7157e91 commit 8fcb3da

File tree

6 files changed

+19
-19
lines changed

6 files changed

+19
-19
lines changed

nixops/locks/__init__.py

-3
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,3 @@ def lock(self, **kwargs) -> None:
3838
# the type definition allows adding new arguments later.
3939
def unlock(self, **kwargs) -> None:
4040
raise NotImplementedError
41-
42-
43-
lock_drivers: Dict[str, Type[LockDriver]] = {}

nixops/plugin.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from nixops.storage import BackendRegistration
1+
from nixops.storage import StorageBackend
22

33
from nixops.storage.legacy import LegacyBackend
44
from nixops.storage.memory import MemoryBackend
@@ -9,7 +9,7 @@
99

1010

1111
class InternalPlugin(nixops.plugins.Plugin):
12-
def storage_backends(self) -> BackendRegistration:
12+
def storage_backends(self) -> Dict[str, Type[StorageBackend]]:
1313
return {"legacy": LegacyBackend, "memory": MemoryBackend}
1414

1515
def lock_drivers(self) -> Dict[str, Type[LockDriver]]:

nixops/plugins/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from nixops.backends import MachineState
44
from typing import List, Dict, Optional, Union, Tuple, Type
55

6-
from nixops.storage import BackendRegistration
6+
from nixops.storage import StorageBackend
77
from nixops.locks import LockDriver
88
from functools import lru_cache
99
from typing import Generator
@@ -99,7 +99,7 @@ def docs(self) -> List[Tuple[str, str]]:
9999
def lock_drivers(self) -> Dict[str, Type[LockDriver]]:
100100
return {}
101101

102-
def storage_backends(self) -> BackendRegistration:
102+
def storage_backends(self) -> Dict[str, Type[StorageBackend]]:
103103
""" Extend the core nixops cli parser
104104
:return a set of plugin parser extensions
105105
"""

nixops/plugins/manager.py

+13-4
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
from typing import List, Dict, Generator, Tuple, Any, Set
55
import importlib
66

7-
from nixops.storage import storage_backends
8-
from nixops.locks import lock_drivers
7+
from nixops.storage import StorageBackend
8+
from nixops.locks import LockDriver
99
from . import get_plugins, MachineHooks, DeploymentHooks
1010
import nixops.ansi
1111
import nixops
12+
from typing import Type
1213
import sys
1314

1415

@@ -83,7 +84,9 @@ def docs() -> Generator[Tuple[str, str], None, None]:
8384
yield from plugin.docs()
8485

8586
@staticmethod
86-
def storage_backends():
87+
def storage_backends() -> Dict[str, Type[StorageBackend]]:
88+
storage_backends: Dict[str, Type[StorageBackend]] = {}
89+
8790
for plugin in get_plugins():
8891
for name, backend in plugin.storage_backends().items():
8992
if name not in storage_backends:
@@ -95,8 +98,12 @@ def storage_backends():
9598
)
9699
)
97100

101+
return storage_backends
102+
98103
@staticmethod
99-
def lock_drivers():
104+
def lock_drivers() -> Dict[str, Type[LockDriver]]:
105+
lock_drivers: Dict[str, Type[LockDriver]] = {}
106+
100107
for plugin in get_plugins():
101108
for name, driver in plugin.lock_drivers().items():
102109
if name not in lock_drivers:
@@ -107,3 +114,5 @@ def lock_drivers():
107114
f"Two plugins tried to provide the '{name}' lock driver."
108115
)
109116
)
117+
118+
return lock_drivers

nixops/script_defs.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@
3030

3131
from nixops.plugins import get_plugin_manager
3232
from nixops.evaluation import eval_network
33-
from nixops.storage import storage_backends
34-
from nixops.locks import lock_drivers
3533

3634

3735
PluginManager.load()
@@ -49,6 +47,7 @@ def deployment(args: Namespace) -> Generator[nixops.deployment.Deployment, None,
4947
def network_state(args: Namespace) -> Generator[nixops.statefile.StateFile, None, None]:
5048
network_file: str = args.network_file
5149
network = eval_network(network_file)
50+
storage_backends = PluginManager.storage_backends()
5251
storage_class: Optional[Type[StorageBackend]] = storage_backends.get(
5352
network.storage.provider
5453
)
@@ -63,6 +62,7 @@ def network_state(args: Namespace) -> Generator[nixops.statefile.StateFile, None
6362

6463
lock: LockDriver
6564
lock_class: Type[LockDriver]
65+
lock_drivers = PluginManager.lock_drivers()
6666
try:
6767
lock_class = lock_drivers[network.lock.provider]
6868
except KeyError:

nixops/storage/__init__.py

-6
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,3 @@ def onOpen(self, sf: nixops.statefile.StateFile, **kwargs) -> None:
5151
# the type definition allows adding new arguments later.
5252
def uploadFromFile(self, path: str, **kwargs) -> None:
5353
raise NotImplementedError
54-
55-
56-
BackendRegistration = Dict[str, Type[StorageBackend]]
57-
58-
59-
storage_backends: Dict[str, Type[StorageBackend]] = {}

0 commit comments

Comments
 (0)