feat: port to rougail secret_manager

This commit is contained in:
egarette@silique.fr 2025-03-19 10:22:27 +01:00
parent c3a0ecd557
commit a273820c84
31 changed files with 213 additions and 149 deletions

View file

@ -26,7 +26,7 @@ classifiers = [
]
dependencies = [
"rougail >= 1.1,<2",
"rougail-structural-bitwarden == 0.1.0a2",
"rougail-structural-bitwarden == 0.1.0a3",
]
[project.urls]

View file

@ -40,6 +40,7 @@ step:
{% endif %}
bitwarden:
command:
choices:
- rbw

View file

@ -175,6 +175,7 @@ class RougailUserDataBitwarden:
else:
key_bitwarden = option.value.get()
option.value.set(self.get_values(path, type_, key_bitwarden)[1])
option.permissive.add('novalidator')
def get_values(self, path, type_, key_bitwarden, *, allow_multiple=False):
if not isinstance(key_bitwarden, str):

View file

@ -1,6 +1,6 @@
{
"errors": [
"cannot find secret \"test_unknown\" from Bitwarden for \"rougail.secret\""
"cannot find secret \"1_secret_unknown - environment - service - user\" from Bitwarden for \"rougail.secret\""
],
"warnings": []
}
}

View file

@ -1,12 +1,12 @@
{
"rougail.leader.username": [
{
"rougail.leader.username": "test_multi_username1",
"rougail.leader.secret": "test_multi_password1"
"rougail.leader.username": "bitwarden_username",
"rougail.leader.secret": "bitwarden_password"
},
{
"rougail.leader.username": "test_multi_username2",
"rougail.leader.secret": "test_multi_password2"
"rougail.leader.username": "bitwarden_username_2",
"rougail.leader.secret": "bitwarden_password_2"
}
]
}

View file

@ -1,12 +1,12 @@
{
"rougail.leader.username": [
{
"rougail.leader.username": "test_multi_username2",
"rougail.leader.secret": "test_multi_password2"
"rougail.leader.username": "bitwarden_username_2",
"rougail.leader.secret": "bitwarden_password_2"
},
{
"rougail.leader.username": "test_multi_username1",
"rougail.leader.secret": "test_multi_password1"
"rougail.leader.username": "bitwarden_username",
"rougail.leader.secret": "bitwarden_password"
}
]
}

View file

@ -1,6 +1,6 @@
{
"errors": [
"several items found with name \"test_secret_\" from Bitwarden for \"rougail.secret\": \"test_secret_1\", \"test_secret_2\""
"several items found with name \"4_several_secrets - environment - service - user\" from Bitwarden for \"rougail.secret\": \"4_several_secrets - environment - service - user_1\", \"4_several_secrets - environment - service - user_2\""
],
"warnings": []
}
}

View file

@ -1,6 +0,0 @@
{
"errors": [
"several items found with name \"test_secret_\" from Bitwarden for \"rougail.secret\": \"test_secret_2\", \"test_secret_1\""
],
"warnings": []
}

View file

@ -1,6 +1,6 @@
{
"errors": [
"several items found with name \"TEST_SECRET_\" from Bitwarden for \"rougail.secret\": \"test_secret_1\", \"test_secret_2\""
"several items found with name \"3_leadership_secret - ENVIRONMENT - SERVICE - USER\" from Bitwarden for \"rougail.secret\": \"3_leadership_secret - environment - service - user_1\", \"3_leadership_secret - environment - service - user_2\""
],
"warnings": []
}
}

View file

@ -1,6 +0,0 @@
{
"errors": [
"several items found with name \"TEST_SECRET_\" from Bitwarden for \"rougail.secret\": \"test_secret_2\", \"test_secret_1\""
],
"warnings": []
}

View file

@ -0,0 +1,4 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1,10 @@
{
"rougail.host": "test",
"rougail.project": "5_secret_calc",
"rougail.environment": "environment",
"rougail.service": "service",
"rougail.user": "user_1",
"rougail.secret": "bitwarden_password",
"rougail.dyn_user_1.secret": "bitwarden_password",
"rougail.dyn_user_2.secret": "bitwarden_password_2"
}

View file

@ -0,0 +1,4 @@
{
"errors": [],
"warnings": []
}

