raijin-server 0.2.18__tar.gz → 0.2.20__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 (53) hide show
  1. {raijin_server-0.2.18/src/raijin_server.egg-info → raijin_server-0.2.20}/PKG-INFO +1 -1
  2. {raijin_server-0.2.18 → raijin_server-0.2.20}/setup.cfg +1 -1
  3. raijin_server-0.2.20/src/raijin_server/__init__.py +5 -0
  4. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/cert_manager.py +8 -8
  5. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/metallb.py +16 -4
  6. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/traefik.py +1 -1
  7. {raijin_server-0.2.18 → raijin_server-0.2.20/src/raijin_server.egg-info}/PKG-INFO +1 -1
  8. raijin_server-0.2.18/src/raijin_server/__init__.py +0 -5
  9. {raijin_server-0.2.18 → raijin_server-0.2.20}/LICENSE +0 -0
  10. {raijin_server-0.2.18 → raijin_server-0.2.20}/README.md +0 -0
  11. {raijin_server-0.2.18 → raijin_server-0.2.20}/pyproject.toml +0 -0
  12. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/cli.py +0 -0
  13. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/config.py +0 -0
  14. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/healthchecks.py +0 -0
  15. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/__init__.py +0 -0
  16. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/apokolips_demo.py +0 -0
  17. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/bootstrap.py +0 -0
  18. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/calico.py +0 -0
  19. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/essentials.py +0 -0
  20. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/firewall.py +0 -0
  21. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/full_install.py +0 -0
  22. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/grafana.py +0 -0
  23. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/hardening.py +0 -0
  24. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/harness.py +0 -0
  25. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/istio.py +0 -0
  26. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/kafka.py +0 -0
  27. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/kong.py +0 -0
  28. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/kubernetes.py +0 -0
  29. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/loki.py +0 -0
  30. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/minio.py +0 -0
  31. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/network.py +0 -0
  32. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/observability_dashboards.py +0 -0
  33. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/observability_ingress.py +0 -0
  34. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/prometheus.py +0 -0
  35. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/sanitize.py +0 -0
  36. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/secrets.py +0 -0
  37. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/ssh_hardening.py +0 -0
  38. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/velero.py +0 -0
  39. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/modules/vpn.py +0 -0
  40. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/scripts/__init__.py +0 -0
  41. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/scripts/checklist.sh +0 -0
  42. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/scripts/install.sh +0 -0
  43. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/scripts/log_size_metric.sh +0 -0
  44. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/scripts/pre-deploy-check.sh +0 -0
  45. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/utils.py +0 -0
  46. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server/validators.py +0 -0
  47. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server.egg-info/SOURCES.txt +0 -0
  48. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server.egg-info/dependency_links.txt +0 -0
  49. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server.egg-info/entry_points.txt +0 -0
  50. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server.egg-info/requires.txt +0 -0
  51. {raijin_server-0.2.18 → raijin_server-0.2.20}/src/raijin_server.egg-info/top_level.txt +0 -0
  52. {raijin_server-0.2.18 → raijin_server-0.2.20}/tests/test_full_install_sequence.py +0 -0
  53. {raijin_server-0.2.18 → raijin_server-0.2.20}/tests/test_registry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: raijin-server
3
- Version: 0.2.18
3
+ Version: 0.2.20
4
4
  Summary: CLI para automacao de setup e hardening de servidores Ubuntu Server.
5
5
  Home-page: https://example.com/raijin-server
6
6
  Author: Equipe Raijin
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = raijin-server
3
- version = 0.2.18
3
+ version = 0.2.20
4
4
  description = CLI para automacao de setup e hardening de servidores Ubuntu Server.
5
5
  long_description = file: README.md
6
6
  long_description_content_type = text/markdown
@@ -0,0 +1,5 @@
1
+ """Pacote principal do CLI Raijin Server."""
2
+
3
+ __version__ = "0.2.20"
4
+
5
+ __all__ = ["__version__"]
@@ -1053,16 +1053,16 @@ def _get_cert_manager_status(ctx: ExecutionContext) -> dict:
1053
1053
  result = subprocess.run(
1054
1054
  [
1055
1055
  "kubectl", "get", "pods", "-n", NAMESPACE,
1056
- "-o", "jsonpath={range .items[*]}{.metadata.name}:{.status.phase}\\n{end}"
1056
+ "-o", "jsonpath={range .items[*]}{.metadata.name}={.status.phase} {end}"
1057
1057
  ],
1058
1058
  capture_output=True,
1059
1059
  text=True,
1060
1060
  timeout=10,
1061
1061
  )
1062
1062
  if result.returncode == 0:
1063
- for line in result.stdout.strip().split("\n"):
1064
- if ":" in line:
1065
- name, phase = line.split(":", 1)
1063
+ for item in result.stdout.strip().split():
1064
+ if "=" in item:
1065
+ name, phase = item.rsplit("=", 1)
1066
1066
  status["pods"].append({"name": name, "phase": phase})
