From f6e10ae77dd117dddc70a6968f91518fd9acc216 Mon Sep 17 00:00:00 2001 From: kisarkar Date: Wed, 26 May 2021 22:38:57 +0530 Subject: [PATCH 01/10] Moving CLI config to API Platform --- .build/pre_build.py | 14 ++++------ user-sync.spec | 5 +++- user_sync/app.py | 67 ++++++++++++++++++++++++++++++++++++++------- 3 files changed, 66 insertions(+), 20 deletions(-) diff --git a/.build/pre_build.py b/.build/pre_build.py index d144527de..c9e48baca 100644 --- a/.build/pre_build.py +++ b/.build/pre_build.py @@ -21,6 +21,7 @@ import os import shutil from backports import configparser +from distutils.dir_util import copy_tree def cd(): @@ -29,15 +30,8 @@ def cd(): def bundle_example_config(subdir): examples_dir = os.path.join('examples', subdir) - files = [os.path.join(examples_dir, f) for f in os.listdir(examples_dir) if - os.path.isfile(os.path.join(examples_dir, f))] - bundle_dir = os.path.join('user_sync', 'resources', 'examples') - if not os.path.exists(bundle_dir): - os.mkdir(bundle_dir) - for f in files: - dest = os.path.join(bundle_dir, os.path.split(f)[-1]) - shutil.copy(f, dest) - + bundle_dir = os.path.join('user_sync', 'resources', 'examples', subdir) + copy_tree(examples_dir, bundle_dir) def bundle_feature_flag_config(): default_cfg_path = os.path.join('user_sync', 'resources', 'default_flags.cfg') @@ -64,4 +58,6 @@ def bundle_feature_flag_config(): if __name__ == '__main__': cd() bundle_example_config('config files - basic') + bundle_example_config('config files - custom attributes and mappings') bundle_example_config('sign') + bundle_example_config('csv inputs - user and remove lists') diff --git a/user-sync.spec b/user-sync.spec index 301e1a943..3273b5ca7 100644 --- a/user-sync.spec +++ b/user-sync.spec @@ -8,7 +8,10 @@ a = Analysis(['user_sync/app.py'], ('user_sync/resources/*.cfg', 'resources'), ('user_sync/resources/manual_url', 'resources'), ('user_sync/resources/README.md', 'resources'), - ('user_sync/resources/examples/*', 'resources/examples'), + ('user_sync/resources/examples/config files - basic/*', 'resources/examples/config files - basic'), + ('user_sync/resources/examples/config files - custom attributes and mappings/*', 'resources/examples/config files - custom attributes and mappings'), + ('user_sync/resources/examples/sign/*', 'resources/examples/sign'), + ('user_sync/resources/examples/csv inputs - user and remove lists/*', 'resources/examples/csv inputs - user and remove lists'), ('user_sync/resources/shell_scripts/win', 'resources/shell_scripts/win'), ('user_sync/resources/shell_scripts/linux', 'resources/shell_scripts/linux'), ], diff --git a/user_sync/app.py b/user_sync/app.py index 02c4af70f..b27b900a2 100644 --- a/user_sync/app.py +++ b/user_sync/app.py @@ -230,7 +230,16 @@ def init(ctx): sync = 'user-sync-config.yml' umapi = 'connector-umapi.yml' ldap = 'connector-ldap.yml' - ctx.forward(example_config, root=sync, umapi=umapi, ldap=ldap) + okta = 'connector-okta.yml' + csv = 'connector-csv.yml' + console = 'connector-adobe-console.yml' + extension = 'extension-config.yml' + remove_list = 'remove-list.csv' + users_file_custom = 'users-file-with-custom-attributes-and-mappings.csv' + users_file = 'users-file.csv' + ctx.forward(example_config, root=sync, umapi=umapi, ldap=ldap, + okta=okta, csv=csv, console=console, extension=extension, + remove_list=remove_list, users_file_custom=users_file_custom, users_file=users_file) @main.command(short_help="Generate invocation scripts") @@ -261,21 +270,34 @@ def shell_scripts(platform): prompt='UMAPI Config Filename', default='connector-umapi.yml') @click.option('--ldap', help="Filename of LDAP credential config file", prompt='LDAP Config Filename', default='connector-ldap.yml') -def example_config(**kwargs): +@click.option('--examples', type=bool, help="Generate all or selected config files", required=False, default=None) +def example_config(examples=False, **kwargs): """Generate example configuration files""" res_files = { 'root': os.path.join('examples', 'user-sync-config.yml'), 'umapi': os.path.join('examples', 'connector-umapi.yml'), 'ldap': os.path.join('examples', 'connector-ldap.yml'), + 'okta': os.path.join('examples', 'config files - basic', 'connector-okta.yml'), + 'csv': os.path.join('examples', 'config files - basic', 'connector-csv.yml'), + 'console': os.path.join('examples', 'config files - basic', 'connector-adobe-console.yml'), + 'extension': os.path.join('examples', 'config files - custom attributes and mappings', 'extension-config.yml'), + 'remove_list': os.path.join('examples', 'csv inputs - user and remove lists', 'remove-list.csv'), + 'users_file_custom': os.path.join('examples', 'csv inputs - user and remove lists', 'users-file-with-custom-attributes-and-mappings.csv'), + 'users_file': os.path.join('examples', 'csv inputs - user and remove lists', 'users-file.csv') } - for k, fname in kwargs.items(): - target = Path.cwd() / fname + if not examples: + res_files = {config: kwargs[config] for config in res_files + if config in kwargs} + + for k, fname in res_files.items(): + target = Path(fname) assert k in res_files, "Invalid option specified" res_file = user_sync.resource.get_resource(res_files[k]) assert res_file is not None, "Resource file '{}' not found".format(res_files[k]) if target.exists() and not click.confirm('\nWarning - file already exists: \n{}\nOverwrite?'.format(target)): continue + os.makedirs(os.path.dirname(target), exist_ok=True) click.echo("Generating file '{}'".format(fname)) with open(res_file, 'r') as file: content = file.read() @@ -287,14 +309,39 @@ def example_config(**kwargs): @click.help_option('-h', '--help') @click.option('--filename', help="Filename of Sign Sync config", prompt='Sign Sync Config Filename', default='connector-sign-sync.yml') -def example_config_sign(filename): +@click.option('--root', help="Filename of root sign sync config file", + prompt='Main Config Filename', default='sign-sync-config.yml') +@click.option('--sign', help="Filename of Sign Sync config", + prompt='Sign Sync Config Filename', default='connector-sign.yml') +@click.option('--ldap', help="Filename of LDAP credential config file", + prompt='LDAP Config Filename', default='connector-ldap.yml') +@click.option('--examples', type=bool, help="Generate all or selected config files", + required=False, default=None) +def example_config_sign(examples=False, **kwargs): """Generate Sign Sync Config""" - res_filename = os.path.join('examples', 'connector-sign-sync.yml') + res_files = { + 'root': os.path.join('examples', 'sign', 'sign-sync-config.yml'), + 'sign': os.path.join('examples', 'sign', 'connector-sign.yml'), + 'ldap': os.path.join('examples', 'sign', 'connector-ldap.yml'), + } - res_file = user_sync.resource.get_resource(res_filename) - assert res_file is not None, "Resource file '{}' not found".format(res_filename) - click.echo("Generating file '{}'".format(filename)) - shutil.copy(res_file, filename) + if not examples: + res_files = {config: kwargs[config] for config in res_files + if config in kwargs} + + for k, fname in res_files.items(): + target = Path.cwd() / fname + assert k in res_files, "Invalid option specified" + res_file = user_sync.resource.get_resource(res_files[k]) + assert res_file is not None, "Resource file '{}' not found".format(res_files[k]) + if target.exists() and not click.confirm('\nWarning - file already exists: \n{}\nOverwrite?'.format(target)): + continue + os.makedirs(os.path.dirname(target), exist_ok=True) + click.echo("Generating file '{}'".format(fname)) + with open(res_file, 'r') as file: + content = file.read() + with open(target, 'w') as file: + file.write(content) @main.command() From 0ce33780d9fb9460dc5f09e552b8f1e9dec01791 Mon Sep 17 00:00:00 2001 From: Andrew Dorton Date: Mon, 13 Sep 2021 16:42:53 -0600 Subject: [PATCH 02/10] bugfixes --- .build/pre_build.py | 8 ++++ user_sync/app.py | 94 +++++++++++++++++++-------------------------- 2 files changed, 47 insertions(+), 55 deletions(-) diff --git a/.build/pre_build.py b/.build/pre_build.py index c9e48baca..fa98e8e77 100644 --- a/.build/pre_build.py +++ b/.build/pre_build.py @@ -18,6 +18,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. +from pathlib import Path import os import shutil from backports import configparser @@ -33,6 +34,12 @@ def bundle_example_config(subdir): bundle_dir = os.path.join('user_sync', 'resources', 'examples', subdir) copy_tree(examples_dir, bundle_dir) +def bundle_basic_examples(): + examples_dir = Path('examples') / 'config files - basic' + for f in ['user-sync-config.yml', 'connector-ldap.yml', 'connector-umapi.yml']: + filename = examples_dir / f + shutil.copy(filename, Path('user_sync', 'resources', 'examples')) + def bundle_feature_flag_config(): default_cfg_path = os.path.join('user_sync', 'resources', 'default_flags.cfg') default_cfg = configparser.ConfigParser() @@ -57,6 +64,7 @@ def bundle_feature_flag_config(): if __name__ == '__main__': cd() + bundle_basic_examples() bundle_example_config('config files - basic') bundle_example_config('config files - custom attributes and mappings') bundle_example_config('sign') diff --git a/user_sync/app.py b/user_sync/app.py index b27b900a2..81b12bec2 100644 --- a/user_sync/app.py +++ b/user_sync/app.py @@ -264,41 +264,47 @@ def shell_scripts(platform): @main.command() @click.help_option('-h', '--help') +@click.option('--extras', help="Install extra example configs and csv templates?", default=False, is_flag=True) @click.option('--root', help="Filename of root user sync config file", prompt='Main Config Filename', default='user-sync-config.yml') @click.option('--umapi', help="Filename of UMAPI credential config file", prompt='UMAPI Config Filename', default='connector-umapi.yml') @click.option('--ldap', help="Filename of LDAP credential config file", prompt='LDAP Config Filename', default='connector-ldap.yml') -@click.option('--examples', type=bool, help="Generate all or selected config files", required=False, default=None) -def example_config(examples=False, **kwargs): +def example_config(extras, **kwargs): """Generate example configuration files""" - res_files = { - 'root': os.path.join('examples', 'user-sync-config.yml'), - 'umapi': os.path.join('examples', 'connector-umapi.yml'), - 'ldap': os.path.join('examples', 'connector-ldap.yml'), - 'okta': os.path.join('examples', 'config files - basic', 'connector-okta.yml'), - 'csv': os.path.join('examples', 'config files - basic', 'connector-csv.yml'), - 'console': os.path.join('examples', 'config files - basic', 'connector-adobe-console.yml'), - 'extension': os.path.join('examples', 'config files - custom attributes and mappings', 'extension-config.yml'), - 'remove_list': os.path.join('examples', 'csv inputs - user and remove lists', 'remove-list.csv'), - 'users_file_custom': os.path.join('examples', 'csv inputs - user and remove lists', 'users-file-with-custom-attributes-and-mappings.csv'), - 'users_file': os.path.join('examples', 'csv inputs - user and remove lists', 'users-file.csv') + basic_res = { + 'root': Path('examples', 'user-sync-config.yml'), + 'umapi': Path('examples', 'connector-umapi.yml'), + 'ldap': Path('examples', 'connector-ldap.yml'), + } + extra_res = { + 'okta': Path('examples', 'config files - basic', 'connector-okta.yml'), + 'csv': Path('examples', 'config files - basic', 'connector-csv.yml'), + 'console': Path('examples', 'config files - basic', 'connector-adobe-console.yml'), + 'extension': Path('examples', 'config files - custom attributes and mappings', 'extension-config.yml'), + 'remove_list': Path('examples', 'csv inputs - user and remove lists', 'remove-list.csv'), + 'users_file_custom': Path('examples', 'csv inputs - user and remove lists', 'users-file-with-custom-attributes-and-mappings.csv'), + 'users_file': Path('examples', 'csv inputs - user and remove lists', 'users-file.csv') } - if not examples: - res_files = {config: kwargs[config] for config in res_files - if config in kwargs} - - for k, fname in res_files.items(): - target = Path(fname) - assert k in res_files, "Invalid option specified" - res_file = user_sync.resource.get_resource(res_files[k]) - assert res_file is not None, "Resource file '{}' not found".format(res_files[k]) + files_to_copy = [] + # basic files should go in current working dir + for k, fname in kwargs.items(): + target = Path.cwd() / fname + files_to_copy.append((basic_res[k], target)) + + # extras go in "examples" subdir + for fname in extra_res.values(): + files_to_copy.append((fname, fname)) + + for src, target in files_to_copy: + res_file = user_sync.resource.get_resource(str(src)) + assert res_file is not None, "Resource file '{}' not found".format(src) if target.exists() and not click.confirm('\nWarning - file already exists: \n{}\nOverwrite?'.format(target)): continue os.makedirs(os.path.dirname(target), exist_ok=True) - click.echo("Generating file '{}'".format(fname)) + click.echo("Generating file '{}'".format(target)) with open(res_file, 'r') as file: content = file.read() with open(target, 'w') as file: @@ -309,39 +315,17 @@ def example_config(examples=False, **kwargs): @click.help_option('-h', '--help') @click.option('--filename', help="Filename of Sign Sync config", prompt='Sign Sync Config Filename', default='connector-sign-sync.yml') -@click.option('--root', help="Filename of root sign sync config file", - prompt='Main Config Filename', default='sign-sync-config.yml') -@click.option('--sign', help="Filename of Sign Sync config", - prompt='Sign Sync Config Filename', default='connector-sign.yml') -@click.option('--ldap', help="Filename of LDAP credential config file", - prompt='LDAP Config Filename', default='connector-ldap.yml') -@click.option('--examples', type=bool, help="Generate all or selected config files", - required=False, default=None) -def example_config_sign(examples=False, **kwargs): +def example_config_sign(filename): """Generate Sign Sync Config""" - res_files = { - 'root': os.path.join('examples', 'sign', 'sign-sync-config.yml'), - 'sign': os.path.join('examples', 'sign', 'connector-sign.yml'), - 'ldap': os.path.join('examples', 'sign', 'connector-ldap.yml'), - } - - if not examples: - res_files = {config: kwargs[config] for config in res_files - if config in kwargs} - - for k, fname in res_files.items(): - target = Path.cwd() / fname - assert k in res_files, "Invalid option specified" - res_file = user_sync.resource.get_resource(res_files[k]) - assert res_file is not None, "Resource file '{}' not found".format(res_files[k]) - if target.exists() and not click.confirm('\nWarning - file already exists: \n{}\nOverwrite?'.format(target)): - continue - os.makedirs(os.path.dirname(target), exist_ok=True) - click.echo("Generating file '{}'".format(fname)) - with open(res_file, 'r') as file: - content = file.read() - with open(target, 'w') as file: - file.write(content) + res_filename = Path('examples', 'sign', 'connector-sign-sync.yml') + + res_file = user_sync.resource.get_resource(str(res_filename)) + assert res_file is not None, "Resource file '{}' not found".format(res_filename) + click.echo("Generating file '{}'".format(filename)) + with open(res_file, 'r') as file: + content = file.read() + with open(filename, 'w') as file: + file.write(content) @main.command() From d819e0309993e3f58a759ac27810ab16c1a0211f Mon Sep 17 00:00:00 2001 From: Andrew Dorton Date: Mon, 13 Sep 2021 16:46:02 -0600 Subject: [PATCH 03/10] fix init function --- user_sync/app.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/user_sync/app.py b/user_sync/app.py index 81b12bec2..ed621d3f9 100644 --- a/user_sync/app.py +++ b/user_sync/app.py @@ -230,16 +230,7 @@ def init(ctx): sync = 'user-sync-config.yml' umapi = 'connector-umapi.yml' ldap = 'connector-ldap.yml' - okta = 'connector-okta.yml' - csv = 'connector-csv.yml' - console = 'connector-adobe-console.yml' - extension = 'extension-config.yml' - remove_list = 'remove-list.csv' - users_file_custom = 'users-file-with-custom-attributes-and-mappings.csv' - users_file = 'users-file.csv' - ctx.forward(example_config, root=sync, umapi=umapi, ldap=ldap, - okta=okta, csv=csv, console=console, extension=extension, - remove_list=remove_list, users_file_custom=users_file_custom, users_file=users_file) + ctx.forward(example_config, extras=True, root=sync, umapi=umapi, ldap=ldap) @main.command(short_help="Generate invocation scripts") From b5d16afd57d93b0ccbcef6e9b76f662ddad5aafd Mon Sep 17 00:00:00 2001 From: Andrew Dorton Date: Tue, 14 Sep 2021 07:35:22 -0600 Subject: [PATCH 04/10] try different copy function --- .build/pre_build.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.build/pre_build.py b/.build/pre_build.py index fa98e8e77..9d4374e51 100644 --- a/.build/pre_build.py +++ b/.build/pre_build.py @@ -22,7 +22,6 @@ import os import shutil from backports import configparser -from distutils.dir_util import copy_tree def cd(): @@ -32,7 +31,7 @@ def cd(): def bundle_example_config(subdir): examples_dir = os.path.join('examples', subdir) bundle_dir = os.path.join('user_sync', 'resources', 'examples', subdir) - copy_tree(examples_dir, bundle_dir) + shutil.copytree(examples_dir, bundle_dir) def bundle_basic_examples(): examples_dir = Path('examples') / 'config files - basic' From 8a7dd2a68f7fcd9447ceb2706778a1a00b7a285c Mon Sep 17 00:00:00 2001 From: Andrew Dorton Date: Tue, 14 Sep 2021 08:41:15 -0600 Subject: [PATCH 05/10] tweak example copy --- .build/pre_build.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.build/pre_build.py b/.build/pre_build.py index 9d4374e51..49bf6f679 100644 --- a/.build/pre_build.py +++ b/.build/pre_build.py @@ -29,9 +29,13 @@ def cd(): def bundle_example_config(subdir): - examples_dir = os.path.join('examples', subdir) - bundle_dir = os.path.join('user_sync', 'resources', 'examples', subdir) - shutil.copytree(examples_dir, bundle_dir) + examples_dir = Path('examples', subdir) + bundle_dir = Path('user_sync', 'resources', 'examples', subdir) + if bundle_dir.exists(): + shutil.rmtree(bundle_dir) + bundle_dir.mkdir() + for f in examples_dir.glob('*'): + shutil.copy(f, bundle_dir) def bundle_basic_examples(): examples_dir = Path('examples') / 'config files - basic' From 867b85bcb7ba6652aec405d7290bfb8214f6ea22 Mon Sep 17 00:00:00 2001 From: Andrew Dorton Date: Tue, 14 Sep 2021 09:30:54 -0600 Subject: [PATCH 06/10] build file tweaks --- .github/workflows/package-release.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/package-release.yml b/.github/workflows/package-release.yml index b06918455..f6d643887 100644 --- a/.github/workflows/package-release.yml +++ b/.github/workflows/package-release.yml @@ -26,18 +26,18 @@ jobs: uses: battila7/get-version-action@v2 - name: Ubuntu-Install dependencies run: | - sudo apt-get update - sudo apt-get install -y software-properties-common - sudo apt-get install -y build-essential - sudo apt-get install -y python3-dev python3-pip python3-virtualenv - sudo apt-get install -y pkg-config libssl-dev libdbus-1-dev libdbus-glib-1-dev python-dbus libffi-dev libkrb5-dev + sudo apt-get update && \ + apt-get install -y software-properties-common && \ + apt-get install -y build-essential && \ + apt-get install -y python3-dev python3-pip python3-virtualenv && \ + apt-get install -y pkg-config libssl-dev libdbus-1-dev libdbus-glib-1-dev python-dbus libffi-dev libkrb5-dev - run: | pip install external/okta-0.0.3.1-py2.py3-none-any.whl pip install -e . pip install -e .[test] pip install -e .[setup] - - name: Make standalone - run: make standalone + - name: Build executable + run: make env: UST_EXTENSION: ${{matrix.extension_support}} - name: Test with pytest @@ -79,7 +79,7 @@ jobs: pip install -e . pip install -e .[test] pip install -e .[setup] - - run: make standalone + - run: make env: UST_EXTENSION: ${{matrix.extension_support}} - name: Test with pytest From b462efe296a190da1144dcdd02a6025320182529 Mon Sep 17 00:00:00 2001 From: Andrew Dorton Date: Tue, 14 Sep 2021 09:39:35 -0600 Subject: [PATCH 07/10] remove spaces from examples subdirs --- .build/pre_build.py | 8 ++++---- .../connector-adobe-console.yml | 0 .../connector-csv.yml | 0 .../connector-ldap.yml | 0 .../connector-okta.yml | 0 .../connector-umapi.yml | 0 .../user-sync-config.yml | 0 .../extension-config.yml | 0 .../remove-list.csv | 0 ...rs-file-with-custom-attributes-and-mappings.csv | 0 .../users-file.csv | 0 user_sync/app.py | 14 +++++++------- 12 files changed, 11 insertions(+), 11 deletions(-) rename examples/{config files - basic => config-files-basic}/connector-adobe-console.yml (100%) rename examples/{config files - basic => config-files-basic}/connector-csv.yml (100%) rename examples/{config files - basic => config-files-basic}/connector-ldap.yml (100%) rename examples/{config files - basic => config-files-basic}/connector-okta.yml (100%) rename examples/{config files - basic => config-files-basic}/connector-umapi.yml (100%) rename examples/{config files - basic => config-files-basic}/user-sync-config.yml (100%) rename examples/{config files - custom attributes and mappings => config-files-custom-attributes-and-mappings}/extension-config.yml (100%) rename examples/{csv inputs - user and remove lists => csv-inputs-user-and-remove-lists}/remove-list.csv (100%) rename examples/{csv inputs - user and remove lists => csv-inputs-user-and-remove-lists}/users-file-with-custom-attributes-and-mappings.csv (100%) rename examples/{csv inputs - user and remove lists => csv-inputs-user-and-remove-lists}/users-file.csv (100%) diff --git a/.build/pre_build.py b/.build/pre_build.py index 49bf6f679..d4fb8e03e 100644 --- a/.build/pre_build.py +++ b/.build/pre_build.py @@ -38,7 +38,7 @@ def bundle_example_config(subdir): shutil.copy(f, bundle_dir) def bundle_basic_examples(): - examples_dir = Path('examples') / 'config files - basic' + examples_dir = Path('examples') / 'config-files-basic' for f in ['user-sync-config.yml', 'connector-ldap.yml', 'connector-umapi.yml']: filename = examples_dir / f shutil.copy(filename, Path('user_sync', 'resources', 'examples')) @@ -68,7 +68,7 @@ def bundle_feature_flag_config(): if __name__ == '__main__': cd() bundle_basic_examples() - bundle_example_config('config files - basic') - bundle_example_config('config files - custom attributes and mappings') + bundle_example_config('config-files-basic') + bundle_example_config('config-files-custom-attributes-and-mappings') bundle_example_config('sign') - bundle_example_config('csv inputs - user and remove lists') + bundle_example_config('csv-inputs-user-and-remove-lists') diff --git a/examples/config files - basic/connector-adobe-console.yml b/examples/config-files-basic/connector-adobe-console.yml similarity index 100% rename from examples/config files - basic/connector-adobe-console.yml rename to examples/config-files-basic/connector-adobe-console.yml diff --git a/examples/config files - basic/connector-csv.yml b/examples/config-files-basic/connector-csv.yml similarity index 100% rename from examples/config files - basic/connector-csv.yml rename to examples/config-files-basic/connector-csv.yml diff --git a/examples/config files - basic/connector-ldap.yml b/examples/config-files-basic/connector-ldap.yml similarity index 100% rename from examples/config files - basic/connector-ldap.yml rename to examples/config-files-basic/connector-ldap.yml diff --git a/examples/config files - basic/connector-okta.yml b/examples/config-files-basic/connector-okta.yml similarity index 100% rename from examples/config files - basic/connector-okta.yml rename to examples/config-files-basic/connector-okta.yml diff --git a/examples/config files - basic/connector-umapi.yml b/examples/config-files-basic/connector-umapi.yml similarity index 100% rename from examples/config files - basic/connector-umapi.yml rename to examples/config-files-basic/connector-umapi.yml diff --git a/examples/config files - basic/user-sync-config.yml b/examples/config-files-basic/user-sync-config.yml similarity index 100% rename from examples/config files - basic/user-sync-config.yml rename to examples/config-files-basic/user-sync-config.yml diff --git a/examples/config files - custom attributes and mappings/extension-config.yml b/examples/config-files-custom-attributes-and-mappings/extension-config.yml similarity index 100% rename from examples/config files - custom attributes and mappings/extension-config.yml rename to examples/config-files-custom-attributes-and-mappings/extension-config.yml diff --git a/examples/csv inputs - user and remove lists/remove-list.csv b/examples/csv-inputs-user-and-remove-lists/remove-list.csv similarity index 100% rename from examples/csv inputs - user and remove lists/remove-list.csv rename to examples/csv-inputs-user-and-remove-lists/remove-list.csv diff --git a/examples/csv inputs - user and remove lists/users-file-with-custom-attributes-and-mappings.csv b/examples/csv-inputs-user-and-remove-lists/users-file-with-custom-attributes-and-mappings.csv similarity index 100% rename from examples/csv inputs - user and remove lists/users-file-with-custom-attributes-and-mappings.csv rename to examples/csv-inputs-user-and-remove-lists/users-file-with-custom-attributes-and-mappings.csv diff --git a/examples/csv inputs - user and remove lists/users-file.csv b/examples/csv-inputs-user-and-remove-lists/users-file.csv similarity index 100% rename from examples/csv inputs - user and remove lists/users-file.csv rename to examples/csv-inputs-user-and-remove-lists/users-file.csv diff --git a/user_sync/app.py b/user_sync/app.py index ed621d3f9..b2e46f23e 100644 --- a/user_sync/app.py +++ b/user_sync/app.py @@ -270,13 +270,13 @@ def example_config(extras, **kwargs): 'ldap': Path('examples', 'connector-ldap.yml'), } extra_res = { - 'okta': Path('examples', 'config files - basic', 'connector-okta.yml'), - 'csv': Path('examples', 'config files - basic', 'connector-csv.yml'), - 'console': Path('examples', 'config files - basic', 'connector-adobe-console.yml'), - 'extension': Path('examples', 'config files - custom attributes and mappings', 'extension-config.yml'), - 'remove_list': Path('examples', 'csv inputs - user and remove lists', 'remove-list.csv'), - 'users_file_custom': Path('examples', 'csv inputs - user and remove lists', 'users-file-with-custom-attributes-and-mappings.csv'), - 'users_file': Path('examples', 'csv inputs - user and remove lists', 'users-file.csv') + 'okta': Path('examples', 'config-files-basic', 'connector-okta.yml'), + 'csv': Path('examples', 'config-files-basic', 'connector-csv.yml'), + 'console': Path('examples', 'config-files-basic', 'connector-adobe-console.yml'), + 'extension': Path('examples', 'config-files-custom-attributes-and-mappings', 'extension-config.yml'), + 'remove_list': Path('examples', 'csv-inputs-user-and-remove-lists', 'remove-list.csv'), + 'users_file_custom': Path('examples', 'csv-inputs-user-and-remove-lists', 'users-file-with-custom-attributes-and-mappings.csv'), + 'users_file': Path('examples', 'csv-inputs-user-and-remove-lists', 'users-file.csv') } files_to_copy = [] From 23bfb58b585fe9615c1148af624eee69ba569b61 Mon Sep 17 00:00:00 2001 From: Andrew Dorton Date: Tue, 14 Sep 2021 09:43:27 -0600 Subject: [PATCH 08/10] Revert "remove spaces from examples subdirs" This reverts commit b462efe296a190da1144dcdd02a6025320182529. --- .build/pre_build.py | 8 ++++---- .../connector-adobe-console.yml | 0 .../connector-csv.yml | 0 .../connector-ldap.yml | 0 .../connector-okta.yml | 0 .../connector-umapi.yml | 0 .../user-sync-config.yml | 0 .../extension-config.yml | 0 .../remove-list.csv | 0 ...rs-file-with-custom-attributes-and-mappings.csv | 0 .../users-file.csv | 0 user_sync/app.py | 14 +++++++------- 12 files changed, 11 insertions(+), 11 deletions(-) rename examples/{config-files-basic => config files - basic}/connector-adobe-console.yml (100%) rename examples/{config-files-basic => config files - basic}/connector-csv.yml (100%) rename examples/{config-files-basic => config files - basic}/connector-ldap.yml (100%) rename examples/{config-files-basic => config files - basic}/connector-okta.yml (100%) rename examples/{config-files-basic => config files - basic}/connector-umapi.yml (100%) rename examples/{config-files-basic => config files - basic}/user-sync-config.yml (100%) rename examples/{config-files-custom-attributes-and-mappings => config files - custom attributes and mappings}/extension-config.yml (100%) rename examples/{csv-inputs-user-and-remove-lists => csv inputs - user and remove lists}/remove-list.csv (100%) rename examples/{csv-inputs-user-and-remove-lists => csv inputs - user and remove lists}/users-file-with-custom-attributes-and-mappings.csv (100%) rename examples/{csv-inputs-user-and-remove-lists => csv inputs - user and remove lists}/users-file.csv (100%) diff --git a/.build/pre_build.py b/.build/pre_build.py index d4fb8e03e..49bf6f679 100644 --- a/.build/pre_build.py +++ b/.build/pre_build.py @@ -38,7 +38,7 @@ def bundle_example_config(subdir): shutil.copy(f, bundle_dir) def bundle_basic_examples(): - examples_dir = Path('examples') / 'config-files-basic' + examples_dir = Path('examples') / 'config files - basic' for f in ['user-sync-config.yml', 'connector-ldap.yml', 'connector-umapi.yml']: filename = examples_dir / f shutil.copy(filename, Path('user_sync', 'resources', 'examples')) @@ -68,7 +68,7 @@ def bundle_feature_flag_config(): if __name__ == '__main__': cd() bundle_basic_examples() - bundle_example_config('config-files-basic') - bundle_example_config('config-files-custom-attributes-and-mappings') + bundle_example_config('config files - basic') + bundle_example_config('config files - custom attributes and mappings') bundle_example_config('sign') - bundle_example_config('csv-inputs-user-and-remove-lists') + bundle_example_config('csv inputs - user and remove lists') diff --git a/examples/config-files-basic/connector-adobe-console.yml b/examples/config files - basic/connector-adobe-console.yml similarity index 100% rename from examples/config-files-basic/connector-adobe-console.yml rename to examples/config files - basic/connector-adobe-console.yml diff --git a/examples/config-files-basic/connector-csv.yml b/examples/config files - basic/connector-csv.yml similarity index 100% rename from examples/config-files-basic/connector-csv.yml rename to examples/config files - basic/connector-csv.yml diff --git a/examples/config-files-basic/connector-ldap.yml b/examples/config files - basic/connector-ldap.yml similarity index 100% rename from examples/config-files-basic/connector-ldap.yml rename to examples/config files - basic/connector-ldap.yml diff --git a/examples/config-files-basic/connector-okta.yml b/examples/config files - basic/connector-okta.yml similarity index 100% rename from examples/config-files-basic/connector-okta.yml rename to examples/config files - basic/connector-okta.yml diff --git a/examples/config-files-basic/connector-umapi.yml b/examples/config files - basic/connector-umapi.yml similarity index 100% rename from examples/config-files-basic/connector-umapi.yml rename to examples/config files - basic/connector-umapi.yml diff --git a/examples/config-files-basic/user-sync-config.yml b/examples/config files - basic/user-sync-config.yml similarity index 100% rename from examples/config-files-basic/user-sync-config.yml rename to examples/config files - basic/user-sync-config.yml diff --git a/examples/config-files-custom-attributes-and-mappings/extension-config.yml b/examples/config files - custom attributes and mappings/extension-config.yml similarity index 100% rename from examples/config-files-custom-attributes-and-mappings/extension-config.yml rename to examples/config files - custom attributes and mappings/extension-config.yml diff --git a/examples/csv-inputs-user-and-remove-lists/remove-list.csv b/examples/csv inputs - user and remove lists/remove-list.csv similarity index 100% rename from examples/csv-inputs-user-and-remove-lists/remove-list.csv rename to examples/csv inputs - user and remove lists/remove-list.csv diff --git a/examples/csv-inputs-user-and-remove-lists/users-file-with-custom-attributes-and-mappings.csv b/examples/csv inputs - user and remove lists/users-file-with-custom-attributes-and-mappings.csv similarity index 100% rename from examples/csv-inputs-user-and-remove-lists/users-file-with-custom-attributes-and-mappings.csv rename to examples/csv inputs - user and remove lists/users-file-with-custom-attributes-and-mappings.csv diff --git a/examples/csv-inputs-user-and-remove-lists/users-file.csv b/examples/csv inputs - user and remove lists/users-file.csv similarity index 100% rename from examples/csv-inputs-user-and-remove-lists/users-file.csv rename to examples/csv inputs - user and remove lists/users-file.csv diff --git a/user_sync/app.py b/user_sync/app.py index b2e46f23e..ed621d3f9 100644 --- a/user_sync/app.py +++ b/user_sync/app.py @@ -270,13 +270,13 @@ def example_config(extras, **kwargs): 'ldap': Path('examples', 'connector-ldap.yml'), } extra_res = { - 'okta': Path('examples', 'config-files-basic', 'connector-okta.yml'), - 'csv': Path('examples', 'config-files-basic', 'connector-csv.yml'), - 'console': Path('examples', 'config-files-basic', 'connector-adobe-console.yml'), - 'extension': Path('examples', 'config-files-custom-attributes-and-mappings', 'extension-config.yml'), - 'remove_list': Path('examples', 'csv-inputs-user-and-remove-lists', 'remove-list.csv'), - 'users_file_custom': Path('examples', 'csv-inputs-user-and-remove-lists', 'users-file-with-custom-attributes-and-mappings.csv'), - 'users_file': Path('examples', 'csv-inputs-user-and-remove-lists', 'users-file.csv') + 'okta': Path('examples', 'config files - basic', 'connector-okta.yml'), + 'csv': Path('examples', 'config files - basic', 'connector-csv.yml'), + 'console': Path('examples', 'config files - basic', 'connector-adobe-console.yml'), + 'extension': Path('examples', 'config files - custom attributes and mappings', 'extension-config.yml'), + 'remove_list': Path('examples', 'csv inputs - user and remove lists', 'remove-list.csv'), + 'users_file_custom': Path('examples', 'csv inputs - user and remove lists', 'users-file-with-custom-attributes-and-mappings.csv'), + 'users_file': Path('examples', 'csv inputs - user and remove lists', 'users-file.csv') } files_to_copy = [] From a1754adcda46f8b41d54a16b3cb31662658e3674 Mon Sep 17 00:00:00 2001 From: Andrew Dorton Date: Tue, 14 Sep 2021 09:47:46 -0600 Subject: [PATCH 09/10] create examples parent dir --- .build/pre_build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.build/pre_build.py b/.build/pre_build.py index 49bf6f679..2ffaa1fde 100644 --- a/.build/pre_build.py +++ b/.build/pre_build.py @@ -33,7 +33,7 @@ def bundle_example_config(subdir): bundle_dir = Path('user_sync', 'resources', 'examples', subdir) if bundle_dir.exists(): shutil.rmtree(bundle_dir) - bundle_dir.mkdir() + bundle_dir.mkdir(parents=True) for f in examples_dir.glob('*'): shutil.copy(f, bundle_dir) From d2ca176141f3da4f8485a3a516a6cbad28e506fa Mon Sep 17 00:00:00 2001 From: Andrew Dorton Date: Tue, 14 Sep 2021 09:54:38 -0600 Subject: [PATCH 10/10] try different makedir func --- .build/pre_build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.build/pre_build.py b/.build/pre_build.py index 2ffaa1fde..41a1acee9 100644 --- a/.build/pre_build.py +++ b/.build/pre_build.py @@ -33,7 +33,7 @@ def bundle_example_config(subdir): bundle_dir = Path('user_sync', 'resources', 'examples', subdir) if bundle_dir.exists(): shutil.rmtree(bundle_dir) - bundle_dir.mkdir(parents=True) + os.makedirs(bundle_dir, exist_ok=True) for f in examples_dir.glob('*'): shutil.copy(f, bundle_dir)