Skip to content

Commit

Permalink
Merge pull request #24 from zypp-io/add-parameters-create-secrets
Browse files Browse the repository at this point in the history
Add parameters create secrets
  • Loading branch information
melvinfolkers authored Aug 29, 2024
2 parents c2ff9ce + 84d8735 commit c8a4bf4
Show file tree
Hide file tree
Showing 11 changed files with 56 additions and 24 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -135,4 +135,4 @@ dmypy.json
dev/

# macOS
.DS_Store
.DS_Store
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
SOFTWARE.
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,21 @@ The function lets you upload a dictionary, where the key-value pairs are the sec
from keyvault import dict_to_keyvault

dict_to_keyvault(keyvault_name="mykeyvault", secret_dict={'SECRET_NAME': 'secret value'})

```
It is also possible to add an expiry date or the content type of the secrets:

```python
from keyvault import dict_to_keyvault
from datetime import datetime, timedelta
expiry_date = datetime.now() + timedelta(days=80)

dict_to_keyvault(
keyvault_name="mykeyvault",
secret_dict={'SECRET_NAME': 'secret value'},
expires_on=expiry_date,
content_type="text/plain"
)
```

## Delete keyvault secrets
Expand Down
2 changes: 1 addition & 1 deletion docs/project_layout.drawio
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<mxfile modified="2021-04-30T08:23:38.685Z" host="Electron" agent="5.0 (Macintosh; Intel Mac OS X 11_2_1) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.5.1 Chrome/89.0.4389.82 Electron/12.0.1 Safari/537.36" etag="YPm78dQ8LGfjPMcEM_ZJ" version="14.5.1" type="device"><diagram id="7gcUSTIZ7YSJ5vT40chW" name="Page-1">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</diagram></mxfile>
<mxfile modified="2021-04-30T08:23:38.685Z" host="Electron" agent="5.0 (Macintosh; Intel Mac OS X 11_2_1) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.5.1 Chrome/89.0.4389.82 Electron/12.0.1 Safari/537.36" etag="YPm78dQ8LGfjPMcEM_ZJ" version="14.5.1" type="device"><diagram id="7gcUSTIZ7YSJ5vT40chW" name="Page-1">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</diagram></mxfile>
2 changes: 1 addition & 1 deletion keyvault/auth.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient


def create_keyvault_client(keyvault_name: str):
Expand Down
3 changes: 2 additions & 1 deletion keyvault/get_secrets.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from keyvault.auth import create_keyvault_client
import logging
import os

from keyvault.auth import create_keyvault_client


def get_secret_list(client) -> list:
"""
Expand Down
12 changes: 9 additions & 3 deletions keyvault/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import os

from keyvault import secrets_to_environment

# The keyvault name is stored in github secrets.
secrets_to_environment(keyvault_name=os.environ.get("TEST_KEYVAULT_NAME"))
try:
from dotenv import load_dotenv

load_dotenv(override=True)
print("keyvault", os.environ.get("TEST_KEYVAULT_NAME"))
except ImportError:
print("dotenv not installed")

test_keyvault = os.environ.get("TEST_KEYVAULT_NAME")
28 changes: 19 additions & 9 deletions keyvault/tests/test_keyvault.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import logging
import os
from datetime import datetime, timedelta
from pprint import pprint

from keyvault import delete_keyvault_secrets, dict_to_keyvault, get_keyvault_secrets
from keyvault.tests import test_keyvault

"""
This is the testing suite for twinfield tools.
Expand All @@ -15,6 +16,18 @@
# #############################


def test_create_secrets():
my_secrets = {"USERNAME": "PYTHON2"}
expiry_date = datetime.now() + timedelta(days=80)

dict_to_keyvault(
keyvault_name=test_keyvault,
secret_dict=my_secrets,
expires_on=expiry_date,
content_type="text/plain",
)


def test_keyvault_download_upload():
"""
Test for functions used in this package.
Expand All @@ -24,25 +37,22 @@ def test_keyvault_download_upload():

my_secrets = {"USERNAME": "PYTHON", "PASSWORD": "12kNDi2lm§!"}

dict_to_keyvault(keyvault_name=os.environ.get("TEST_KEYVAULT_NAME"), secret_dict=my_secrets)
dict_to_keyvault(keyvault_name=test_keyvault, secret_dict=my_secrets)

logging.info("***START TEST DOWNLOADING SECRETS FROM KEYVAULT***")

downloaded_secrets = get_keyvault_secrets(keyvault_name=os.environ.get("TEST_KEYVAULT_NAME"))
downloaded_secrets = get_keyvault_secrets(keyvault_name=test_keyvault)
pprint(downloaded_secrets)

assert my_secrets == downloaded_secrets

logging.info("***START TEST DELETING SECRETS FROM KEYVAULT***")

delete_keyvault_secrets(
keyvault_name=os.environ.get("TEST_KEYVAULT_NAME"), secret_list=["USERNAME"]
)
downloaded_updated_secrets = get_keyvault_secrets(
keyvault_name=os.environ.get("TEST_KEYVAULT_NAME")
)
delete_keyvault_secrets(keyvault_name=test_keyvault, secret_list=["USERNAME"])
downloaded_updated_secrets = get_keyvault_secrets(keyvault_name=test_keyvault)
pprint(downloaded_updated_secrets)


if __name__ == "__main__":
test_create_secrets()
test_keyvault_download_upload()
11 changes: 5 additions & 6 deletions keyvault/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def get_dotenv_secrets(dotenv_file: str) -> dict:
return local_secrets


def dict_to_keyvault(keyvault_name: str, secret_dict: dict) -> None:
def dict_to_keyvault(keyvault_name: str, secret_dict: dict, **kwargs) -> None:
"""
Parameters
----------
Expand All @@ -68,17 +68,16 @@ def dict_to_keyvault(keyvault_name: str, secret_dict: dict) -> None:
"""

client = create_keyvault_client(keyvault_name=keyvault_name)
send_secrets(client, secret_dict)
send_secrets(client, secret_dict, **kwargs)


def send_secrets(client: SecretClient, secrets: dict) -> None:
def send_secrets(client: SecretClient, secrets: dict, **kwargs) -> None:
"""
Parameters
----------
client : SecretClient
keyvault client
secrets: dict
dictionary containing the secrets
Expand All @@ -92,7 +91,7 @@ def send_secrets(client: SecretClient, secrets: dict) -> None:
secret_name = secret_name.replace("_", "-") # Azure does not accept _ in names. FFS
logging.debug(f"creating secret name {secret_name}")
try:
client.set_secret(secret_name, secret_value)
client.set_secret(secret_name, secret_value, **kwargs)
except ResourceExistsError:
# if the secret already exists, first recover the secret and then update the secret.
client.begin_recover_deleted_secret(secret_name)
Expand All @@ -101,7 +100,7 @@ def send_secrets(client: SecretClient, secrets: dict) -> None:
for _ in tqdm(range(10), desc="Secret is in soft delete state: Waiting to recover..."):
sleep(1)

client.set_secret(secret_name, secret_value)
client.set_secret(secret_name, secret_value, **kwargs)

logging.info(f"succesfully created {len(secrets)} secrets!")

Expand Down
1 change: 1 addition & 0 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ flake8
isort
pre-commit
pytest
python-dotenv
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[metadata]
name = keyvault
version = 0.1.6
version = 0.2.0
author = Melvin Folkers, Erfan Nariman
author_email = hello@zypp.io
description = A small package for handling project secrets
Expand Down

0 comments on commit c8a4bf4

Please sign in to comment.