virtual_ip=spec.get_virtual_ip(),
ports=spec.get_port_start(),
)
+
if spec.service_type == 'ingress':
# ingress has 2 daemons running per host
# but only if it's the full ingress service, not for keepalive-only
# this is a redeploy of older instance that doesn't have an explicitly
# assigned port, in which case we can assume there is only 1 per host
# and it matches the spec.
- port = spec.get_port()
+ ports = spec.get_port()
+ if spec.ssl:
+ port = ports[1] if len(ports) > 1 else ports[0]
+ else:
+ port = ports[0]
if spec.generate_cert:
cert, key = self.mgr.cert_mgr.generate_cert(
port = None
secure_port = None
if spec.ssl:
- secure_port = spec.get_port()
+ _secure_port = spec.get_port()
+ if len(_secure_port) > 1:
+ secure_port = _secure_port[1]
+ else:
+ secure_port = _secure_port[0]
else:
- port = spec.get_port()
+ port = spec.get_port()[0]
object_store = cos.CephObjectStore(
apiVersion=self.rook_env.api_name,
metadata=dict(
self.disable_multisite_sync_traffic = disable_multisite_sync_traffic
def get_port_start(self) -> List[int]:
- return [self.get_port()]
+ ports = self.get_port()
+ return ports
- def get_port(self) -> int:
+ def get_port(self) -> List[int]:
+ ports = []
if self.rgw_frontend_port:
- return self.rgw_frontend_port
- if self.ssl:
- return 443
- else:
- return 80
+ ports.append(self.rgw_frontend_port)
+
+ ssl_port = next(
+ (
+ int(arg.split('=')[1])
+ for arg in (self.rgw_frontend_extra_args or [])
+ if arg.startswith("ssl_port=")
+ ),
+ None,
+ )
+
+ if self.ssl and ssl_port:
+ ports.append(ssl_port)
+ if not ports:
+ ports.append(443 if self.ssl else 80)
+
+ return ports
def validate(self) -> None:
super(RGWSpec, self).validate()