mantis-cli 19.1.6__tar.gz → 19.1.7__tar.gz

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.
Files changed (26) hide show
  1. {mantis-cli-19.1.6/mantis_cli.egg-info → mantis_cli-19.1.7}/PKG-INFO +1 -1
  2. mantis_cli-19.1.7/mantis/__init__.py +1 -0
  3. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis/helpers.py +21 -2
  4. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis/managers.py +34 -8
  5. {mantis-cli-19.1.6 → mantis_cli-19.1.7/mantis_cli.egg-info}/PKG-INFO +1 -1
  6. mantis-cli-19.1.6/mantis/__init__.py +0 -1
  7. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/LICENSE +0 -0
  8. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/MANIFEST.in +0 -0
  9. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/README.md +0 -0
  10. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis/__main__.py +0 -0
  11. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis/command_line.py +0 -0
  12. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis/crypto.py +0 -0
  13. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis/environment.py +0 -0
  14. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis/extensions/__init__.py +0 -0
  15. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis/extensions/django.py +0 -0
  16. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis/extensions/nginx.py +0 -0
  17. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis/extensions/postgres.py +0 -0
  18. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis/logic.py +0 -0
  19. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis/mantis.tpl +0 -0
  20. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis_cli.egg-info/SOURCES.txt +0 -0
  21. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis_cli.egg-info/dependency_links.txt +0 -0
  22. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis_cli.egg-info/entry_points.txt +0 -0
  23. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis_cli.egg-info/requires.txt +0 -0
  24. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/mantis_cli.egg-info/top_level.txt +0 -0
  25. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/setup.cfg +0 -0
  26. {mantis-cli-19.1.6 → mantis_cli-19.1.7}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mantis-cli
3
- Version: 19.1.6
3
+ Version: 19.1.7
4
4
  Summary: Management command to build and deploy webapps, especially based on Django
5
5
  Home-page: https://github.com/PragmaticMates/mantis-cli
6
6
  Author: Erik Telepovský
@@ -0,0 +1 @@
1
+ VERSION = '19.1.7'
@@ -108,5 +108,24 @@ def random_string(n=10):
108
108
  chars = string.ascii_lowercase + string.ascii_uppercase + string.digits
109
109
  return ''.join(random.choice(chars) for _ in range(n))
110
110
 
111
-
112
-
111
+ def merge_json(obj1, obj2):
112
+ # Base case: if both values are dictionaries, merge recursively
113
+ if isinstance(obj1, dict) and isinstance(obj2, dict):
114
+ merged = {}
115
+ for key in obj1.keys() | obj2.keys(): # Union of both sets of keys
116
+ if key in obj1 and key in obj2:
117
+ merged[key] = merge_json(obj1[key], obj2[key])
118
+ elif key in obj1:
119
+ merged[key] = obj1[key]
120
+ else:
121
+ merged[key] = obj2[key]
122
+ return merged
123
+ # If both are lists, combine them
124
+ elif isinstance(obj1, list) and isinstance(obj2, list):
125
+ return obj1 + obj2
126
+ # If both values are not dicts or lists, return value from obj2
127
+ else:
128
+ if obj1 == obj2:
129
+ return obj1
130
+ else:
131
+ raise ValueError(f'Trying to merge objects: {obj1} and {obj2}')
@@ -5,12 +5,12 @@ import yaml
5
5
  from collections import defaultdict
6
6
  from datetime import datetime
7
7
  from os import path
8
- from os.path import dirname, normpath
8
+ from os.path import normpath
9
9
  from time import sleep
10
10
 
11
11
  from mantis.crypto import Crypto
12
12
  from mantis.environment import Environment
13
- from mantis.helpers import CLI, Colors
13
+ from mantis.helpers import CLI, Colors, merge_json
14
14
  from mantis.logic import find_config, load_config, check_config, load_template_config
15
15
 
16
16
 
@@ -158,6 +158,9 @@ class AbstractManager(object):
158
158
  # Remove empty strings
159
159
  self.compose_files = list(filter(None, compose_file_paths))
160
160
 
161
+ # Read compose files
162
+ self.compose_config = self.read_compose_configs()
163
+
161
164
  def check_environment_encryption(self, env_file):
162
165
  decrypted_environment = self.decrypt_env(env_file=env_file, return_value=True) # .env.encrypted
163
166
  loaded_environment = self.env.load(env_file) # .env
@@ -928,18 +931,28 @@ class BaseManager(AbstractManager):
928
931
  """
929
932
  for service in self.services():
930
933
  containers = self.get_service_containers(service)
934
+
931
935
  num_containers = len(containers)
932
936
 
933
937
  if num_containers != 1:
934
- return CLI.info(f'Service {service} has {num_containers} containers. Skipping removing suffixes')
938
+ CLI.info(f'Service {service} has {num_containers} containers. Skipping removing suffix.')
939
+ continue
935
940
 
936
941
  container = containers[0]
937
942
 
938
- if container.split('-')[-1].isdigit():
939
- if container not in self.services():
940
- CLI.info(f'Removing suffix of container {container}')
941
- new_container = container.rsplit('-', maxsplit=1)[0]
942
- self.docker(f'container rename {container} {new_container}')
943
+ if not container.split('-')[-1].isdigit():
944
+ continue
945
+
946
+ new_container = container.rsplit('-', maxsplit=1)[0]
947
+ defined_container_name = self.compose_config.get('services', {}).get(service, {}).get('container_name', None)
948
+
949
+ if container == defined_container_name:
950
+ CLI.info(f'Service {service} has defined the same container name ({defined_container_name}). Skipping removing suffix.')
951
+ continue
952
+
953
+ if container not in self.services():
954
+ CLI.info(f'Removing suffix of container {container}')
955
+ self.docker(f'container rename {container} {new_container}')
943
956
 
944
957
  def restart_service(self, service):
945
958
  """
@@ -1162,6 +1175,19 @@ class BaseManager(AbstractManager):
1162
1175
 
1163
1176
  return None
1164
1177
 
1178
+ def read_compose_configs(self):
1179
+ """
1180
+ Returns merged compose configs
1181
+ """
1182
+ config = {}
1183
+
1184
+ for compose_file in self.compose_files:
1185
+ with open(compose_file, 'r') as file:
1186
+ compose_data = yaml.safe_load(file)
1187
+ config = merge_json(config, compose_data)
1188
+
1189
+ return config
1190
+
1165
1191
  def get_deploy_replicas(self, service):
1166
1192
  """
1167
1193
  Returns default number of deploy replicas of given services
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mantis-cli
3
- Version: 19.1.6
3
+ Version: 19.1.7
4
4
  Summary: Management command to build and deploy webapps, especially based on Django
5
5
  Home-page: https://github.com/PragmaticMates/mantis-cli
6
6
  Author: Erik Telepovský
@@ -1 +0,0 @@
1
- VERSION = '19.1.6'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes