seto 2.2.0__tar.gz → 2.2.2__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 (29) hide show
  1. {seto-2.2.0 → seto-2.2.2}/PKG-INFO +1 -1
  2. {seto-2.2.0 → seto-2.2.2}/pyproject.toml +1 -1
  3. {seto-2.2.0 → seto-2.2.2}/seto/commands/deploy.py +37 -38
  4. {seto-2.2.0 → seto-2.2.2}/seto/core/docker.py +2 -2
  5. {seto-2.2.0 → seto-2.2.2}/LICENSE +0 -0
  6. {seto-2.2.0 → seto-2.2.2}/LICENSE_HEADER.txt +0 -0
  7. {seto-2.2.0 → seto-2.2.2}/README.md +0 -0
  8. {seto-2.2.0 → seto-2.2.2}/seto/__init__.py +0 -0
  9. {seto-2.2.0 → seto-2.2.2}/seto/__main__.py +0 -0
  10. {seto-2.2.0 → seto-2.2.2}/seto/commands/config.py +0 -0
  11. {seto-2.2.0 → seto-2.2.2}/seto/commands/down.py +0 -0
  12. {seto-2.2.0 → seto-2.2.2}/seto/commands/mount.py +0 -0
  13. {seto-2.2.0 → seto-2.2.2}/seto/commands/setup.py +0 -0
  14. {seto-2.2.0 → seto-2.2.2}/seto/commands/umount.py +0 -0
  15. {seto-2.2.0 → seto-2.2.2}/seto/commands/volumes.py +0 -0
  16. {seto-2.2.0 → seto-2.2.2}/seto/core/command.py +0 -0
  17. {seto-2.2.0 → seto-2.2.2}/seto/core/dns.py +0 -0
  18. {seto-2.2.0 → seto-2.2.2}/seto/core/driver.py +0 -0
  19. {seto-2.2.0 → seto-2.2.2}/seto/core/network.py +0 -0
  20. {seto-2.2.0 → seto-2.2.2}/seto/core/parser.py +0 -0
  21. {seto-2.2.0 → seto-2.2.2}/seto/core/permissions.py +0 -0
  22. {seto-2.2.0 → seto-2.2.2}/seto/core/shell.py +0 -0
  23. {seto-2.2.0 → seto-2.2.2}/seto/core/swarm.py +0 -0
  24. {seto-2.2.0 → seto-2.2.2}/seto/core/traefik.py +0 -0
  25. {seto-2.2.0 → seto-2.2.2}/seto/core/volume.py +0 -0
  26. {seto-2.2.0 → seto-2.2.2}/seto/drivers/gluster.py +0 -0
  27. {seto-2.2.0 → seto-2.2.2}/seto/drivers/nfs.py +0 -0
  28. {seto-2.2.0 → seto-2.2.2}/seto/shells/local.py +0 -0
  29. {seto-2.2.0 → seto-2.2.2}/seto/shells/remote.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seto
3
- Version: 2.2.0
3
+ Version: 2.2.2
4
4
  Summary: A Docker Swarm Deployment Manager
5
5
  License: Apache 2.0
6
6
  Keywords: docker,swarm,manager
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "seto"
7
- version = "2.2.0"
7
+ version = "2.2.2"
8
8
  description = "A Docker Swarm Deployment Manager"
9
9
  keywords = ["docker", "swarm", "manager"]
10
10
  authors = ["Sébastien Demanou <demsking@gmail.com>"]
@@ -43,12 +43,12 @@ def parse_service_vars(entries: dict[str, Any], hostname: str) -> None:
43
43
  entries[key] = re.sub(NODE_HOSTNAME_RE, hostname, value)
44
44
 
45
45
 
46
- def pick_label_value(labels: dict[str, Any], name: str) -> Any | None:
46
+ def pick_label_value(labels: dict[str, Any], name: str) -> Any | str:
47
47
  for label, value in labels.items():
48
48
  if label.endswith(name):
49
49
  del labels[label]
50
50
  return value
51
- return None
51
+ return ''
52
52
 
53
53
 
