Add python-troveclient in requirements.txt

Change-Id: I2bd0d81171df85c05423e19ab2e4afa82fcf880e
This commit is contained in:
Lingxian Kong 2020-03-11 15:22:47 +13:00
parent ae2709dcd6
commit 7d78c74158
21 changed files with 76 additions and 84 deletions

View File

@ -64,7 +64,6 @@
required-projects:
- openstack/devstack-gate
- openstack/diskimage-builder
- openstack/python-troveclient
- openstack/tripleo-image-elements
- openstack/trove
- openstack/trove-dashboard
@ -85,7 +84,6 @@
required-projects:
- openstack/tempest
- openstack/diskimage-builder
- openstack/python-troveclient
- openstack/tripleo-image-elements
- openstack/trove
- openstack/trove-dashboard
@ -328,7 +326,6 @@
parent: devstack-tempest
timeout: 7800
required-projects: &base_required_projects
- openstack/python-troveclient
- openstack/trove
- openstack/trove-tempest-plugin
- openstack/tempest

View File

@ -17,27 +17,12 @@ REQUIREMENTS_FILE=${TROVESTACK_SCRIPTS}/../../requirements.txt
sudo -Hiu ${HOST_USERNAME} dd if=${REQUIREMENTS_FILE} of=${TMP_HOOKS_PATH}/requirements.txt
# Grab the upper constraints file, but don't fail if we can't find it.
# If we are running in the CI environment, $DEST will be set and stackrc
# will use $DEST/requirements as the location for the requirements repo.
# Use that as it will help us chain a job with something that is changing UC.
UC_FILE=upper-constraints.txt
if [ -f "${DEST}/requirements/${UC_FILE}" ]; then
echo "Found ${DEST}/requirements/${UC_FILE}, using that"
sudo -Hiu ${HOST_USERNAME} dd if="${DEST}/requirements/${UC_FILE}" \
of="${TMP_HOOKS_PATH}/${UC_FILE}"
else
UC_DIR=$(pwd)
UC_BRANCH=${TROVE_BRANCH##stable/}
set +e
curl -L -o "${UC_DIR}/${UC_FILE}" "https://releases.openstack.org/constraints/upper/${UC_BRANCH}"
set -e
if [ -f "${UC_DIR}/${UC_FILE}" ]; then
sudo -Hiu ${HOST_USERNAME} dd if="${UC_DIR}/${UC_FILE}" of=${TMP_HOOKS_PATH}/${UC_FILE}
rm -f "${UC_DIR}/${UC_FILE}"
fi
fi

View File

@ -188,8 +188,6 @@ function dump_env() {
done
exclaim "Dumping pip modules:"
pip freeze | sort
exclaim "Dumping domain list:"
openstack --os-cloud=devstack-admin domain list
exclaim "Dumping configuration completed"
set -e
fi
@ -764,6 +762,10 @@ function cmd_test_init() {
exclaim "Creating Test Flavors."
add_test_flavors
exclaim "Re-installing python-troveclient from git"
pip3 uninstall -y python-troveclient
pip3 install -U git+https://opendev.org/openstack/python-troveclient@master#egg=python-troveclient
}
function cmd_build_image() {
@ -1207,8 +1209,9 @@ function cmd_kick_start() {
fi
exclaim "Running kick-start for $DATASTORE_TYPE"
dump_env
cmd_test_init "${DATASTORE_TYPE}" "${DATASTORE_VERSION}"
dump_env
}
# Start functional test. The guest image should be created and registered in

View File

@ -22,6 +22,7 @@ python-swiftclient>=3.2.0 # Apache-2.0
python-designateclient>=2.7.0 # Apache-2.0
python-neutronclient>=6.7.0 # Apache-2.0
python-glanceclient>=2.8.0 # Apache-2.0
python-troveclient>=2.2.0 # Apache-2.0
iso8601>=0.1.11 # MIT
jsonschema>=2.6.0 # MIT
Jinja2>=2.10 # BSD License (3 clause)

View File

@ -1 +0,0 @@
git+https://opendev.org/openstack/python-troveclient@master#egg=python-troveclient

View File

@ -13,7 +13,6 @@ setenv = VIRTUAL_ENV={envdir}
usedevelop = True
install_command = pip install \
-c{env:TEST_UPPER_CONSTRAINTS_FILE:{toxinidir}/test-upper-constraints.txt} \
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} \
-U {opts} {packages}
deps = -r{toxinidir}/requirements.txt
@ -56,7 +55,7 @@ ignore-path = .venv,.tox,.git,dist,doc,*egg-info,tools,etc,build,*.po,*.pot,inte
show-source = True
# H301 is ignored on purpose.
# The rest of the ignores are TODOs.
ignore = F821,H301,H404,H405,H501,E402,W503,E731
ignore = E402,E731,F601,F821,H301,H404,H405,H501,W503,W504,W605
enable-extensions = H203,H106
builtins = _
# add *.yaml for playbooks/trove-devstack-base.yaml, as it will be matched by

View File

@ -146,6 +146,7 @@ class Limit(object):
"resetTime": int(self.next_request or self._get_time()),
}
# "Limit" format is a dictionary with the HTTP verb, human-readable URI,
# a regular-expression to match, value and unit of measure (PER_DAY, etc.)
DEFAULT_LIMITS = [

View File

@ -58,6 +58,7 @@ def build_jinja_environment():
env.globals['min'] = min
return env
ENV = build_jinja_environment()

View File

@ -85,4 +85,5 @@ class Queryable(object):
return lambda model, **conditions: Query(
model, query_func=getattr(get_db_api(), item), **conditions)
db_query = Queryable()

View File

@ -34,7 +34,7 @@ class Flavor(object):
try:
client = create_nova_client(context)
self.flavor = client.flavors.get(flavor_id)
except nova_exceptions.NotFound as e:
except nova_exceptions.NotFound:
raise exception.NotFound(uuid=flavor_id)
except nova_exceptions.ClientException as e:
raise exception.TroveError(str(e))

View File

@ -419,8 +419,8 @@ class SetServerVariable(object):
else:
return "SET GLOBAL %s=%s" % (self.key, self.value)
# Miscellaneous queries that need no parameters.
# Miscellaneous queries that need no parameters.
FLUSH = "FLUSH PRIVILEGES;"
ROOT_ENABLED = ("SELECT User FROM mysql.user "
"WHERE User = 'root' AND Host != 'localhost';")

View File

@ -229,7 +229,7 @@ class CouchDBAdmin(object):
'username': user.name,
'password': user.password},
shell=True)
except exception.ProcessExecutionError as pe:
except exception.ProcessExecutionError:
LOG.exception("Error creating user: %s.", user.name)
for database in user.databases:

View File

@ -451,7 +451,7 @@ class DB2Admin(object):
system.CREATE_USER_COMMAND % {
'login': user.name, 'login': user.name,
'passwd': user.password}, shell=True)
except exception.ProcessExecutionError as pe:
except exception.ProcessExecutionError:
LOG.exception("Error creating user: %s.", user.name)
continue
@ -495,7 +495,7 @@ class DB2Admin(object):
LOG.debug("Revoked access for user:%(user)s on "
"database:%(db)s.",
{'user': userName, 'db': mydb.name})
except exception.ProcessExecutionError as pe:
except exception.ProcessExecutionError:
LOG.debug("Error occurred while revoking access to %s.",
mydb.name)
try:

View File

@ -32,6 +32,6 @@ REDIS_PACKAGE = ''
SERVICE_CANDIDATES = ['redis-server', 'redis']
OS = get_os()
if OS is 'redhat':
if OS == 'redhat':
REDIS_CONFIG = '/etc/redis.conf'
REDIS_PACKAGE = 'redis'

View File

@ -122,5 +122,6 @@ class InstanceTasks(object):
'Build error: Port.',
is_error=True)
# Dissuade further additions at run-time.
InstanceTask.__init__ = None

View File

@ -307,36 +307,38 @@ class ParseLimitsTest(BaseLimitTestSuite):
def test_multiple_rules(self):
# Test that parse_limits() handles multiple rules correctly.
try:
l = limits.Limiter.parse_limits('(get, *, .*, 20, minute);'
result = limits.Limiter.parse_limits(
'(get, *, .*, 20, minute);'
'(PUT, /foo*, /foo.*, 10, hour);'
'(POST, /bar*, /bar.*, 5, second);'
'(Say, /derp*, /derp.*, 1, day)')
'(Say, /derp*, /derp.*, 1, day)'
)
except ValueError as e:
assert False, str(e)
# Make sure the number of returned limits are correct
self.assertEqual(4, len(l))
self.assertEqual(4, len(result))
# Check all the verbs...
expected = ['GET', 'PUT', 'POST', 'SAY']
self.assertEqual(expected, [t.verb for t in l])
self.assertEqual(expected, [t.verb for t in result])
# ...the URIs...
expected = ['*', '/foo*', '/bar*', '/derp*']
self.assertEqual(expected, [t.uri for t in l])
self.assertEqual(expected, [t.uri for t in result])
# ...the regexes...
expected = ['.*', '/foo.*', '/bar.*', '/derp.*']
self.assertEqual(expected, [t.regex for t in l])
self.assertEqual(expected, [t.regex for t in result])
# ...the values...
expected = [20, 10, 5, 1]
self.assertEqual(expected, [t.value for t in l])
self.assertEqual(expected, [t.value for t in result])
# ...and the units...
expected = [limits.PER_MINUTE, limits.PER_HOUR,
limits.PER_SECOND, limits.PER_DAY]
self.assertEqual(expected, [t.unit for t in l])
self.assertEqual(expected, [t.unit for t in result])
class LimiterTest(BaseLimitTestSuite):

View File

@ -37,6 +37,7 @@ def _prep_conf(current_time):
instance_id = 'INSTANCE-' + current_time
return _context, instance_id
BACKUP_NAME = 'WORKS'
BACKUP_NAME_2 = 'IT-WORKS'
BACKUP_NAME_3 = 'SECOND-LAST-ONE'

View File

@ -181,6 +181,7 @@ class Coroutine(object):
self.my_sem.release()
self.caller_sem.acquire() # Wait for it to finish.
# Main global thread to run.
main_greenlet = None