diff --git a/changelog/59927.added b/changelog/59927.added.md similarity index 100% rename from changelog/59927.added rename to changelog/59927.added.md diff --git a/salt/modules/mongodb.py b/salt/modules/mongodb.py index 216ff2037af..a0b34c79714 100644 --- a/salt/modules/mongodb.py +++ b/salt/modules/mongodb.py @@ -126,21 +126,6 @@ def db_list( """ List all MongoDB databases. - user - The user to authenticate with, if necessary. - - password - The password to authenticate with, if necessary. - - host - The host running MongoDB. - - port - The port MongoDB is listening on. - - authdb - The database to authenticate against, if not "admin". - user The user to connect to MongoDB as. Default is None. @@ -159,12 +144,12 @@ def db_list( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Example: @@ -200,24 +185,6 @@ def db_exists( """ Checks if a database exists in MongoDB. - name - The name of the database to check. - - user - The user to authenticate with, if necessary. - - password - The password to authenticate with, if necessary. - - host - The host running MongoDB. - - port - The port MongoDB is listening on. - - authdb - The database to authenticate against, if not "admin". - name The name of the database to check for. @@ -239,12 +206,12 @@ def db_exists( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Example: @@ -275,24 +242,6 @@ def db_remove( """ Remove a MongoDB database. - name - Name of the MongoDB database to remove. - - user - The user to authenticate with, if necessary. - - password - The password to authenticate with, if necessary. - - host - The host running MongoDB. - - port - The port MongoDB is listening on. - - authdb - The database to authenticate against, if not "admin". - name The name of the database to remove. @@ -314,12 +263,12 @@ def db_remove( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Example: @@ -378,12 +327,12 @@ def version( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Example: @@ -397,7 +346,7 @@ def version( user, password, host, port, authdb=authdb, ssl=ssl, verify_ssl=verify_ssl ) if not conn: - err_msg = "Failed to connect to MongoDB database {}:{}".format(host, port) + err_msg = f"Failed to connect to MongoDB database {host}:{port}" log.error(err_msg) return (False, err_msg) @@ -447,12 +396,12 @@ def user_find( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Example: @@ -464,7 +413,7 @@ def user_find( user, password, host, port, authdb=authdb, ssl=ssl, verify_ssl=verify_ssl ) if not conn: - err_msg = "Failed to connect to MongoDB database {}:{}".format(host, port) + err_msg = f"Failed to connect to MongoDB database {host}:{port}" log.error(err_msg) return (False, err_msg) @@ -510,12 +459,12 @@ def user_list( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Example: @@ -586,12 +535,12 @@ def user_exists( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Example: @@ -659,12 +608,12 @@ def user_create( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Example: @@ -728,12 +677,12 @@ def user_remove( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Example: @@ -741,7 +690,9 @@ def user_remove( salt '*' mongodb.user_remove """ - conn = _connect(user, password, host, port, authdb=authdb, ssl=ssl, verify_ssl=verify_ssl) + conn = _connect( + user, password, host, port, authdb=authdb, ssl=ssl, verify_ssl=verify_ssl + ) if not conn: return "Failed to connect to mongo database" @@ -800,12 +751,12 @@ def user_roles_exists( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Examples: @@ -888,12 +839,12 @@ def user_grant_roles( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Examples: @@ -973,12 +924,12 @@ def user_revoke_roles( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Examples: @@ -1051,9 +1002,13 @@ def collection_create( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. + .. versionadded:: 3008.0 + verify_ssl Whether or not to verify the server cert when connecting. Default True. + .. versionadded:: 3008.0 + CLI Example: .. code-block:: bash @@ -1061,7 +1016,9 @@ def collection_create( salt '*' mongodb.collection_create mycollection """ - conn = _connect(user, password, host, port, database, authdb, ssl=ssl, verify_ssl=verify_ssl) + conn = _connect( + user, password, host, port, database, authdb, ssl=ssl, verify_ssl=verify_ssl + ) if not conn: return "Failed to connect to mongo database" @@ -1114,9 +1071,13 @@ def collection_drop( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. + .. versionadded:: 3008.0 + verify_ssl Whether or not to verify the server cert when connecting. Default True. + .. versionadded:: 3008.0 + CLI Example: .. code-block:: bash @@ -1124,7 +1085,9 @@ def collection_drop( salt '*' mongodb.collection_drop mycollection """ - conn = _connect(user, password, host, port, database, authdb, ssl=ssl, verify_ssl=verify_ssl) + conn = _connect( + user, password, host, port, database, authdb, ssl=ssl, verify_ssl=verify_ssl + ) if not conn: return "Failed to connect to mongo database" @@ -1173,9 +1136,13 @@ def collections_list( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. + .. versionadded:: 3008.0 + verify_ssl Whether or not to verify the server cert when connecting. Default True. + .. versionadded:: 3008.0 + CLI Example: .. code-block:: bash @@ -1183,7 +1150,9 @@ def collections_list( salt '*' mongodb.collections_list mycollection """ - conn = _connect(user, password, host, port, database, authdb, ssl=ssl, verify_ssl=verify_ssl) + conn = _connect( + user, password, host, port, database, authdb, ssl=ssl, verify_ssl=verify_ssl + ) if not conn: return "Failed to connect to mongo database" @@ -1239,12 +1208,12 @@ def insert( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Example: @@ -1323,12 +1292,12 @@ def update_one( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Example: @@ -1368,7 +1337,9 @@ def update_one( _update_doc = document[1] # need a string to perform the test, so using objs[0] - test_f = find(collection, objs[0], user, password, host, port, database, authdb, ssl) + test_f = find( + collection, objs[0], user, password, host, port, database, authdb, ssl + ) if not isinstance(test_f, list): return "The find result is not well formatted. An error appears; cannot update." elif not test_f: @@ -1382,7 +1353,7 @@ def update_one( col = getattr(mdb, collection) ids = col.update_one(_id_field, {"$set": _update_doc}) nb_mod = ids.modified_count - return "{} objects updated".format(nb_mod) + return f"{nb_mod} objects updated" except pymongo.errors.PyMongoError as err: log.error("Updating object %s failed with error %s", objects, err) return err @@ -1430,12 +1401,12 @@ def find( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Example: @@ -1520,12 +1491,12 @@ def remove( ssl Whether or not to connect to MongoDB over SSL. Default ``False``. - .. versionadded:: 3006 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3006 + .. versionadded:: 3008.0 CLI Example: @@ -1559,7 +1530,7 @@ def remove( for count in range(0, w): res = col.delete_one(query) deleted_count += res.deleted_count - return "{} objects removed".format(deleted_count) + return f"{deleted_count} objects removed" except pymongo.errors.PyMongoError as err: log.error("Removing objects failed with error: %s", _get_error_message(err)) return _get_error_message(err) diff --git a/salt/returners/mongo_future_return.py b/salt/returners/mongo_future_return.py index 8c241c09be2..617b3c6abb2 100644 --- a/salt/returners/mongo_future_return.py +++ b/salt/returners/mongo_future_return.py @@ -180,7 +180,9 @@ def _get_conn(ret): mdb = conn.get_database() else: if PYMONGO_VERSION > Version("2.3"): - conn = pymongo.MongoClient(host, port, username=user, password=password, ssl=ssl) + conn = pymongo.MongoClient( + host, port, username=user, password=password, ssl=ssl + ) else: if uri: raise salt.exceptions.SaltConfigurationError( diff --git a/salt/returners/mongo_return.py b/salt/returners/mongo_return.py index 571763aba88..2defda44f07 100644 --- a/salt/returners/mongo_return.py +++ b/salt/returners/mongo_return.py @@ -138,7 +138,7 @@ def _get_conn(ret): # pymongo versions < 2.3 until then there are # a bunch of these sections that need to be supported - if PYMONGO_VERSION > _LooseVersion("2.3"): + if PYMONGO_VERSION > Version("2.3"): conn = pymongo.MongoClient(host=host, port=port, ssl=ssl) else: conn = pymongo.Connection(host, port) diff --git a/salt/states/mongodb_database.py b/salt/states/mongodb_database.py index 00f1278c891..a22bfd7e8e6 100644 --- a/salt/states/mongodb_database.py +++ b/salt/states/mongodb_database.py @@ -53,12 +53,12 @@ def absent( ssl Whether or not to use SSL to connect to mongodb. Default False. - .. versionadded:: 3005.0 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3005.0 + .. versionadded:: 3008.0 """ ret = {"name": name, "changes": {}, "result": True, "comment": ""} @@ -88,9 +88,9 @@ def absent( ssl=ssl, verify_ssl=verify_ssl, ): - ret["comment"] = "Database {} has been removed".format(name) + ret["comment"] = f"Database {name} has been removed" ret["changes"][name] = "Absent" return ret - ret["comment"] = "Database {} is not present".format(name) + ret["comment"] = f"Database {name} is not present" return ret diff --git a/salt/states/mongodb_user.py b/salt/states/mongodb_user.py index 843bf7dc00b..767b881e20d 100644 --- a/salt/states/mongodb_user.py +++ b/salt/states/mongodb_user.py @@ -64,12 +64,12 @@ def present( ssl Whether or not to use SSL to connect to mongodb. Default False. - .. versionadded:: 3005.0 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3005.0 + .. versionadded:: 3008.0 Example: @@ -93,7 +93,7 @@ def present( "name": name, "changes": {}, "result": True, - "comment": "User {} is already present".format(name), + "comment": f"User {name} is already present", } # setup default empty roles if not provided to preserve previous API interface @@ -105,7 +105,7 @@ def present( port = int(port or __salt__["config.option"]("mongodb.port")) except TypeError: ret["result"] = False - ret["comment"] = "Port ({!r}) is not an integer.".format(port) + ret["comment"] = f"Port ({port!r}) is not an integer." return ret # check if user exists @@ -126,7 +126,7 @@ def present( # users= (False, 'not authorized on admin to execute command { usersInfo: "root" }') if not users[0]: ret["result"] = False - ret["comment"] = "Mongo Err: {}".format(users[1]) + ret["comment"] = f"Mongo Err: {users[1]}" return ret # check each user occurrence @@ -174,7 +174,7 @@ def present( if __opts__["test"]: ret["result"] = None - ret["comment"] = "User {} is not present and needs to be created".format(name) + ret["comment"] = f"User {name} is not present and needs to be created" return ret # The user is not present, make it! if __salt__["mongodb.user_create"]( @@ -190,10 +190,10 @@ def present( ssl=ssl, verify_ssl=verify_ssl, ): - ret["comment"] = "User {} has been created".format(name) + ret["comment"] = f"User {name} has been created" ret["changes"][name] = "Present" else: - ret["comment"] = "Failed to create database {}".format(name) + ret["comment"] = f"Failed to create database {name}" ret["result"] = False return ret @@ -238,12 +238,12 @@ def absent( ssl Whether or not to use SSL to connect to mongodb. Default False. - .. versionadded:: 3005.0 + .. versionadded:: 3008.0 verify_ssl Whether or not to verify the server cert when connecting. Default True. - .. versionadded:: 3005.0 + .. versionadded:: 3008.0 """ ret = {"name": name, "changes": {}, "result": True, "comment": ""} @@ -262,7 +262,7 @@ def absent( if user_exists is True: if __opts__["test"]: ret["result"] = None - ret["comment"] = "User {} is present and needs to be removed".format(name) + ret["comment"] = f"User {name} is present and needs to be removed" return ret if __salt__["mongodb.user_remove"]( name, @@ -275,7 +275,7 @@ def absent( ssl=ssl, verify_ssl=verify_ssl, ): - ret["comment"] = "User {} has been removed".format(name) + ret["comment"] = f"User {name} has been removed" ret["changes"][name] = "Absent" return ret @@ -287,5 +287,5 @@ def absent( return ret # fallback - ret["comment"] = "User {} is not present".format(name) + ret["comment"] = f"User {name} is not present" return ret diff --git a/tests/pytests/functional/modules/test_mongodb.py b/tests/pytests/functional/modules/test_mongodb.py index 5b728251226..5fb758da690 100644 --- a/tests/pytests/functional/modules/test_mongodb.py +++ b/tests/pytests/functional/modules/test_mongodb.py @@ -36,7 +36,7 @@ def ensure_deps(states): ) assert ( installation_result.result is True - ), "unable to pip install requirements {}".format(installation_result.comment) + ), f"unable to pip install requirements {installation_result.comment}" @pytest.fixture(scope="module") diff --git a/tests/pytests/unit/modules/test_mongodb.py b/tests/pytests/unit/modules/test_mongodb.py index 1d8978c3d7e..ee9fdc7e7bd 100644 --- a/tests/pytests/unit/modules/test_mongodb.py +++ b/tests/pytests/unit/modules/test_mongodb.py @@ -4,8 +4,8 @@ import pytest -import salt.modules.mongodb as mongodb import salt.modules.mongodb +import salt.modules.mongodb as mongodb from tests.support.mock import MagicMock, patch try: @@ -722,6 +722,7 @@ def test_remove(): expected = "1 objects removed" assert ret == expected + @pytest.fixture(autouse=True) def fake_pymongo(): salt.modules.mongodb.pymongo = MagicMock() diff --git a/tests/pytests/unit/returners/test_mongo_future_return.py b/tests/pytests/unit/returners/test_mongo_future_return.py index 88ebc6b0c63..e3e6707afa6 100644 --- a/tests/pytests/unit/returners/test_mongo_future_return.py +++ b/tests/pytests/unit/returners/test_mongo_future_return.py @@ -33,6 +33,7 @@ def test_config_exception(): with pytest.raises(salt.exceptions.SaltConfigurationError): mongo_future_return.returner({}) + @pytest.mark.parametrize( "expected_ssl, use_ssl", [ diff --git a/tests/pytests/unit/returners/test_mongo_return.py b/tests/pytests/unit/returners/test_mongo_return.py index d73abdea098..1c5d1c5dff4 100644 --- a/tests/pytests/unit/returners/test_mongo_return.py +++ b/tests/pytests/unit/returners/test_mongo_return.py @@ -32,7 +32,7 @@ def test_mongo_returner_should_correctly_pass_ssl_to_MongoClient_when_ret_is_set ) as fake_mongo, patch.object( mongo_return, "PYMONGO_VERSION", - mongo_return._LooseVersion("99999"), + mongo_return.Version("99999"), create=True, ), patch.dict( "salt.returners.mongo_return.__opts__", @@ -63,7 +63,7 @@ def test_mongo_returner_should_correctly_pass_ssl_to_MongoClient(expected_ssl, u ) as fake_mongo, patch.object( mongo_return, "PYMONGO_VERSION", - mongo_return._LooseVersion("99999"), + mongo_return.Version("99999"), create=True, ), patch.dict( "salt.returners.mongo_return.__opts__", diff --git a/tests/pytests/unit/states/test_mongodb_database.py b/tests/pytests/unit/states/test_mongodb_database.py index cfaf1f71e13..db93bf3063b 100644 --- a/tests/pytests/unit/states/test_mongodb_database.py +++ b/tests/pytests/unit/states/test_mongodb_database.py @@ -45,16 +45,16 @@ def test_absent(): {"mongodb.db_exists": mock, "mongodb.db_remove": mock_t}, ): with patch.dict(mongodb_database.__opts__, {"test": True}): - comt = "Database {} is present and needs to be removed".format(name) + comt = f"Database {name} is present and needs to be removed" ret.update({"comment": comt}) assert mongodb_database.absent(name) == ret with patch.dict(mongodb_database.__opts__, {"test": False}): - comt = "Database {} has been removed".format(name) + comt = f"Database {name} has been removed" ret.update({"comment": comt, "result": True, "changes": {"mydb": "Absent"}}) assert mongodb_database.absent(name) == ret - comt = "Database {} is not present".format(name) + comt = f"Database {name} is not present" ret.update({"comment": comt, "changes": {}}) assert mongodb_database.absent(name) == ret diff --git a/tests/pytests/unit/states/test_mongodb_user.py b/tests/pytests/unit/states/test_mongodb_user.py index 48d93654822..6bd7d93896a 100644 --- a/tests/pytests/unit/states/test_mongodb_user.py +++ b/tests/pytests/unit/states/test_mongodb_user.py @@ -58,12 +58,12 @@ def test_present(): assert mongodb_user.present(name, passwd) == ret with patch.dict(mongodb_user.__opts__, {"test": True}): - comt = "User {} is not present and needs to be created".format(name) + comt = f"User {name} is not present and needs to be created" ret.update({"comment": comt, "result": None}) assert mongodb_user.present(name, passwd) == ret with patch.dict(mongodb_user.__opts__, {"test": False}): - comt = "User {} has been created".format(name) + comt = f"User {name} has been created" ret.update({"comment": comt, "result": True, "changes": {name: "Present"}}) assert mongodb_user.present(name, passwd) == ret @@ -83,16 +83,16 @@ def test_absent(): {"mongodb.user_exists": mock, "mongodb.user_remove": mock_t}, ): with patch.dict(mongodb_user.__opts__, {"test": True}): - comt = "User {} is present and needs to be removed".format(name) + comt = f"User {name} is present and needs to be removed" ret.update({"comment": comt, "result": None}) assert mongodb_user.absent(name) == ret with patch.dict(mongodb_user.__opts__, {"test": False}): - comt = "User {} has been removed".format(name) + comt = f"User {name} has been removed" ret.update({"comment": comt, "result": True, "changes": {name: "Absent"}}) assert mongodb_user.absent(name) == ret - comt = "User {} is not present".format(name) + comt = f"User {name} is not present" ret.update({"comment": comt, "result": True, "changes": {}}) assert mongodb_user.absent(name) == ret @@ -115,7 +115,7 @@ def test_when_absent_is_called_it_should_pass_the_correct_ssl_argument_to_MongoC expected_ssl, expected_allow_invalid, absent_kwargs ): with patch.dict(mongodb_user.__opts__, {"test": False}), patch( - "salt.modules.mongodb._LooseVersion", autospec=True, return_value=4 + "salt.modules.mongodb.Version", autospec=True, return_value=4 ): salt.modules.mongodb.pymongo.database.Database.return_value.command.return_value = { "users": [