
The zuul delete-keys command can leave us with empty org and project dirs in zookeeper. When this happens the zuul export-keys command complaisn about secrets not being present. Address this by checking if the project dir and org dir should be cleaned up when calling delete-keys. Note this happend to OpenDev after renaming all projects from foo/* to bar/* orphaning the org level portion of the name. Change-Id: I6bba5ea29a752593b76b8e58a0d84615cc639346
44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
# Copyright 2021 Acme Gating, LLC
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import base64
|
|
import os.path
|
|
from urllib.parse import quote_plus
|
|
|
|
import zuul.model
|
|
|
|
|
|
def unique_project_name(project_name):
|
|
parts = project_name.split('/')
|
|
prefix = parts[0]
|
|
name = quote_plus(project_name)
|
|
return (prefix, name)
|
|
|
|
|
|
def workspace_project_path(hostname, project_name, scheme):
|
|
"""Return the project path based on the specified scheme"""
|
|
if scheme == zuul.model.SCHEME_UNIQUE:
|
|
prefix, project_name = unique_project_name(project_name)
|
|
return os.path.join(hostname, prefix, project_name)
|
|
elif scheme == zuul.model.SCHEME_GOLANG:
|
|
return os.path.join(hostname, project_name)
|
|
elif scheme == zuul.model.SCHEME_FLAT:
|
|
parts = project_name.split('/')
|
|
return os.path.join(parts[-1])
|
|
|
|
|
|
def b64encode(string):
|
|
# Return a base64 encoded string (the module operates on bytes)
|
|
return base64.b64encode(string.encode('utf8')).decode('utf8')
|