|
@@ -41,6 +41,7 @@ except ImportError:
|
41
|
41
|
error("Please install PyYaml with: pip3 install pyyaml")
|
42
|
42
|
|
43
|
43
|
VERSION = "1.2"
|
|
44
|
+REGISTRY_DIR = "REGISTRY_STORAGE_FILESYSTEM_ROOTREGISTRY_DIR"
|
44
|
45
|
|
45
|
46
|
|
46
|
47
|
def dockerized():
|
|
@@ -158,9 +159,10 @@ class RegistryCleaner():
|
158
|
159
|
except (APIError, exceptions.ConnectionError) as err:
|
159
|
160
|
error(err)
|
160
|
161
|
if dockerized():
|
161
|
|
- if not os.getenv("REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY"):
|
162
|
|
- os.environ['REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY'] = "/var/lib/registry"
|
163
|
|
- self.registry_dir = os.environ['REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY']
|
|
162
|
+ try:
|
|
163
|
+ self.registry_dir = os.environ[REGISTRY_DIR]
|
|
164
|
+ except KeyError:
|
|
165
|
+ self.registry_dir = "/var/lib/registry"
|
164
|
166
|
return
|
165
|
167
|
|
166
|
168
|
try:
|
|
@@ -177,8 +179,8 @@ class RegistryCleaner():
|
177
|
179
|
|
178
|
180
|
self.registry_dir = self.get_registry_dir()
|
179
|
181
|
|
180
|
|
- if dockerized() and not os.getenv("REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY"):
|
181
|
|
- os.environ['REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY'] = self.registry_dir
|
|
182
|
+ if dockerized():
|
|
183
|
+ os.environ[REGISTRY_DIR] = self.registry_dir
|
182
|
184
|
|
183
|
185
|
def __call__(self):
|
184
|
186
|
try:
|
|
@@ -206,8 +208,8 @@ class RegistryCleaner():
|
206
|
208
|
def get_file(self, filename):
|
207
|
209
|
'''Returns the contents of the specified file from the container'''
|
208
|
210
|
try:
|
209
|
|
- with self.docker.api.get_archive(self.container, filename)[0] as tar_stream:
|
210
|
|
- with BytesIO(tar_stream.data) as buf:
|
|
211
|
+ with self.docker.api.get_archive(self.container, filename)[0] as tar:
|
|
212
|
+ with BytesIO(tar.data) as buf:
|
211
|
213
|
with tarfile.open(fileobj=buf) as tarf:
|
212
|
214
|
with tarf.extractfile(os.path.basename(filename)) as f:
|
213
|
215
|
data = f.read()
|
|
@@ -217,14 +219,13 @@ class RegistryCleaner():
|
217
|
219
|
|
218
|
220
|
def get_registry_dir(self):
|
219
|
221
|
'''Gets the Registry directory'''
|
220
|
|
- registry_dir = os.getenv("REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY")
|
|
222
|
+ registry_dir = os.getenv(REGISTRY_DIR)
|
221
|
223
|
if registry_dir:
|
222
|
224
|
return registry_dir
|
223
|
225
|
|
224
|
|
- registry_dir = ""
|
225
|
226
|
for env in self.info['Config']['Env']:
|
226
|
227
|
var, value = env.split("=", 1)
|
227
|
|
- if var == "REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY":
|
|
228
|
+ if var == REGISTRY_DIR:
|
228
|
229
|
registry_dir = value
|
229
|
230
|
break
|
230
|
231
|
|
|
@@ -246,10 +247,10 @@ class RegistryCleaner():
|
246
|
247
|
def get_image_version(self):
|
247
|
248
|
'''Gets the Docker distribution version running on the container'''
|
248
|
249
|
if self.info['State']['Running']:
|
249
|
|
- data = self.docker.containers.get(self.container).exec_run("/bin/registry --version").decode('utf-8')
|
|
250
|
+ data = self.docker.containers.get(self.container).exec_run("/bin/registry --version")
|
250
|
251
|
else:
|
251
|
|
- data = self.docker.containers.run(self.info["Image"], command="--version", remove=True).decode('utf-8')
|
252
|
|
- return data.split()[2]
|
|
252
|
+ data = self.docker.containers.run(self.info["Image"], command="--version", remove=True)
|
|
253
|
+ return data.decode('utf-8').split()[2]
|
253
|
254
|
|
254
|
255
|
def garbage_collect(self):
|
255
|
256
|
'''Runs garbage-collect'''
|