from oslo_config import cfg
from staffeln.i18n import _

api_group = cfg.OptGroup(
    "api",
    title="API options",
    help=_("Options under this group are used to define staffeln API."),
)

connection_opts = [
    cfg.StrOpt(
        "host",
        default="0.0.0.0",
        help=_("IP address on which the staffeln API will listen."),
    ),
    cfg.PortOpt(
        "port",
        default=8808,
        help=_("Staffeln API listens on this port number for incoming requests."),
    ),
    cfg.BoolOpt("enabled_ssl", default=False, help=_("ssl enabled")),
    cfg.StrOpt("ssl_key_file", default=False, help=_("ssl key file path")),
    cfg.StrOpt("ssl_cert_file", default=False, help=_("ssl cert file path")),
]

API_OPTS = connection_opts


def register_opts(conf):
    conf.register_group(api_group)
    conf.register_opts(API_OPTS, group=api_group)


def list_opts():
    return {api_group: API_OPTS}
