goharbor/harbor · error
Error: no provider configurations are provided for provider
Error message
Error: no provider configurations are provided for provider %s
What it means
Thrown by the legacy validator in make/photon/prepare/utils/misc.py when registry_storage_provider_name is not 'filesystem' but registry_storage_provider_config is empty after strip(). Cloud backends need their settings (bucket, region, credentials) rendered into the registry config, so selecting one without configuration is fatal.
Source
Thrown at make/photon/prepare/utils/misc.py:51
cert_key_path = conf.get("configuration", "ssl_cert_key")
if not os.path.isfile(cert_key_path):
raise Exception(
"Error: The path for certificate key: %s is invalid" % cert_key_path)
# Storage validate
valid_storage_drivers = ["filesystem",
"azure", "gcs", "s3", "swift", "oss"]
storage_provider_name = conf.get(
"configuration", "registry_storage_provider_name").strip()
if storage_provider_name not in valid_storage_drivers:
raise Exception("Error: storage driver %s is not supported, only the following ones are supported: %s" % (
storage_provider_name, ",".join(valid_storage_drivers)))
storage_provider_config = conf.get(
"configuration", "registry_storage_provider_config").strip()
if storage_provider_name != "filesystem":
if storage_provider_config == "":
raise Exception(
"Error: no provider configurations are provided for provider %s" % storage_provider_name)
def validate_crt_subj(dirty_subj):
subj_list = [item for item in dirty_subj.strip().split("/") \
if len(item.split("=")) == 2 and len(item.split("=")[1]) > 0]
return "/" + "/".join(subj_list)
def generate_random_string(length):
return ''.join(secrets.choice(string.ascii_letters + string.digits) for _ in range(length))
def prepare_dir(root: str, *args, **kwargs) -> str:
gid, uid = kwargs.get('gid'), kwargs.get('uid')
absolute_path = Path(os.path.join(root, *args))
if absolute_path.is_file():
raise Exception('Path exists and the type is regular file')
mode = kwargs.get('mode') or 0o755View on GitHub (pinned to 7b2fd08cc5)
Solutions
- Set registry_storage_provider_config with the driver's required options, e.g. 'region: us-east-1, bucket: harbor-artifacts, accesskey: AKIA..., secretkey: <secret>'
- Or set registry_storage_provider_name = filesystem if object storage is not intended
- Re-run prepare
Example fix
# harbor.cfg (before) registry_storage_provider_name = s3 registry_storage_provider_config = # after registry_storage_provider_name = s3 registry_storage_provider_config = region: us-east-1, bucket: harbor-artifacts, accesskey: AKIAIOSFODNN7EXAMPLE, secretkey: wJalrXUtnFEMI
Defensive patterns
Strategy: validation
Validate before calling
name = conf.get('configuration', 'registry_storage_provider_name').strip()
prov = conf.get('configuration', 'registry_storage_provider_config').strip()
if name != 'filesystem' and prov == '':
raise SystemExit('storage driver %s selected but registry_storage_provider_config is empty' % name) Prevention
- Change driver name and its config in the same edit
- Test rendered registry config by grepping the output for bucket/region after prepare
- Move to harbor.yml storage_service sections on Harbor >= 1.8
When it happens
Trigger: harbor.cfg sets 'registry_storage_provider_name = s3' (or azure/gcs/swift/oss) while 'registry_storage_provider_config' is empty or only whitespace - typically the name was changed but the settings line was never filled.
Common situations: Switching Harbor from local disk to object storage in harbor.cfg and forgetting the config string; migrations that drop the registry_storage_provider_config line.
Related errors
- Error: no provider configurations are provided for provider
- Error: storage driver %s is not supported, only the followin
- Can not get file info
- Error: storage driver %s is not supported, only the followin
- Please specify hostname
AI-assisted analysis of goharbor/harbor@7b2fd08cc5 (2026-08-16).
Data as JSON: /api/errors/4539159e3ae530de.
Report an issue: GitHub.