View file

@ -0,0 +1,3 @@
{
"rougail.secret.bitwarden": true
}

View file

@ -4,5 +4,9 @@ version: 1.1
secret:
description: the second variable
type: secret
default: test_secret_1
bitwarden: true
secret_manager:
host: test
project: 1_secret
environment: environment
service: service
user: user

View file

@ -4,5 +4,9 @@ version: 1.1
secret:
description: the second variable
type: secret
default: test_unknown
bitwarden: true
secret_manager:
host: test
project: 1_secret_unknown
environment: environment
service: service
user: user

View file

@ -4,11 +4,19 @@ version: 1.1
username:
description: the username
type: unix_user
default: test_secret_1
bitwarden: true
secret_manager:
host: test
project: 2_username_secret
environment: environment
service: service
user: user_1
secret:
description: the secret
type: secret
default: test_secret_1
bitwarden: true
secret_manager:
host: test
project: 2_username_secret
environment: environment
service: service
user: user_1

View file

@ -4,12 +4,20 @@ version: 1.1
username:
description: the username
type: unix_user
default: test_secret_1
bitwarden: true
secret_manager:
host: test
project: 2_username_secret_hidden
environment: environment
service: service
user: user
secret:
description: the secret
type: secret
hidden: true
default: test_secret_1
bitwarden: true
secret_manager:
host: test
project: 2_username_secret_hidden
environment: environment
service: service
user: user

View file

@ -4,11 +4,19 @@ version: 1.1
username:
description: the username
type: unix_user
default: UP SECRET 1
bitwarden: true
secret_manager:
host: test
project: 2_username_secret_invalid
environment: environment
service: service
user: UP SECRET 1
secret:
description: the secret
type: secret
default: UP SECRET 1
bitwarden: true
secret_manager:
host: test
project: 2_username_secret_invalid
environment: environment
service: service
user: UP SECRET 1

View file

@ -4,11 +4,19 @@ version: 1.1
username:
description: the username
type: unix_user
default: TEST_SECRET_1
bitwarden: true
secret_manager:
host: TEST
project: 2_USERNAME_SECRET_UPPER
environment: ENVIRONMENT
service: SERVICE
user: USER_1
secret:
description: the secret
type: secret
default: TEST_SECRET_1
bitwarden: true
secret_manager:
host: TEST
project: 2_USERNAME_SECRET_UPPER
environment: ENVIRONMENT
service: SERVICE
user: USER_1

View file

@ -7,12 +7,19 @@ leader:
username:
description: the username
type: unix_user
default:
- test_secret_1
- test_secret_2
bitwarden: true
secret_manager:
host: test
project: 3_leadership_secret
environment: environment
service: service
user: user
secret:
description: the secret
type: secret
bitwarden: true
secret_manager:
host: test
project: 3_leadership_secret
environment: environment
service: service
user: user

View file

@ -7,11 +7,19 @@ leader:
username:
description: the username
type: unix_user
default:
- test_multi_
bitwarden: true
secret_manager:
host: test
project: 3_leadership_secret_several
environment: environment
service: service
user: user
secret:
description: the secret
type: secret
bitwarden: true
secret_manager:
host: test
project: 3_leadership_secret_several
environment: environment
service: service
user: user

View file

@ -4,5 +4,9 @@ version: 1.1
secret:
description: the second variable
type: secret
default: test_secret_
bitwarden: true
secret_manager:
host: test
project: 4_several_secrets
environment: environment
service: service
user: user

View file

@ -4,5 +4,9 @@ version: 1.1
secret:
description: the second variable
type: secret
default: TEST_SECRET_
bitwarden: true
secret_manager:
host: test
project: 3_leadership_secret
environment: ENVIRONMENT
service: SERVICE
user: USER

View file

@ -1,7 +0,0 @@
---
version: 1.1
secret2:
description: the variable
type: secret
bitwarden: true

View file

@ -0,0 +1,57 @@
---
version: 1.1
host:
description: hostname
default: test
project:
description: the project
default: 5_secret_calc
environment:
description: the environment
default: environment
service:
description: the service
default: service
user:
description: the user
default: user_1
secret:
description: the secret
type: secret
secret_manager:
host:
variable: _.host
project:
variable: _.project
environment:
variable: _.environment
service:
variable: _.service
user:
variable: _.user
dyn_{{ identifier }}:
dynamic:
- user_1
- user_2
secret:
description: the second secret
type: secret
secret_manager:
host:
variable: __.host
project:
variable: __.project
environment:
variable: __.environment
service:
variable: __.service
user:
type: identifier

View file

@ -1,15 +0,0 @@
---
version: 1.1
leader:
type: leadership
username:
description: the username
type: unix_user
bitwarden: true
secret:
description: the secret
type: secret
bitwarden: true

View file

@ -1,23 +0,0 @@
---
version: 1.1
leader:
type: leadership
username:
description: the username
type: unix_user
default:
- test_secret_1
- test_secret_2
bitwarden: true
secret:
description: the secret
type: secret
default:
jinja: test_secret_{{ index + 1 }}
params:
index:
type: index
bitwarden: true

View file

@ -4,6 +4,10 @@ version: 1.1
secret:
description: the secret variable
type: secret
default:
- test_secret_1
bitwarden: true
multi: true
secret_manager:
host: test
project: 8_multi_variable
environment: environment
service: service
user: user

View file

@ -3,4 +3,10 @@ version: 1.1
secret:
description: the first variable
bitwarden: true
type: string
secret_manager:
host: test
project: 9_unknown_type
environment: environment
service: service
user: user

View file

@ -154,71 +154,39 @@ def test_dictionaries_4_several_secrets_upper_bw():
_test_dictionaries(test_dir / '4_several_secrets_upper', 'bw')
def test_dictionaries_5_default_value_rbw():
def test_dictionaries_5_secret_calc_rbw():
"tests the output"
with raises(DictConsistencyError) as err:
_test_dictionaries(test_dir / '5_default_value', 'rbw')
assert err.errno == 304
_test_dictionaries(test_dir / '5_secret_calc', 'rbw')
def test_dictionaries_5_default_value_bw():
def test_dictionaries_5_secret_calc_bw():
"tests the output"
with raises(DictConsistencyError) as err:
_test_dictionaries(test_dir / '5_default_value', 'bw')
assert err.errno == 304
def test_dictionaries_6_leadership_secret_default_value_rbw():
"tests the output"
with raises(DictConsistencyError) as err:
_test_dictionaries(test_dir / '6_leadership_secret_default_value', 'rbw')
assert err.errno == 304
def test_dictionaries_6_leadership_secret_default_value_bw():
"tests the output"
with raises(DictConsistencyError) as err:
_test_dictionaries(test_dir / '6_leadership_secret_default_value', 'bw')
assert err.errno == 304
def test_dictionaries_6_leadership_secret_follower_variable_rbw():
"tests the output"
with raises(DictConsistencyError) as err:
_test_dictionaries(test_dir / '6_leadership_secret_follower_variable', 'rbw')
assert err.errno == 303
def test_dictionaries_6_leadership_secret_follower_variable_bw():
"tests the output"
with raises(DictConsistencyError) as err:
_test_dictionaries(test_dir / '6_leadership_secret_follower_variable', 'bw')
assert err.errno == 303
_test_dictionaries(test_dir / '5_secret_calc', 'bw')
def test_dictionaries_8_multi_variable_rbw():
"tests the output"
with raises(DictConsistencyError) as err:
_test_dictionaries(test_dir / '8_multi_variable', 'rbw')
assert err.errno == 302
assert err.value.errno == 57
def test_dictionaries_8_multi_variable_bw():
"tests the output"
with raises(DictConsistencyError) as err:
_test_dictionaries(test_dir / '8_multi_variable', 'bw')
assert err.errno == 302
assert err.value.errno == 57
def test_dictionaries_9_unknown_type_rbw():
"tests the output"
with raises(DictConsistencyError) as err:
_test_dictionaries(test_dir / '9_unknown_type', 'rbw')
assert err.errno == 301
assert err.value.errno == 56
def test_dictionaries_9_unknown_type_bw():
"tests the output"
with raises(DictConsistencyError) as err:
_test_dictionaries(test_dir / '9_unknown_type', 'bw')
assert err.errno == 301
assert err.value.errno == 56