1067
1067
 
1068
1068
  status["webhook_ready"] = _test_webhook_connectivity()
@@ -1082,16 +1082,16 @@ def _get_cert_manager_status(ctx: ExecutionContext) -> dict:
1082
1082
  result = subprocess.run(
1083
1083
  [
1084
1084
  "kubectl", "get", "certificates", "-A",
1085
- "-o", "jsonpath={range .items[*]}{.metadata.namespace}/{.metadata.name}:{.status.conditions[0].status}\\n{end}"
1085
+ "-o", "jsonpath={range .items[*]}{.metadata.namespace}/{.metadata.name}={.status.conditions[0].status} {end}"
1086
1086
  ],
1087
1087
  capture_output=True,
1088
1088
  text=True,
1089
1089
  timeout=10,
1090
1090
  )
1091
1091
  if result.returncode == 0 and result.stdout.strip():
1092
- for line in result.stdout.strip().split("\n"):
1093
- if ":" in line:
1094
- name, ready = line.split(":", 1)
1092
+ for item in result.stdout.strip().split():
1093
+ if "=" in item:
1094
+ name, ready = item.rsplit("=", 1)
1095
1095
  status["certificates"].append({"name": name, "ready": ready})
1096
1096
 
1097
1097
  except Exception as e:
@@ -1,5 +1,6 @@
1
1
  """Provisiona MetalLB (L2) com pool de IPs para LoadBalancer em ambientes bare metal."""
2
2
 
3
+ import base64
3
4
  import socket
4
5
  import time
5
6
 
@@ -82,11 +83,11 @@ def _wait_for_pods_running(ctx: ExecutionContext, timeout: int = 180) -> bool:
82
83
  deadline = time.time() + timeout
83
84
 
84
85
  while time.time() < deadline:
85
- # Verifica se ha pods pending ou em erro
86
+ # Usa separador simples para evitar problemas com \n literal
86
87
  result = run_cmd(
87
88
  [
88
89
  "kubectl", "-n", "metallb-system", "get", "pods",
89
- "-o", "jsonpath={range .items[*]}{.metadata.name}:{.status.phase}\\n{end}",
90
+ "-o", "jsonpath={range .items[*]}{.metadata.name}={.status.phase} {end}",
90
91
  ],
91
92
  ctx,
92
93
  check=False,
@@ -101,7 +102,16 @@ def _wait_for_pods_running(ctx: ExecutionContext, timeout: int = 180) -> bool:
101
102
  time.sleep(5)
102
103
  continue
103
104
 
104
- pods = [line.split(":") for line in output.split("\n") if line and ":" in line]
105
+ pods = []
106
+ for item in output.split():
107
+ if "=" in item:
108
+ parts = item.rsplit("=", 1)
109
+ if len(parts) == 2:
110
+ pods.append((parts[0], parts[1]))
111
+
112
+ if not pods:
113
+ time.sleep(5)
114
+ continue
105
115
 
106
116
  all_running = all(phase == "Running" for _, phase in pods)
107
117
  if all_running and pods:
@@ -149,9 +159,11 @@ def _apply_pool_with_retry(manifest: str, ctx: ExecutionContext, max_attempts: i
149
159
  """Aplica IPAddressPool/L2Advertisement com retry."""
150
160
  typer.echo("Aplicando IPAddressPool e L2Advertisement...")
151
161
 
162
+ encoded = base64.b64encode(manifest.encode()).decode()
163
+
152
164
  for attempt in range(1, max_attempts + 1):
153
165
  result = run_cmd(
154
- f"echo '{manifest}' | kubectl apply -f -",
166
+ f"echo '{encoded}' | base64 -d | kubectl apply -f -",
155
167
  ctx,
156
168
  use_shell=True,
157
169
  check=False,
@@ -1,6 +1,7 @@
1
1
  """Configuracao do Traefik via Helm com TLS/ACME e ingressClass."""
2
2
 
3
3
  import socket
4
+ import time
4
5
 
5
6
  import typer
6
7
 
@@ -19,7 +20,6 @@ def _check_existing_traefik(ctx: ExecutionContext) -> bool:
19
20
 
20
21
  def _uninstall_traefik(ctx: ExecutionContext) -> None:
21
22
  """Remove instalacao anterior do Traefik."""
22
- import time
23
23
  typer.echo("Removendo instalacao anterior do Traefik...")
24
24
 
25
25
  run_cmd(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: raijin-server
3
- Version: 0.2.18
3
+ Version: 0.2.20
4
4
  Summary: CLI para automacao de setup e hardening de servidores Ubuntu Server.
5
5
  Home-page: https://example.com/raijin-server
6
6
  Author: Equipe Raijin
@@ -1,5 +0,0 @@
1
- """Pacote principal do CLI Raijin Server."""
2
-
3
- __version__ = "0.2.18"
4
-
5
- __all__ = ["__version__"]
File without changes
File without changes