54
54
  def parse_compose_config(
@@ -98,45 +98,44 @@ def parse_compose_config(
98
98
  parse_service_vars(service_labels, compose.node_hostname)
99
99
  parse_service_vars(service_environment, compose.node_hostname)
100
100
 
101
+ service['ports'] = service_ports
102
+ service_traefik_rule = pick_label_value(service_labels, '.rule')
103
+ service_traefik_middlewares = pick_label_value(service_labels, '.middlewares')
101
104
  service_traefik_port = pick_label_value(service_labels, '.loadbalancer.server.port')
105
+ service_traefik_entryPoints = pick_label_value(service_labels, '.entryPoints')
106
+ service_traefik_tls_certresolver = pick_label_value(service_labels, '.tls.certresolver')
107
+ service_traefik_service = pick_label_value(service_labels, '.service')
108
+ published_port = random.randint(53100, 64200)
109
+
110
+ if not service_traefik_port:
111
+ raise ValueError(f'Service "{service_name}" error: port is missing')
112
+
113
+ service_ports.append(f'{published_port}:{service_traefik_port}')
114
+
115
+ traefik_http_provider_routers[service_name] = {
116
+ 'entryPoints': [service_traefik_entryPoints],
117
+ 'service': service_traefik_service or service_name,
118
+ 'rule': service_traefik_rule,
119
+ 'middlewares': service_traefik_middlewares.split(','),
120
+ 'tls': {
121
+ 'certresolver': service_traefik_tls_certresolver,
122
+ },
123
+ }
102
124
 
103
- if service_traefik_port:
104
- service['ports'] = service_ports
105
- service_traefik_rule = pick_label_value(service_labels, '.rule')
106
- service_traefik_middlewares = pick_label_value(service_labels, '.middlewares')
107
- service_traefik_entryPoints = pick_label_value(service_labels, '.entryPoints')
108
- service_traefik_tls_certresolver = pick_label_value(service_labels, '.tls.certresolver')
109
- service_traefik_service = pick_label_value(service_labels, '.service')
110
- published_port = random.randint(53100, 64200)
111
-
112
- service_ports.append(f'{published_port}:{service_traefik_port}')
113
-
114
- traefik_http_provider_routers[service_name] = {
115
- 'entryPoints': [service_traefik_entryPoints],
116
- 'service': service_traefik_service or service_name,
117
- 'rule': service_traefik_rule,
118
- 'middlewares': service_traefik_middlewares.split(','),
119
- 'tls': {
120
- 'certresolver': service_traefik_tls_certresolver,
121
- },
122
- }
123
-
124
- node_ip = resolve_hostname(compose.node_hostname)
125
- traefik_http_provider_services[service_name] = {
126
- 'loadBalancer': {
127
- 'servers': [
128
- {
129
- 'url': f'http://{node_ip}:{published_port}',
130
- },
131
- ],
132
- },
133
- }
125
+ node_ip = resolve_hostname(compose.node_hostname)
126
+ traefik_http_provider_services[service_name] = {
127
+ 'loadBalancer': {
128
+ 'servers': [
129
+ {
130
+ 'url': f'http://{node_ip}:{published_port}',
131
+ },
132
+ ],
133
+ },
134
+ }
134
135
 
135
- traefik_http_provider_middlewares.update(
136
- convert_middlewares_to_dict(service_labels),
137
- )
138
- else:
139
- print(f'No exposed port found for service "{service_name}"')
136
+ traefik_http_provider_middlewares.update(
137
+ convert_middlewares_to_dict(service_labels),
138
+ )
140
139
 
141
140
 
142
141
  def deploy_seto_stack(args, driver: Driver, replica: list[Setting]) -> None:
@@ -13,9 +13,9 @@
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
15
  import functools
16
+ import json
16
17
  from typing import Any
17
18
 
18
- import yaml
19
19
  from docker import DockerClient
20
20
 
21
21
  from .driver import Driver
@@ -40,7 +40,7 @@ class Docker:
40
40
 
41
41
  @property
42
42
  def resolved_config(self) -> str:
43
- return resolve_env_vars(yaml.dump(self.config))
43
+ return resolve_env_vars(json.dumps(self.config))
44
44
 
45
45
  @property
46
46
  def external_networks(self) -> list[str]:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes