Skip to content

Commit 0fb0a76

Browse files
authored
use absolute fqdn (#618)
* s/error/warning for transient name resolution fault log
1 parent cd97cbf commit 0fb0a76

File tree

4 files changed

+17
-9
lines changed

4 files changed

+17
-9
lines changed

src/charm.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@
100100
from relations.mysql_root import MySQLRootRelation
101101
from rotate_mysql_logs import RotateMySQLLogs, RotateMySQLLogsCharmEvents
102102
from upgrade import MySQLK8sUpgrade, get_mysql_k8s_dependencies_model
103-
from utils import compare_dictionaries, generate_random_password
103+
from utils import compare_dictionaries, dotappend, generate_random_password
104104

105105
logger = logging.getLogger(__name__)
106106

@@ -361,14 +361,15 @@ def get_unit_address(self, unit: Optional[Unit] = None) -> str:
361361
# Fully propagated: mysql-k8s-0.mysql-k8s-endpoints.dev.svc.cluster.local
362362
# Not propagated yet: 10-1-142-191.mysql-k8s.dev.svc.cluster.local
363363
if unit_hostname not in unit_dns_domain:
364-
logger.error(
364+
logger.warning(
365365
"get_unit_address: unit DNS domain name is not fully propagated yet, trying again"
366366
)
367367
raise RuntimeError("unit DNS domain name is not fully propagated yet")
368368
if unit_dns_domain == unit_hostname:
369-
logger.error("Can't get fully qualified domain name for unit. IS DNS not ready?")
369+
logger.warning("Can't get fully qualified domain name for unit. IS DNS not ready?")
370370
raise RuntimeError("Can't get unit fqdn")
371-
return unit_dns_domain
371+
372+
return dotappend(unit_dns_domain)
372373

373374
def is_unit_busy(self) -> bool:
374375
"""Returns whether the unit is busy."""

src/relations/mysql_provider.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
from constants import CONTAINER_NAME, CONTAINER_RESTARTS, DB_RELATION_NAME, PASSWORD_LENGTH, PEER
2424
from k8s_helpers import KubernetesClientError
25-
from utils import generate_random_password
25+
from utils import dotappend, generate_random_password
2626

2727
logger = logging.getLogger(__name__)
2828

@@ -125,8 +125,8 @@ def _on_database_requested(self, event: DatabaseRequestedEvent) -> None:
125125
# create k8s services for endpoints
126126
self.charm.k8s_helpers.create_endpoint_services(["primary", "replicas"])
127127

128-
primary_endpoint = socket.getfqdn(f"{self.charm.app.name}-primary")
129-
replicas_endpoint = socket.getfqdn(f"{self.charm.app.name}-replicas")
128+
primary_endpoint = dotappend(socket.getfqdn(f"{self.charm.app.name}-primary"))
129+
replicas_endpoint = dotappend(socket.getfqdn(f"{self.charm.app.name}-replicas"))
130130

131131
db_version = self.charm._mysql.get_mysql_version()
132132

src/utils.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,10 @@ def compare_dictionaries(dict1: dict, dict2: dict) -> set:
7575
different_keys = different_keys | dict2.keys() ^ dict1.keys()
7676

7777
return different_keys
78+
79+
80+
def dotappend(string: str) -> str:
81+
"""Append a dot to a string if it does not already end with one."""
82+
if not string.endswith("."):
83+
string += "."
84+
return string

tests/unit/test_database.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ def test_database_requested(
108108
"data": '{"database": "test_db"}',
109109
"password": "super_secure_password",
110110
"username": username,
111-
"endpoints": "mysql-k8s-primary:3306",
111+
"endpoints": "mysql-k8s-primary.:3306",
112112
"version": "8.0.29-0ubuntu0.20.04.3",
113-
"read-only-endpoints": "mysql-k8s-replicas:3306",
113+
"read-only-endpoints": "mysql-k8s-replicas.:3306",
114114
"database": "test_db",
115115
},
116116
)

0 commit comments

Comments
 (0)