seto 2.2.0__tar.gz → 2.2.1__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.1}/PKG-INFO +1 -1
  2. {seto-2.2.0 → seto-2.2.1}/pyproject.toml +1 -1
  3. {seto-2.2.0 → seto-2.2.1}/seto/commands/deploy.py +37 -38
  4. {seto-2.2.0 → seto-2.2.1}/LICENSE +0 -0
  5. {seto-2.2.0 → seto-2.2.1}/LICENSE_HEADER.txt +0 -0
  6. {seto-2.2.0 → seto-2.2.1}/README.md +0 -0
  7. {seto-2.2.0 → seto-2.2.1}/seto/__init__.py +0 -0
  8. {seto-2.2.0 → seto-2.2.1}/seto/__main__.py +0 -0
  9. {seto-2.2.0 → seto-2.2.1}/seto/commands/config.py +0 -0
  10. {seto-2.2.0 → seto-2.2.1}/seto/commands/down.py +0 -0
  11. {seto-2.2.0 → seto-2.2.1}/seto/commands/mount.py +0 -0
  12. {seto-2.2.0 → seto-2.2.1}/seto/commands/setup.py +0 -0
  13. {seto-2.2.0 → seto-2.2.1}/seto/commands/umount.py +0 -0
  14. {seto-2.2.0 → seto-2.2.1}/seto/commands/volumes.py +0 -0
  15. {seto-2.2.0 → seto-2.2.1}/seto/core/command.py +0 -0
  16. {seto-2.2.0 → seto-2.2.1}/seto/core/dns.py +0 -0
  17. {seto-2.2.0 → seto-2.2.1}/seto/core/docker.py +0 -0
  18. {seto-2.2.0 → seto-2.2.1}/seto/core/driver.py +0 -0
  19. {seto-2.2.0 → seto-2.2.1}/seto/core/network.py +0 -0
  20. {seto-2.2.0 → seto-2.2.1}/seto/core/parser.py +0 -0
  21. {seto-2.2.0 → seto-2.2.1}/seto/core/permissions.py +0 -0
  22. {seto-2.2.0 → seto-2.2.1}/seto/core/shell.py +0 -0
  23. {seto-2.2.0 → seto-2.2.1}/seto/core/swarm.py +0 -0
  24. {seto-2.2.0 → seto-2.2.1}/seto/core/traefik.py +0 -0
  25. {seto-2.2.0 → seto-2.2.1}/seto/core/volume.py +0 -0
  26. {seto-2.2.0 → seto-2.2.1}/seto/drivers/gluster.py +0 -0
  27. {seto-2.2.0 → seto-2.2.1}/seto/drivers/nfs.py +0 -0
  28. {seto-2.2.0 → seto-2.2.1}/seto/shells/local.py +0 -0
  29. {seto-2.2.0 → seto-2.2.1}/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.1
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.1"
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:
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
File without changes