Changelog
2.0.0
Fix
- instance: Updated instance based on black
- move code inside try, else to avoid undefined variables
- type_and_file_name not defined when dumping altered components. Use simple function_name instead
- _make_request test for truthiness of response.json() which is False for an empty array causing issues downstream
- zip: Check that response is not None instead of checking truthiness of response
- instance: Updated make_request method to handle when we receive a 204 with no response
- decorators: Updated decorator to handle no response objects.
- tasks: Updated task parameter to use source task instead of dest task
- applications: Added tracking_id_map to update of applications
- applications: Updated line-length of log to conform with flake8
- applications: Updated application component to remove method logic and include it in the sync method. Also removed test
- zip: Fixed call to to_json from property to method call
- meta: Updated source and dest information to format host names to strings
- aqueduct: Update the output zip file name to be the default for errors as well as dump content
- users: Fixed logic around dry_run vs live logging to make it more clear to the user
- tasks: Fixed logic around dry_run vs live logging to make it more clear to the user
- roles: Fixed logic around dry_run vs live logging to make it more clear to the user
- plugins: Fixed logic around dry_run vs live logging to make it more clear to the user
- packages: Fixed logic around dry_run vs live logging to make it more clear to the user
- keystore: Fixed logic around dry_run vs live logging to make it more clear to the user
- groups: Fixed logic around dry_run vs live logging to make it more clear to the user
- dashboards: Fixed logic around dry_run vs live logging to make it more clear to the user
- assets: Fixed logic around dry_run vs live logging to make it more clear to the user
- dashboards: Updated dashboards imports, added scrubbing, and removed failing if report does not exist
- reports: Added a process_default_report and process_report methods to split out the logic of different report types and how we handle them
- reports: Updated the update_destination_report method to simply logic
- collector: Separated the collect method and a prettify_collection_results method
- aqueduct: Updated the signature of the collection method
- aqueduct: Added import for the new Collector class
- aqueduct: Fixed version comparison logic in init
- dashboards: Updated log string length for flake8 tests
- tasks: Added else logging statement when tasks are excluded
- tasks: Removed failed tasks logic in the sync method - This is legacy and no longer needed.
- tasks: Updated tasks component to update correctly any tracking-ids.
- reports: Updated reports to handle updating in a single method
- reports: Updated reports component to simpifly modification/updating of reports
- reports: Updated reports component to handle default reports differently. Verified that default reports are created so only updating fields displayed in them going forward.
- zip: Added standard zip output files like output.log and homework.txt
- decorators: Improved comments and docstrings for dump_content decorator
- zip: Updated write_to_disk method to return the save path in written
- instance: Removed log decorator for upload_plugin method. This is now handled in the plugin component class
- aqueduct: Fixed indentation of homework print out logic
- reports: Updated reports to use dictionary keys instead of legacy models
- instance: Fixing update_default_report API call in instance class
- workflows: updating call to update_workflow_stages_with_new_id to use the correct parameter name
- roles: Adding scrub on roles component to fix issues around syncing roles on destination.
- tasks: Updated the destination_plugin_dict property with new comments and better flow control logic
- dashboards: Improved error handling logic and logging
- components.base: Removed attrs import and reference in set_unneeded_keys_to_empty_dict method
- instance: Add check in get_pip_packages method in instance class
- base: Removed canonicalize method from base class
- reports: Updated reports to use get_field_by_Type method
- dashboards: Updated dashboards to use set keys to empty dict method
- base: Removed attrs from componentbase class
- exceptions: Updated GetComponentError exception
- exceptions: Updated UpdateComponent exception
- exceptions: Updated AddComponentError exception
- exceptions: Updated docstring in ComponentError exception
- exceptions: Updated docstring in ModelError exception
- exceptions: Updated docstring in UnsupportedSwimlaneVersion exception
- exceptions: Removed data model imports
- decorators: Removed ModelError exception from decorator
- workspaces: Updated sync_workspace method to use dictionary instead of data model
- workspaces: Removing data model import
- instance: Updated update_workspace method to use dictionary instead of data model
- instance: Updated add_workspace method to use dictionary instead of data model
- instance: Updated get_workspace method to use dictionary instead of data model
- instance: Updated get_workspaces method to use dictionary instead of data model
- instance: Removing attrs asdict import
- instance: Removing workspace data model import
- users: Updated sync_user method to use dictionary instead of data model
- users: Updated process_users method to use dictionary instead of data model
- users: Removed user data model import
- instance: Updated update_user method to use dictionary instead of data model
- instance: Updated add_user method to use dictionary instead of data model
- instance: Updated search_user method to use dictionary instead of data model
- instance: Updated get_user method to use dictionary instead of data model
- instance: Updated get_users method to use dictionary instead of data model
- instance: Removed User & UserLight data model import
- tasks: Removed merge defect
- reports: Updated line length in log
Feat
- zip: Added dry_run.log if dry_run is set to True in the output generated zip file
- zip: Adding metadata as part of the zip file output
- meta: Added new class called MetaCollector that will be used to collect metadata about the run time environment and parameters used to run aqueduct. This will be outputted to our zip file everytime it runs
- base: Added an internal property on the base class to keep track of which components were used for meta dump
- base: Added two new properties to base class to be used to determine if an error has occured and the content of that error so we can add it to the output zip file
- aqueduct: Added update_default_reports parameter and implemented in entry point and aqueduct
- aqueduct: Added new mirror_app_fields_on_destination parameter and remvoed the generic force_update_components parameter
- aqueduct: Added collect method on the Aqueduct class to assist with gathering related content based on a list of application names.
- collector: Added new collector class to gather related content from a given application name and optional instance (defaults to source).
- aqueduct: Added gather method on Aqueduct class to return a list of application names
- instance: Added get_application_workspaces method to support collecting data base on applications
- instance: Added get_tasks_by_application method to support collecting data base on applications
- workflows: Added logic to force update workflows if force_update_components is set to true
- reports: Added logic to force update reports if force_update_components is set to true
- dashboards: Added logic to continue if a report does not exist that is referenced on a dashboard.
- applications: Added logic to force update application fields if force_update_components is set to true
- zip: Updated zip to support generating random zip package names if one already exists so not to overwrite them
- base: Added base property force_update_components and set the default to False
- aqueduct: Added force_update_components to Aqueduct class to support direct updating of provided components on the destination.
- instance: Added new dump_content decorator to required methods in order to dump content without having to modify the components themselves
- decorators: Add NEW dump_content decorator to handle writing content to our in memory zip file.
- base: Added ZIP_FILE property that will contain our OutputZip class instance to be used by other classes to write dump content to
- aqueduct: Added new dump_content_path parameter to aqueduct instance. If a value is passed then we will dump all contents from API requests to a zip file in the provided directory
- instance: Added a new property to instance class to designate the type of instance the object is (source or destination)
- aqueduct: Added a close_and_write_zip atexit method to write a zip when ever aqueduct exits.
- aqueduct: Added import for our new zip class
- utils.zip: Added a new utility called OutputZip that will assist with creating and dumping a zip file of contents to disk
- plugins: Added check_for_compatibility method to warn and display when swimalne version is the conflict
- aqueduct: Adding version comparison check for swimlane version. Your source instance must be equal or less than the destination instance.
- aqueduct: Adding newline between components being synced
- users: Added homework list call for users component
- components.base: Added is_masked method in components base and assets component
- workflows: Replaced canonicalize method from base class with is_objects_different method in component base (more reliable)
- keystore: Added add_to_homework_list method call in users component
- keystore: Added add_to_homework_list method call in tasks component
- keystore: Added add_to_homework_list method call in plugins component
- keystore: Added add_to_homework_list method call in packages component
- keystore: Added add_to_homework_list method call in keystore component
- dashboards: adding add_to_homework_list call in dashboards component
- components.base: Adding is_objects_different method in components base class
- assets: Adding check_for_homework_assignment method in assets component
- base: Added add_to_homework_list method in base class as well as global property
- Add atexit call so that homework results are always returned
- workflows: Added update_workflow_stages_with_new_id method
- base: Added get_field_by_type base method
1.1.9 (2022-07-09)
Fix
- roles: Updated sync_role method to use dictionary instead of data model
- roles: Updated process_role method to use dictionary instead of data model
- roles: Removed Role data model import
- instance: Updated update_role method to use dictionary instead of data model
- instance: Updated add_role method to use dictionary instead of data model
- instance: Updated get_role_by_name method to use dictionary instead of data model
- instance: Updated get_role method to use dictionary instead of data model
- instance: Updated get_roles method to use dictionary instead of data model
- instance: Removed Role data mode import
- reports: Updated sync_report method to use dictionary instead of data model
- reports: Updated update_default_report method to use dictionary instead of data model
- reports: Updated update_destination_report method to use dictionary instead of data model
- reports: Removed Reports data model import
- instance: Updated update_default_report method to use dictionary instead of data model
- instance: Updated update_report method to use dictionary instead of data model
- instance: Updated add_report method to use dictionary instead of data model
- instance: Updated get_report method to use dictionary instead of data model
- instance: Updated get_reports method to use dictionary instead of data model
- instance: Updated get_default_report_by_application_id method to use dictionary instead of data model
- instance: Removed Report data model import
- plugins: Updated sync_plugin method to use dictionary instead of data model object
- instance: Updated get_plugin method to use dictionary instead of data model object
- instance: Updated get_plugins method to use dictionary instead of data model object
- instance: Updated plugin_dict to use dictionary instead of data model object
- instance: Removed Plugin and PluginLight data model imports
- tasks: Updated tasks for line-length issues
- packages: Updated sync_package method to use dictionary instead of data model
- packages: Updated install_wheels method to use dictionary instead of data model
- packages: Updated destination_packages method to use dictionary instead of data model
- packages: Removed import of Package data model
- instance: Updated install_package method to use dictionary instead of data model
- instance: Updated get_pip_packages method to use dictionary instead of data model
- instance: Removing Package from imports
- groups: Updated sync_group method to use dictionary instead of data model
- groups: Updated process_group method to use dictionary instead of data model
- groups: Updated get_destination_group method to use dictionary instead of data model
- groups: Removed Groups data model import
- instance: Updated update_group method to use dictionary instead of data model
- instance: Updated add_group method to use dictionary instead of data model
- instance: Updated get_group_by_id method to use dictionary instead of data model
- instance: Updated get_group_by_name method to use dictionary instead of data model
- instance: Updated get_groups method to use dictionary instead of data model
- instance: Removed Group data model import
- tasks: Update BULTIN_TASK_ACTION_TYPES property to include python3
- dashboards: Updated sync_dashboard method to use dict instead of data model
- dashboards: Updated get_destination_dashboard method to use dict instead of data model
- dashboards: Updated _process_reports method to use dict instead of data model
- dashboards: Removed Dashboard data model import in dashboard component
- instance: Updated add_dashboard method to use dict instead of data model
- instance: Updated update_dashboard method to use dict instead of data model
- instance: Updated get_dashboard method to use dict instead of data model
- instance: Updated get_dashboards method to use dict instead of data model
- instance: Updated dashboard_dict property to use dict instead of data model
- instance: Removed Dashboard data model import
- base: fix access of param in set_unneeded_keys_to_empty_dict method
- assets: Updated destination_assets to use dict instead of model
- Updated user data model
- Updated plugin data model
- tasks: Updated task component to fix error checking of tasks
- base: Fixed issue accessing keys
- Bumped patch version
- instance: Removed asset data model from update_asset method
- instance: Removed asset data model from add_asset method
- instance: Removed asset data model from get_asset method
- instance: Removed asset data model from get_assets method
- assets: Remove Asset data model import in instance class
- assets: Updates sync_asset method to use dictionary instead of data model
- assets: Updated destination_assets property for better testing
- assets: Remove data model import from component
- Tasks: Updated tasks component based on new tests
- Tasks: Updated sync method to use dictionary instead of data model
- Tasks: Updates sync_task to use dictionary instead of data model
- Tasks: Updated check_tasks_using_tracking_id method to use dict instead of data model
- Tasks: Updated update_task_plugin_ids method to use dictionary instead of data model
- Tasks: Adding get_plugin_name method
- Tasks: Adding get_action_type method
- Tasks: Adding update_package_descriptor_id method
- Tasks: Adding update_task_file_id method
- Tasks: Added update_task_image_id method
- Tasks: Update destination_plugin_dict to use dictionary
- Tasks: Adding AccessKeyError exception as import
- Tasks: Updating imports in tasks component
- instance: Removed model from update_task method
- instance: Removed model from add_task method
- instance: Removed model from get_task method
- instance: Removed model from get_tasks method
- instance: Removing import of AddComponentError in instance
- models: Removing Task and TaskLight models from instance imports
Feat
- exceptions: Adding new AccessKeyError exception
- Bumped minor version
1.1.8 (2022-07-06)
Fix
- task: Updated model properites in task
Feat
- dashboard: Updated error handling in dashboard model
1.1.7 (2022-07-06)
Fix
- Moved diff_template to base class
- base: Removed unneeded property
- applications: Updated dry_run checks with ComponentBase
- applications: Improved handling of adding and removing fields and layout
- applications: Improved logic in is_field_in_fields method
- applications: Moved updating of columns to its own method
Feat
- workspaces: Implemented ComponentBase
- workflows: Implemented ComponentBase
- users: Implemented ComponentBase
- tasks: Implemented ComponentBase
- roles: Implemented ComponentBase
- reports: Implemented ComponentBase
- plugins: Implemented ComponentBase class
- packages: Implemented ComponentBase class
- keystore: Implemented ComponentBase class
- groups: Implemented ComponentBase class
- dashboards: Implemented ComponentBase class
- assets: Implemented ComponentBase class
- applications: We now treat the source instance layout as the truth and it overwrites the destination layout.
- applications: Implemented ComponentBase inheritence
- components: Create base class for components
- Add a ComponentBase class to ensure derived classes have shared methods
1.1.6 (2022-06-30)
Feat
- Bumped patch version to 1.1.6
- tasks: Modified dest plugin dict to class property
- tasks: update_task_plugin_ids: Added check for built-in action types
- Converted get_destination_packages to class property
- Improved logging in packages component
- Added get_destination_dashboard method and improved logging
- Added new is_field_in_fields method
- Updated remove_fields docstrings and logging
- Updated add_fields method docstrings and logging
- Bumped patch version
Fix
- tasks: sync_task: Improved logging
- tasks: sync: improved logging
- roles: sync: Improved logging and docstring
- Updated logic for dry_run logging
- Improved logic around logging during dry_run in reports
- Updated logging in dashboards when completed with sync
- Modified destination_assets into class property
- Updated assets logging
- Removed redundant check in filter_out_field_from_layout
1.1.4 (2022-06-22)
Feat
- Bumping pydantic version
Fix
- Updated TaskLight data model
1.1.3 (2022-06-15)
Fix
- Updating patch version
1.1.2 (2022-06-15)
Feat
- Adding check for Swimlane dependency else raise exception
- Removing swimlane from dependencies
Fix
- Bump patch version
- Update dependency
1.1.1 (2022-06-14)
Fix
- Updating plugin model
- Updating plugin to support POP3 built-in asset
- Updating Asset data model to support built-in POP3 asset
- forgot to bump version
- Updating task output model to support calling other tasks AR-1936
- Updating workflow data model based on FCI UC
- Updating task data model based on FCI UC
- Updating report data model based on FCI UC
- Updating plugin data model based on FCI UC
- Updated handling of reportItems not being found
1.0.2 (2022-06-13)
Fix
- Updated ReportItems data model
- Bump patch version to 1.0.2
1.0.1 (2022-06-07)
Fix
- Ignoring safety check 48542 for jwt as it's part of Swimlane
- Adding measure attribute to ReportItems model
Feat
- Adding support for usage and html dashboard card items
- Bumped version to 1.0.1
1.0.0 (2022-05-26)
Feat
- Bumping version to 1.0.0
- Added support for color formatted logs for output
Fix
- Fixed typo in workspace component
- Updating Task action data model with new attributes
- Updated task model to support 10.4.3 tasks
- Updating documentation typos
0.5.0 (2022-05-20)
Fix
- Updating plugin data model
- Adding check to update task inputs and outputs using old tracking-ids
- Adding fix for tracking-ids missing in tasks and application ref fields
- Updated applications component to update trackingFieldId after creation
- Removed application_task_dict
- Checking task inputs and outputs values for strings
- Updated app components to ensure tracking-id is displayed in reference fields
- Moved workspace processing to its own method in app components
- Improved logic in remove_fields method in app components
- Improved logic in add_fields method in app components
- Updated app components to create template application
Feat
- Adding tracking_id_map to base class
- Bumped version to 0.5.0
- Added check to update tasks with correct tracking-id in app components
0.4.0 (2022-05-16)
Feat
- Bumped minor version
0.3.4 (2022-05-12)
Fix
- Updated packages log formatting
- Updated black to 120 line-length and fixed formatting
- Added lastFailedLogInAttemptAt attribute to user model
- Updated task model to support Action data model class
- Updated plugin model by moving attributes to not required
- Added logic to handle issue with wrong plugin IDs in tasks
- Fixed attribute eror when calling log method from exceptions
- Fixed bug in add_to_diff_log with log string format
- Updated logging string format in aqueduct class
Feat
- Implemented dashboard_dict for workspaces component
- Renamed live parameter to dry_run and update components
- Improved logging format for packages that cant be installed
- Implemented a get_formatted_diff_log method in base
- bumped patch version
- bump patch version
- Adding name to globals
0.3.2 (2022-05-09)
Feat
- bumped patch version
0.3.1 (2022-05-06)
Feat
- Simplified asset model
- Bumping patch version
- implemented new log method in order to capture logs more easily
- Updated DIFF_LOG to be accessible and return after run
- Adding name attribute to init
Fix
- Updated InputMapping model for 10.4.0 Support
- added new parameter to exception
- Updated plugin model to support Swimlane 10.4.0
- Removing handling of error and moved to instance class
- Added better logging for Plugins component
- Updated applications component logging of removing tracking field
- Updated get_roles to support Swimlane 10.4.0
- Added error catching when create tasks method
0.3.0 (2022-05-05)
Feat
- bumped verion to 0.3.0
- dev: Adding pyproject.toml for repo
- dev: adding pre-commit config for linting
Fix
- Changing ReportItems model required fields
- Moved logo to aqueduct class
- Updating import of logo in aqueduct
- updating test_models tests
- Removed meta class and moved attributes to init
0.2.2 (2022-05-03)
0.2.1 (2022-05-03)
Fix
- dev: Updated logger name reference in app component