From 85a48e060a0af89d60e9d000da701778ba788acd Mon Sep 17 00:00:00 2001 From: WWCoE CI admin Date: Wed, 20 Nov 2024 13:43:58 +0000 Subject: [PATCH] (release) v3.0.0 --- .../Cheatsheets/abx-plugin-arguments.md | 2 +- .../Cheatsheets/actions-plugin-arguments.md | 2 +- .../Cheatsheets/bsc-plugin-arguments.md | 2 +- .../Cheatsheets/cs-plugin-arguments.md | 2 +- .../Cheatsheets/polyglot-plugin-arguments.md | 2 +- .../Cheatsheets/ssh-plugin-arguments.md | 2 +- .../typescript-plugin-arguments.md | 2 +- .../Cheatsheets/vcd-ng-plugin-arguments.md | 2 +- .../Cheatsheets/vra-ng-plugin-arguments.md | 2 +- .../Cheatsheets/vrealize-plugin-arguments.md | 2 +- .../Cheatsheets/vrli-plugin-arguments.md | 2 +- .../Cheatsheets/vrops-plugin-arguments.md | 2 +- .../Cheatsheets/xml-plugin-arguments.md | 2 +- docs/versions/latest/Release.md | 133 +--- .../General/Goals/Vrealize Clean.md | 36 + .../Polyglot/General/New Project.md | 32 + .../Polyglot/General/Project Structure.md | 120 ++++ .../Polyglot/General/Troubleshooting.md | 1 + .../Archetypes/Polyglot/General/Usage.md | 15 + .../Components/Archetypes/Polyglot/README.md | 15 + .../typescript/Components/Actions.md | 103 +++ .../typescript/Components/Config.md | 152 +++++ .../typescript/Components/Policy.md | 328 ++++++++++ .../typescript/Components/Workflows.md | 613 ++++++++++++++++++ .../images/Canvas_Item_Complex_Workflow.png | Bin 0 -> 80978 bytes ...as_Item_Default_Error_Handler_Workflow.png | Bin 0 -> 52406 bytes .../Decision_Item_Canvas_Item_Workflow.png | Bin 0 -> 45495 bytes ...cheduled_Workflow_Canvas_Item_Workflow.png | Bin 0 -> 59018 bytes .../User_Interaction_Canvas_Item_Workflow.png | Bin 0 -> 65058 bytes .../Waiting_Timer_Canvas_Item_Workflow.png | Bin 0 -> 66565 bytes .../typescript/General/Core Concepts.md | 30 + .../typescript/General/Getting Started.md | 32 + .../typescript/General/Known Issues.md | 118 ++++ .../General/Testing/Code Coverage.md | 123 ++++ .../Testing/Examples/Dependecy Injection.md | 88 +++ .../Testing/Examples/Global-Classes.md | 52 ++ .../Testing/Examples/Native-Actions.md | 33 + .../General/Testing/Examples/RestHost.md | 51 ++ .../General/Testing/Getting Started.md | 85 +++ .../General/Testing/Jasmine Spies.md | 51 ++ .../General/Testing/Test Helpers.md | 13 + .../typescript/Operations/Building.md | 30 + .../typescript/Operations/Pushing.md | 30 + .../Archetypes/typescript/README.md | 24 + .../vRA 8.x/Components/Blueprints.md | 63 ++ .../vRA 8.x/Components/Content Policies.md | 200 ++++++ .../vRA 8.x/Components/Custom Resources.md | 17 + .../Archetypes/vRA 8.x/General/Content.md | 91 +++ .../vRA 8.x/General/Core Concepts.md | 72 ++ .../vRA 8.x/General/Getting Started.md | 130 ++++ .../vRA 8.x/General/Known Issues.md | 14 + .../Archetypes/vRA 8.x/Operations/Pulling.md | 19 + .../Archetypes/vRA 8.x/Operations/Pushing.md | 21 + .../Components/Archetypes/vRA 8.x/README.md | 32 + .../Components/vRA 8.x/README.md | 16 + .../Local/Common/Artifact Manager/README.md | 18 + .../Components/Local/Installer/.gitkeep | 0 .../Installer/Components/Install Workflow.md | 47 ++ .../Local/Installer/General/Core Concepts.md | 17 + .../Components/Local/Installer/README.md | 12 + .../v3.0.0/Components/Local/Maven/.gitkeep | 0 .../v3.0.0/Components/Local/Packages/.gitkeep | 0 .../v3.0.0/Components/Local/Types/.gitkeep | 0 .../Local/Typescript/polyglotpkg/.gitkeep | 0 .../Typescript/vro-scripting-api/.gitkeep | 0 .../Local/Typescript/vropkg/.gitkeep | 0 .../Local/Typescript/vropkg/README.md | 27 + .../vrotest/General/How Does It Work.md | 42 ++ .../Local/Typescript/vrotest/General/Usage.md | 87 +++ .../Local/Typescript/vrotest/README.md | 12 + .../vrotsc/Components/Test Helpers.md | 50 ++ .../Local/Typescript/vrotsc/General/Usage.md | 58 ++ .../Local/Typescript/vrotsc/README.md | 16 + docs/versions/v3.0.0/Components/README.md | 23 + .../v3.0.0/General/Cheatsheets/.gitkeep | 0 .../Cheatsheets/abx-plugin-arguments.md | 11 + .../Cheatsheets/actions-plugin-arguments.md | 11 + .../Cheatsheets/bsc-plugin-arguments.md | 11 + .../Cheatsheets/cs-plugin-arguments.md | 11 + .../Cheatsheets/polyglot-plugin-arguments.md | 11 + .../Cheatsheets/ssh-plugin-arguments.md | 11 + .../typescript-plugin-arguments.md | 11 + .../Cheatsheets/vcd-ng-plugin-arguments.md | 11 + .../Cheatsheets/vra-ng-plugin-arguments.md | 11 + .../Cheatsheets/vra-plugin-arguments.md | 11 + .../Cheatsheets/vrealize-plugin-arguments.md | 11 + .../Cheatsheets/vrli-plugin-arguments.md | 11 + .../Cheatsheets/vrops-plugin-arguments.md | 11 + .../Cheatsheets/xml-plugin-arguments.md | 11 + docs/versions/v3.0.0/General/Core Concepts.md | 23 + .../versions/v3.0.0/General/Examples/.gitkeep | 0 .../v3.0.0/General/Examples/README.md | 21 + docs/versions/v3.0.0/General/FAQ.md | 17 + .../v3.0.0/General/Getting Started.md | 19 + .../General/Getting Started/Prerequisites.md | 50 ++ .../Getting Started/Setting Up Artifactory.md | 107 +++ .../Setting Up Local Environment.md | 305 +++++++++ docs/versions/v3.0.0/General/Guides/.gitkeep | 0 docs/versions/v3.0.0/General/Installation.md | 24 + .../v3.0.0/General/Known Issues/.gitkeep | 0 .../v3.0.0/General/Use Cases/.gitkeep | 0 docs/versions/v3.0.0/README.md | 22 + docs/versions/v3.0.0/Release.md | 149 +++++ pom.xml | 2 +- typescript/npmconv/package-lock.json | 4 +- typescript/npmconv/package.json | 2 +- typescript/polyglotpkg/package-lock.json | 4 +- typescript/polyglotpkg/package.json | 2 +- .../vro-scripting-api/package-lock.json | 4 +- typescript/vro-scripting-api/package.json | 2 +- typescript/vropkg/package-lock.json | 4 +- typescript/vropkg/package.json | 2 +- typescript/vrotest/package-lock.json | 4 +- typescript/vrotest/package.json | 2 +- typescript/vrotsc/package-lock.json | 4 +- typescript/vrotsc/package.json | 2 +- vro-types/ecmascript/package.json | 2 +- vro-types/jasmine/package.json | 2 +- vro-types/node/package.json | 2 +- vro-types/o11n-core/package.json | 2 +- .../o11n-plugin-activedirectory/package.json | 2 +- vro-types/o11n-plugin-amqp/package.json | 2 +- vro-types/o11n-plugin-apic/package.json | 2 +- vro-types/o11n-plugin-aria/package.json | 2 +- vro-types/o11n-plugin-azure/package.json | 2 +- .../o11n-plugin-dynamictypes/package.json | 2 +- vro-types/o11n-plugin-mail/package.json | 2 +- vro-types/o11n-plugin-mqtt/package.json | 2 +- vro-types/o11n-plugin-net/package.json | 2 +- vro-types/o11n-plugin-nsx/package.json | 2 +- vro-types/o11n-plugin-powershell/package.json | 2 +- vro-types/o11n-plugin-rest/package.json | 2 +- vro-types/o11n-plugin-snmp/package.json | 2 +- vro-types/o11n-plugin-soap/package.json | 2 +- vro-types/o11n-plugin-sql/package.json | 2 +- vro-types/o11n-plugin-ssh/package.json | 2 +- vro-types/o11n-plugin-vapi/package.json | 2 +- vro-types/o11n-plugin-vc/package.json | 2 +- vro-types/o11n-plugin-vcloud/package.json | 2 +- vro-types/o11n-plugin-vco/package.json | 2 +- vro-types/o11n-plugin-xml/package.json | 2 +- vro-types/tslib/package.json | 2 +- vro-types/vrotsc-annotations/package.json | 2 +- 143 files changed, 4211 insertions(+), 190 deletions(-) create mode 100644 docs/versions/v3.0.0/Components/Archetypes/General/Goals/Vrealize Clean.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/New Project.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/Project Structure.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/Troubleshooting.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/Usage.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/Polyglot/README.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Actions.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Config.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Policy.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Workflows.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/Components/images/Canvas_Item_Complex_Workflow.png create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/Components/images/Canvas_Item_Default_Error_Handler_Workflow.png create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/Components/images/Decision_Item_Canvas_Item_Workflow.png create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/Components/images/Scheduled_Workflow_Canvas_Item_Workflow.png create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/Components/images/User_Interaction_Canvas_Item_Workflow.png create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/Components/images/Waiting_Timer_Canvas_Item_Workflow.png create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/General/Core Concepts.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/General/Getting Started.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/General/Known Issues.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Code Coverage.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/Dependecy Injection.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/Global-Classes.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/Native-Actions.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/RestHost.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Getting Started.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Jasmine Spies.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Test Helpers.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/Operations/Building.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/Operations/Pushing.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/typescript/README.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Components/Blueprints.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Components/Content Policies.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Components/Custom Resources.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Content.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Core Concepts.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Getting Started.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Known Issues.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Operations/Pulling.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Operations/Pushing.md create mode 100644 docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/README.md create mode 100644 docs/versions/v3.0.0/Components/Local/Common/Artifact Manager/Components/vRA 8.x/README.md create mode 100644 docs/versions/v3.0.0/Components/Local/Common/Artifact Manager/README.md create mode 100644 docs/versions/v3.0.0/Components/Local/Installer/.gitkeep create mode 100644 docs/versions/v3.0.0/Components/Local/Installer/Components/Install Workflow.md create mode 100644 docs/versions/v3.0.0/Components/Local/Installer/General/Core Concepts.md create mode 100644 docs/versions/v3.0.0/Components/Local/Installer/README.md create mode 100644 docs/versions/v3.0.0/Components/Local/Maven/.gitkeep create mode 100644 docs/versions/v3.0.0/Components/Local/Packages/.gitkeep create mode 100644 docs/versions/v3.0.0/Components/Local/Types/.gitkeep create mode 100644 docs/versions/v3.0.0/Components/Local/Typescript/polyglotpkg/.gitkeep create mode 100644 docs/versions/v3.0.0/Components/Local/Typescript/vro-scripting-api/.gitkeep create mode 100644 docs/versions/v3.0.0/Components/Local/Typescript/vropkg/.gitkeep create mode 100644 docs/versions/v3.0.0/Components/Local/Typescript/vropkg/README.md create mode 100644 docs/versions/v3.0.0/Components/Local/Typescript/vrotest/General/How Does It Work.md create mode 100644 docs/versions/v3.0.0/Components/Local/Typescript/vrotest/General/Usage.md create mode 100644 docs/versions/v3.0.0/Components/Local/Typescript/vrotest/README.md create mode 100644 docs/versions/v3.0.0/Components/Local/Typescript/vrotsc/Components/Test Helpers.md create mode 100644 docs/versions/v3.0.0/Components/Local/Typescript/vrotsc/General/Usage.md create mode 100644 docs/versions/v3.0.0/Components/Local/Typescript/vrotsc/README.md create mode 100644 docs/versions/v3.0.0/Components/README.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/.gitkeep create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/abx-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/actions-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/bsc-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/cs-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/polyglot-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/ssh-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/typescript-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/vcd-ng-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/vra-ng-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/vra-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/vrealize-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/vrli-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/vrops-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Cheatsheets/xml-plugin-arguments.md create mode 100644 docs/versions/v3.0.0/General/Core Concepts.md create mode 100644 docs/versions/v3.0.0/General/Examples/.gitkeep create mode 100644 docs/versions/v3.0.0/General/Examples/README.md create mode 100644 docs/versions/v3.0.0/General/FAQ.md create mode 100644 docs/versions/v3.0.0/General/Getting Started.md create mode 100644 docs/versions/v3.0.0/General/Getting Started/Prerequisites.md create mode 100644 docs/versions/v3.0.0/General/Getting Started/Setting Up Artifactory.md create mode 100644 docs/versions/v3.0.0/General/Getting Started/Setting Up Local Environment.md create mode 100644 docs/versions/v3.0.0/General/Guides/.gitkeep create mode 100644 docs/versions/v3.0.0/General/Installation.md create mode 100644 docs/versions/v3.0.0/General/Known Issues/.gitkeep create mode 100644 docs/versions/v3.0.0/General/Use Cases/.gitkeep create mode 100644 docs/versions/v3.0.0/README.md create mode 100644 docs/versions/v3.0.0/Release.md diff --git a/docs/versions/latest/General/Cheatsheets/abx-plugin-arguments.md b/docs/versions/latest/General/Cheatsheets/abx-plugin-arguments.md index c4ff113de..586b9094b 100644 --- a/docs/versions/latest/General/Cheatsheets/abx-plugin-arguments.md +++ b/docs/versions/latest/General/Cheatsheets/abx-plugin-arguments.md @@ -1,7 +1,7 @@ [ERROR] [ERROR] groupId: 'com.vmware.pscoe.maven.plugins' [ERROR] artifactId: 'abx-package-maven-plugin' -[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:abx-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:abx-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] version: '2.44.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:abx-package-maven-plugin:2.44.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:abx-package-maven-plugin:jar:2.44.1-SNAPSHOT [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. diff --git a/docs/versions/latest/General/Cheatsheets/actions-plugin-arguments.md b/docs/versions/latest/General/Cheatsheets/actions-plugin-arguments.md index fbc60bd43..a17d0943f 100644 --- a/docs/versions/latest/General/Cheatsheets/actions-plugin-arguments.md +++ b/docs/versions/latest/General/Cheatsheets/actions-plugin-arguments.md @@ -1,7 +1,7 @@ [ERROR] [ERROR] groupId: 'com.vmware.pscoe.maven.plugins' [ERROR] artifactId: 'o11n-actions-package-maven-plugin' -[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:o11n-actions-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:o11n-actions-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] version: '2.44.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:o11n-actions-package-maven-plugin:2.44.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:o11n-actions-package-maven-plugin:jar:2.44.1-SNAPSHOT [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. diff --git a/docs/versions/latest/General/Cheatsheets/bsc-plugin-arguments.md b/docs/versions/latest/General/Cheatsheets/bsc-plugin-arguments.md index fe6a03249..e5721a37d 100644 --- a/docs/versions/latest/General/Cheatsheets/bsc-plugin-arguments.md +++ b/docs/versions/latest/General/Cheatsheets/bsc-plugin-arguments.md @@ -1,7 +1,7 @@ [ERROR] [ERROR] groupId: 'com.vmware.pscoe.maven.plugins' [ERROR] artifactId: 'bsc-package-maven-plugin' -[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:bsc-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:bsc-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] version: '2.44.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:bsc-package-maven-plugin:2.44.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:bsc-package-maven-plugin:jar:2.44.1-SNAPSHOT [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. diff --git a/docs/versions/latest/General/Cheatsheets/cs-plugin-arguments.md b/docs/versions/latest/General/Cheatsheets/cs-plugin-arguments.md index ff53a5aa3..ca5f352dd 100644 --- a/docs/versions/latest/General/Cheatsheets/cs-plugin-arguments.md +++ b/docs/versions/latest/General/Cheatsheets/cs-plugin-arguments.md @@ -1,7 +1,7 @@ [ERROR] [ERROR] groupId: 'com.vmware.pscoe.maven.plugins' [ERROR] artifactId: 'cs-package-maven-plugin' -[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:cs-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:cs-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] version: '2.44.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:cs-package-maven-plugin:2.44.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:cs-package-maven-plugin:jar:2.44.1-SNAPSHOT [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. diff --git a/docs/versions/latest/General/Cheatsheets/polyglot-plugin-arguments.md b/docs/versions/latest/General/Cheatsheets/polyglot-plugin-arguments.md index dcfc39cd9..0c1fe81dd 100644 --- a/docs/versions/latest/General/Cheatsheets/polyglot-plugin-arguments.md +++ b/docs/versions/latest/General/Cheatsheets/polyglot-plugin-arguments.md @@ -1,7 +1,7 @@ [ERROR] [ERROR] groupId: 'com.vmware.pscoe.maven.plugins' [ERROR] artifactId: 'o11n-polyglot-package-maven-plugin' -[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:o11n-polyglot-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:o11n-polyglot-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] version: '2.44.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:o11n-polyglot-package-maven-plugin:2.44.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:o11n-polyglot-package-maven-plugin:jar:2.44.1-SNAPSHOT [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. diff --git a/docs/versions/latest/General/Cheatsheets/ssh-plugin-arguments.md b/docs/versions/latest/General/Cheatsheets/ssh-plugin-arguments.md index 9de0360bd..d2373d5c5 100644 --- a/docs/versions/latest/General/Cheatsheets/ssh-plugin-arguments.md +++ b/docs/versions/latest/General/Cheatsheets/ssh-plugin-arguments.md @@ -1,7 +1,7 @@ [ERROR] [ERROR] groupId: 'com.vmware.pscoe.maven.plugins' [ERROR] artifactId: 'ssh-maven-plugin' -[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:ssh-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:ssh-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] version: '2.44.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:ssh-maven-plugin:2.44.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:ssh-maven-plugin:jar:2.44.1-SNAPSHOT [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. diff --git a/docs/versions/latest/General/Cheatsheets/typescript-plugin-arguments.md b/docs/versions/latest/General/Cheatsheets/typescript-plugin-arguments.md index 7d7cb629f..0919e7d00 100644 --- a/docs/versions/latest/General/Cheatsheets/typescript-plugin-arguments.md +++ b/docs/versions/latest/General/Cheatsheets/typescript-plugin-arguments.md @@ -1,7 +1,7 @@ [ERROR] [ERROR] groupId: 'com.vmware.pscoe.maven.plugins' [ERROR] artifactId: 'o11n-typescript-package-maven-plugin' -[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:o11n-typescript-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:o11n-typescript-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] version: '2.44.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:o11n-typescript-package-maven-plugin:2.44.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:o11n-typescript-package-maven-plugin:jar:2.44.1-SNAPSHOT [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. diff --git a/docs/versions/latest/General/Cheatsheets/vcd-ng-plugin-arguments.md b/docs/versions/latest/General/Cheatsheets/vcd-ng-plugin-arguments.md index d9640e860..41ad3080d 100644 --- a/docs/versions/latest/General/Cheatsheets/vcd-ng-plugin-arguments.md +++ b/docs/versions/latest/General/Cheatsheets/vcd-ng-plugin-arguments.md @@ -1,7 +1,7 @@ [ERROR] [ERROR] groupId: 'com.vmware.pscoe.maven.plugins' [ERROR] artifactId: 'vcd-ng-package-maven-plugin' -[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vcd-ng-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vcd-ng-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] version: '2.44.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vcd-ng-package-maven-plugin:2.44.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vcd-ng-package-maven-plugin:jar:2.44.1-SNAPSHOT [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. diff --git a/docs/versions/latest/General/Cheatsheets/vra-ng-plugin-arguments.md b/docs/versions/latest/General/Cheatsheets/vra-ng-plugin-arguments.md index cf5cf1e01..88907816c 100644 --- a/docs/versions/latest/General/Cheatsheets/vra-ng-plugin-arguments.md +++ b/docs/versions/latest/General/Cheatsheets/vra-ng-plugin-arguments.md @@ -1,7 +1,7 @@ [ERROR] [ERROR] groupId: 'com.vmware.pscoe.maven.plugins' [ERROR] artifactId: 'vra-ng-package-maven-plugin' -[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vra-ng-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vra-ng-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] version: '2.44.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vra-ng-package-maven-plugin:2.44.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vra-ng-package-maven-plugin:jar:2.44.1-SNAPSHOT [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. diff --git a/docs/versions/latest/General/Cheatsheets/vrealize-plugin-arguments.md b/docs/versions/latest/General/Cheatsheets/vrealize-plugin-arguments.md index 212e00853..5615165c0 100644 --- a/docs/versions/latest/General/Cheatsheets/vrealize-plugin-arguments.md +++ b/docs/versions/latest/General/Cheatsheets/vrealize-plugin-arguments.md @@ -1,7 +1,7 @@ [ERROR] [ERROR] groupId: 'com.vmware.pscoe.maven.plugins' [ERROR] artifactId: 'vrealize-package-maven-plugin' -[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vrealize-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vrealize-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] version: '2.44.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vrealize-package-maven-plugin:2.44.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vrealize-package-maven-plugin:jar:2.44.1-SNAPSHOT [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. diff --git a/docs/versions/latest/General/Cheatsheets/vrli-plugin-arguments.md b/docs/versions/latest/General/Cheatsheets/vrli-plugin-arguments.md index b675c9642..0b58b5cab 100644 --- a/docs/versions/latest/General/Cheatsheets/vrli-plugin-arguments.md +++ b/docs/versions/latest/General/Cheatsheets/vrli-plugin-arguments.md @@ -1,7 +1,7 @@ [ERROR] [ERROR] groupId: 'com.vmware.pscoe.maven.plugins' [ERROR] artifactId: 'vrli-package-maven-plugin' -[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vrli-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vrli-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] version: '2.44.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vrli-package-maven-plugin:2.44.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vrli-package-maven-plugin:jar:2.44.1-SNAPSHOT [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. diff --git a/docs/versions/latest/General/Cheatsheets/vrops-plugin-arguments.md b/docs/versions/latest/General/Cheatsheets/vrops-plugin-arguments.md index c685f806e..108b6f651 100644 --- a/docs/versions/latest/General/Cheatsheets/vrops-plugin-arguments.md +++ b/docs/versions/latest/General/Cheatsheets/vrops-plugin-arguments.md @@ -1,7 +1,7 @@ [ERROR] [ERROR] groupId: 'com.vmware.pscoe.maven.plugins' [ERROR] artifactId: 'vrops-package-maven-plugin' -[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vrops-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vrops-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] version: '2.44.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vrops-package-maven-plugin:2.44.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vrops-package-maven-plugin:jar:2.44.1-SNAPSHOT [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. diff --git a/docs/versions/latest/General/Cheatsheets/xml-plugin-arguments.md b/docs/versions/latest/General/Cheatsheets/xml-plugin-arguments.md index b9e4017aa..fd7870b60 100644 --- a/docs/versions/latest/General/Cheatsheets/xml-plugin-arguments.md +++ b/docs/versions/latest/General/Cheatsheets/xml-plugin-arguments.md @@ -1,7 +1,7 @@ [ERROR] [ERROR] groupId: 'com.vmware.pscoe.maven.plugins' [ERROR] artifactId: 'o11n-xml-package-maven-plugin' -[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:o11n-xml-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:o11n-xml-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] version: '2.44.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:o11n-xml-package-maven-plugin:2.44.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:o11n-xml-package-maven-plugin:jar:2.44.1-SNAPSHOT [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. diff --git a/docs/versions/latest/Release.md b/docs/versions/latest/Release.md index b48a28592..e328b5945 100644 --- a/docs/versions/latest/Release.md +++ b/docs/versions/latest/Release.md @@ -10,83 +10,12 @@ [//]: # (Describe the breaking change AND explain how to resolve it) [//]: # (You can utilize internal links /e.g. link to the upgrade procedure, link to the improvement|deprecation that introduced this/) -### *`vrang.project.id` has been removed in favor of `vrang.project.name`* - -Moving forward, `vrang.project.id` will not be accepted as part of the configuration. Instead, use `vrang.project.name`. - -`project.name` is more flexible as it will automatically find out the `project.id`. - -### *`vrang.org.id` has been removed in favor of `vrang.org.name`* - -Moving forward, `vrang.org.id` will not be accepted as part of the configuration. Instead, use `vrang.org.name`. - -`org.name` is more flexible as it will automatically find out the `org.id`. - -### *Polyglot projects will not try to fix mistakes due to issues with the manifest* - -Before, the `polyglot.json` could be defined like this: - -```json5 -{ - "platform": { - "runtime": "nodejs", // Here, this makes sense only for `ABX` projects, but not `vro` ones, which this is, looking 5 rows down - "action": "auto", - "tags": [], - "entrypoint": "out/handler.handler" - }, - "vro": { - "module": "com.vmware.pscoe.templates.buildtoolsforvmwareariasamples", - "inputs": { - "limit": "number", - "vraEndpoint": "CompositeType(host:string,base:string):VraEndpointType" - }, - "outputType": "Array/string" - }, - "files": ["%out", "!**/package.json", "!**/polyglot.json", "!**/tsconfig.json"] -} -``` -That would result the build tools to compile this correctly and default to using `node:12`. - -Now, however, you have to define the `runtime` correctly as `node:12` if you want this to work. - -This applies for automatic fixes for `vro` and `abx` types. - -### *Policy Templates's `templateVersion` is now mandatory* - -`@PolicyTemplate` decorators now **must** specify a `templateVersion`. - -The possible options are `v1` and `v2` (you can also see this in the definitions). - -```ts -@PolicyTemplate({ - name: "Sample Policy", - path: "MyOrg/MyProject", - templateVersion: "v2", // This is now mandatory - variables: { /* ... */ }, - elements: { /* ... */} -}) -``` - ## Deprecations [//]: # (### *Deprecation*) [//]: # (Explain what is deprecated and suggest alternatives) -### *Deprecation of vRA 7 archetype* - -The vRA 7 Archetype and all related plugins/mojos/code are removed due to the fact that vRA 7 is Out Of Support. - -The suggested alternative is to use version 2.44.0 of the toolchain. That is the last version that supports vRA7 - -### *Deprecation of vRA 7 types* - -The `o11n-plugin-vcac` and `o11n-plugin-vcacafe` types are also removed. - -### *Deprecated Regional Content* - -The Regional content supported in previous versions of Build Tools for Aria has been removed. Unfortunately that part of the build tools never functioned the way we wanted it to, and managing the "infrastructure" tab in Assembler is no longer something we want to do as it contradicts the principles behind the `vra-ng` archetype. - -As an alternative, we suggest you use some sort of install workflow to manage them. +[//]: # (Features -> New Functionality) ## Features @@ -95,32 +24,10 @@ As an alternative, we suggest you use some sort of install workflow to manage th [//]: # (Optional But higlhy recommended Specify *NONE* if missing) [//]: # (#### Relevant Documentation:) -### *Added a health check script* - -To check if the dependencies are met, you can now run: - -```sh -curl -o- https://raw.githubusercontent.com/vmware/build-tools-for-vmware-aria/main/health.sh | bash -``` - -Works for Linux,Mac and Windows with Git Bash - [//]: # (Improvements -> Bugfixes/hotfixes or general improvements) - ## Improvements -### *Flexible unit tests setup* -It is now possible to configure how the unit tests are being bootstrapped and executed. -#### Previous Behavior -Unit tests were locked to a specific version of Jasmine. -#### New Behavior -There are two out-of-the-box options for test frameworks: Jasmine and Jest. -The default behavior will be fully backwards compatible. Optionally the user is able to specify which -framework should be used as well as its version or even completely override how the unit tests are being ran. -#### Relevant Documentation -More in-depth documentation is available in the [vrotest](./../../../typescript/vrotest/) component. - [//]: # (### *Improvement Name* ) [//]: # (Talk ONLY regarding the improvement) [//]: # (Optional But higlhy recommended) @@ -134,40 +41,4 @@ More in-depth documentation is available in the [vrotest](./../../../typescript/ ## Upgrade procedure -### *Polyglot projects using `nodejs` as a runtime for a `vro` project need to be migrated* - -1. Look for all of your polyglot projects made for `vro`. -2. Look for `nodejs` runtimes and change them to `node:12`. -3. Look for `powershell` runtimes and change them to `powercli:11-powershell-6.2` -4. Look for `python` runtimes and change them to `python:3.7` - -Note: - -You don't need to migrate projects if they are `abx` based. `nodejs` is the correct value for `abx` projects. - -### *Polyglot projects using vro runtimes for abx projects need to be migrated* - -1. Take a look at the documentation for the available runtimes -2. Correctly set the `vro` runtime you want to use instead of the `abx` -3. `nodejs`, `powershell` or `python` only - -### *Migrate PolicyTemplates* - -Search your projects that use `@PolicyTemplate` decorator. The `templateVersion` property is now required. Check on top for possible values - -### *Migrate away from `vrang.project.id`* - -1. Open your `settings.xml`. -2. Search for `vrang.project.id`. -3. If found, replace it with the name of the project as seen in Aria - -### *Migrate away from `vrang.org.id`* - -1. Open your `settings.xml`. -2. Search for `vrang.org.id`. -3. If found, replace it with the name of the organization as seen in Aria - -### *Modify your `environment.properties` files if in use (installer)* - -1. If you have `environment.properties` that rely on `vrang_project_id`, they should be modified to use the `vrang_project_name` -2. If you have `environment.properties` that rely on `vrang_org_id`, they should be modified to use the `vrang_org_name` +[//]: # (Explain in details if something needs to be done) diff --git a/docs/versions/v3.0.0/Components/Archetypes/General/Goals/Vrealize Clean.md b/docs/versions/v3.0.0/Components/Archetypes/General/Goals/Vrealize Clean.md new file mode 100644 index 000000000..e44d6aec2 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/General/Goals/Vrealize Clean.md @@ -0,0 +1,36 @@ +# Vrealize Clean + +`vrealize:clean` is a goal used to clean up archetype packages on a given environment. + +## Overview + +`vrealize:clean` gives us a lot of flexibility in what is going to be deleted. You can find more about the different options in the sections below. + +## Table Of Contents + +1. [Archetype Support for vrealize:clean](#archetype-support-for-vrealizeclean) +2. [Usage](#usage) + +### Archetype Support for vrealize:clean + +| Archetype | Supported | Comment | +|-----------|-----------|--------------------------------------------------------------------| +| vra | Yes | - | +| vro | Yes | - | +| vcd | Partial | It does not support dryRunning | +| abx | No | Not implemented | +| vrops | No | Not implemented | +| vra-ng | Partial | Does not support dryRunning and does not work for regional content | +| vrli | No | vRLI does not provide native package support | +| cs | No | Code Stream Services does not provide native support for packages | + +### Usage + +```bash +mvn vrealize:clean -DincludeDependencies=true -DcleanUpOldVersions=true -DcleanUpLastVersion=false -Ddryrun=true -P${PROFILE} +``` + +- includeDependencies - a flag depicting if dependencies should also be deleted +- cleanUpOldVersions - a flag depicting if old versions of the package (and dependencies in case of includeDependencies) should be deleted +- cleanUpLastVersion - a flag depicting if the latest version should also be deleted before importing +- dryrun - Dryrun or not diff --git a/docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/New Project.md b/docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/New Project.md new file mode 100644 index 000000000..ab4b5dea5 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/New Project.md @@ -0,0 +1,32 @@ +# New Project + +## Table Of Contents + +- [Generate A New Project](#generate-a-new-project) + +### Generate A New Project + +- Replace `archetypeVersion` with the latest toolchain version +- Specify `type` to be either `abx` (vRA ABX Actions) or `vro` (vRO Polyglot Actions). + +```bash +#vRO: +mvn archetype:generate \ + -DinteractiveMode=false \ + -DarchetypeGroupId=com.vmware.pscoe.polyglot.archetypes \ + -DarchetypeArtifactId=package-polyglot-archetype \ + -DarchetypeVersion={LATEST_VERSION} \ + -DgroupId=com.vmware.pscoe \ + -DartifactId=testvronew \ + -Dtype=vro + +#ABX: +mvn archetype:generate \ + -DinteractiveMode=false \ + -DarchetypeGroupId=com.vmware.pscoe.polyglot.archetypes \ + -DarchetypeArtifactId=package-polyglot-archetype \ + -DarchetypeVersion={LATEST_VERSION} \ + -DgroupId=com.vmware.pscoe \ + -DartifactId=testabxnew \ + -Dtype=abx +``` diff --git a/docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/Project Structure.md b/docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/Project Structure.md new file mode 100644 index 000000000..b90a4f27f --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/Project Structure.md @@ -0,0 +1,120 @@ +# Project Structure + +## Overview + +The polyglot archetype supports multiple actions in the src folder. Each has it's own structure depending on the type of the package. + +## Table Of Contents + +- [General](#general) +- [Templates](#templates) + - [NodeJS](#nodejs) + - [Python](#python) + - [Powershell](#powershell) + +### General + +- `polyglot.json` - marks a folder as a polyglot package. Contains information about the package. + - If the `platform.action` is set to `auto` the name of the folder will be used as the package name. + - If the `platform.protocolType` is set to one of possible values `'Ssl3' | 'Tls' | 'Tls11' | 'Tls12' | 'Tls13'` all external modules(Added through Import-Module in the code) will be downloaded using the selected encryption protcol, otherwise the system default is used. + +#### `polyglot.json` + +The `polyglot.json` file is used to define the package. It is a JSON file with the following properties: + +```json5 +{ + "platform": { + "action": "auto", // The name of the action, if set to auto, the folder name will be used, otherwise the value will be used + "entrypoint": "handler.handler", // The entrypoint for the action. First part is the file name, second part is the function name + "runtime": "python", // The runtime for the action. Check below for possible values + "tags": [], // Tags for the action... TBD + "memoryLimitMb": 64, // The memory limit for the action + "timeoutSec": 60, // The timeout for the action + "protocolType": "Tls12", // Use to download external modules using a specific protocol. Check below for possible values + } + // If VRO + "vro": { + "module": "${groupId}", + "inputs": { // These are the inputs and their type + "limit": "number", + "vraEndpoint": "CompositeType(host:string,base:string):VraEndpointType" + }, + "outputType": "Array/string" + }, + // If ABX + "abx": { + "inputs": { + "someKey": "someValue" + // ... + } + }, + "files": ["%out", "!**/package.json", "!**/polyglot.json", "!**/requirements.txt"] // Needed for the build, don't edit +} +``` + +##### `runtime` + +###### VRO + +- `node:12` +- `node:14` +- `node:18` +- `node:20` +- `powercli:11-powershell-6.2` +- `powercli:12-powershell-7.1` +- `powercli:12-powershell-7.4` +- `powercli:13-powershell-7.4` +- `powershell:7.4` +- `python:3.7` +- `python:3.10` + +###### ABX + +- `nodejs` +- `powershell` +- `python` + +##### `protocolType` + +- `Ssl3` +- `Tls` +- `Tls11` +- `Tls12` +- `Tls13` + +### Templates + +There are three templates: + +- src/template-nodejs ([NodeJs](#nodejs)) +- src/template-powershell ([Powershell](#powershell)) +- src/template-python ([Python](#python)) + +Note: you do not need to delete template folders. Any folder starting with `template-` is ignored. + +#### NodeJS + +- `handler.ts` - holds all the logic for the action +- `tsconfig.json` - used by typescript to compile the code during `mvn package`, since rootDirs and srcDirs are dynamic, there are placeholders in this file. **do not modify** + +> Dependencies +> +> NodeJS' dependencies are defined in the `package.json` file in the `dependencies` property. Specify only dependencies to your code, there are no mandatory dependencies as well as no default ones. + +#### Python + +- `handler.py` - holds all the logic for the action +- `requirements.txt` - holds dependency information e.g. requirements.txt: + + ```python + requests==2.23.0 + ``` + +> Dependencies +> +> These follow the standard python `requirements.txt` structure. No default or mandatory dependencies. [More Info](https://learnpython.com/blog/python-requirements-file/) + +#### Powershell + +- `handler.ps1` - holds all the logic for the action diff --git a/docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/Troubleshooting.md b/docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/Troubleshooting.md new file mode 100644 index 000000000..0a4a1971c --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/Troubleshooting.md @@ -0,0 +1 @@ +[//]: # (Finish with some troubleshooting tips, when any error are encountered and fixed for future issues) diff --git a/docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/Usage.md b/docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/Usage.md new file mode 100644 index 000000000..aec52d8ab --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/Polyglot/General/Usage.md @@ -0,0 +1,15 @@ +# Usage + +## Overview + +Polyglot archetype just like any other archetype utilizes the `vrealize:push` to package and deploy the artifacts. + +## Table Of Contents + +1. [Command](#command) + +### Command + +```bash +mvn clean package vrealize:push -Penvironment_profile +``` diff --git a/docs/versions/v3.0.0/Components/Archetypes/Polyglot/README.md b/docs/versions/v3.0.0/Components/Archetypes/Polyglot/README.md new file mode 100644 index 000000000..474fdd5b0 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/Polyglot/README.md @@ -0,0 +1,15 @@ +# Polyglot + +The polyglot archetype is an archetype that allows you to push "polyglot" actions to vRO and vRA (like powershell, python, nodejs). + +## Overview + +The polyglot archetype is used to push multiple of these actions at the same time in a single package. + +## Navigation + +- Getting Started + - [Project Structure](./General/Project%20Structure.md) + - [New Project](./General/New%20Project.md) +- [Usage](./General/Usage.md) +- [Troubleshooting](./General/Troubleshooting.md) diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Actions.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Actions.md new file mode 100644 index 000000000..dae3f433b --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Actions.md @@ -0,0 +1,103 @@ +# Actions + +vRO Actions, supported types, and how to use them inside the Typescript Archetype. + +## Overview + +vRO Actions can essentially be viewed as javascript modules that can be used inside workflows and other actions. This +is where classes, functions, objects, etc. are defined. + +## Table Of Contents + +1. [Pushing Actions](#pushing-actions) +2. [Action Parameters](#action-parameters) +3. [Action Return Type](#action-return-type) +4. [Examples](#examples) + +### Pushing Actions + +Actions are pushed when running `mvn clean package vrealize:push`. + +#### Limitations + +- Only actions that are under `PROJECT_ROOT/src` will be pushed to vRO. +- Only actions that end in `.js` and `.ts` will be pushed. +- Action name can contain only letters, numbers and the symbols "_" and "$". +- Action name cannot start with a number. + +### Action Parameters + +Action Parameters are **NOT** mandatory, but they will be taken into consideration if passed. + +JSDoc Parameters in vRO native actions are used when you want to define the parameter type. It will be taken into consideration, otherwise it will be Any. You must follow the way parameter types are defined in vRO. The argument name must match the regex: `^[a-zA-Z0-9_$]+$`. If it does not match, the parameter is ignored + +If the action is a typescript one, then typescript hints will be used instead. + +#### Action parameter description + +You can define descriptions per parameter by adding a `-`. + +Example: + +```javascript +/** + * @param {Any} arugment - This is the description + */ +``` + +#### Action parameters with properties + +You can define action parameters with properties like: + +```javascript +/** + * @param {Any} args + * @param {string} args.url + */ +(function (args) { + return args.url; +}) +``` + +In this example, the args.url will be ignored. + +[JSDoc documentation](https://jsdoc.app/tags-param.html#parameters-with-properties) + +#### Unsupported Parameters + +- Optional `@param {string} [optional=123]` or `@param {string=} optional` +- Union type `@param {(string|string[])} union` +- Repeated parameter `@param {...number} num` + +### Action Return Type + +Action return type is **NOT** mandatory, but it will be taken into consideration if passed. + +You can add `@return` or `@returns` to define the return type of the action, or alternatively if the action is typescript, +the typescript hints will be used. + +### Examples + +#### Native vRO Action + +```javascript +/** + * @param {Any} args + * @param {number} test + */ +(function (args, test, willBeAnyType) { + return args.url; +}); + +//...... + +// Will be transpiled to +return args.url; +``` + +In this example: + +- Param `args` of type Any +- Param `test` of type number +- Param `willBeAnyType` of type Any +- Return type: Any diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Config.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Config.md new file mode 100644 index 000000000..3770216ab --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Config.md @@ -0,0 +1,152 @@ +# Config elements + +vRO Configuration Elements and how to define them in a typescript project + +## Overview + +Configuration Elements are vRO constructs that allow you to store configuration data. Build Tools for VMware Aria supports a few ways of defining configuration elements as well as different types of values. + +## Table Of Contents + +- [Pushing Configuration Values](#pushing-configuration-values) +- [Secure Strings](#secure-strings) +- [CompositeTypes](#compositetypes) +- [Examples](#examples) + +### Pushing Configuration Values + +When doing `mvn clean package vrealize:push` you need to include some extra arguments if you want to push configuration values + +- `-Dvro.packageImportConfigurationAttributeValues=true` - Pushes all configuration values besides SecureStrings. +- `-Dvro.packageImportConfigSecureStringAttributeValues=true` - Pushes all Secure String configuration values. + +### Secure Strings + +Up to version 2.23.0 + +Secure strings in configuration elements are defined as shown below: + +```ts +import { Configuration } from "vrotsc-annotations"; + +@Configuration({ + name: "Test", + path: "PSCoE/Test", + attributes: { + password: + { + type: "SecureString", + value: "36BJ62U35V34T31R64I31H38Q39L2DH62K37Q63T61M2DK34O62R66K35U2DY38Y32S66Q35G2DQ63K66U64Z62X33Q37T31R34Q37W31Z66M31K", + description: "some number" + } + } +}) +export class Test { + password: SecureString; +} +``` + +When pushing them to vRO, you have to add `-Dvro.packageImportConfigSecureStringAttributeValues=true` to indicate to the Build Tools for VMware Aria that the SecureStrings should be imported as well. + +The value is encoded, and the best way to know what to set there would be to manually add it to vRO, then fetch it using the VSCode vRDT /vRealize Developer tools/ plugin by clicking on the extension in the sidebar and navigating to it. After you find it you will be able to extract the value from the retrieved `xml` and put it here. + +### CompositeTypes + +Currently, composite types are implemented for both vRO7 and vRO8. vRO8 is compatible with the old vRO7 way of importing composite types, so that format is used to import composite types in both systems. + +Composite types conform to these constraints: + +```ts +type PossibleAttributeValues = string | boolean | number; + +type AttributeValue = PossibleAttributeValues | PossibleAttributeValues[]; +``` + +Meaning that a Composite type can be a string, boolean, number or an array of each. + +### Examples + +Example Typescript Configuration Element: + +```ts +import { Configuration } from "vrotsc-annotations"; + +@Configuration({ + name: "GeneralConfig", + path: "PSCoE/MyProject", + attributes: { + composite: { + type: "CompositeType(field1:number,field2:boolean,field3:string,field4:Array/string):ITest", + value: { + field1: 1, + field2: true, + field3: '2222', + field4: ['test',"test2", `test3`] + }, + description: "A composite value with all the basics" + }, + numericAttr: { + type: "number", + value: 123, + description: "Represents a numeric variable" + }, + stringAttr: { + type: "string", + value: "Some String", + description: "A string variable" + }, + stringArray: { + type: "Array/string", + value: ["first", "second"], + description: "This is an array of strings" + }, + host: { + type: "REST:RESTHost", + description: "A RESTHost without any value ( placeholder )" + // Does not support values + }, + vm: { + type: "VC:VirtualMachine", + description: "A VirtualMachine without any value ( placeholder )" + // Does not support values + }, + password: { + type: "SecureString", + value: "36BJ62U35V34T31R64I31H38Q39L2DH62K37Q63T61M2DK34O62R66K35U2DY38Y32S66Q35G2DQ63K66U64Z62X33Q37T31R34Q37W31Z66M31K", + description: "some number" + } + } +}) +export class CompositeValuesTest { +} +``` + +Example YAML configuration element + +```yaml +name: CompositeConfigYaml +path: PSCoE/MyProject +attributes: + field1: + type: CompositeType(field1:number,field2:boolean,field3:string,field4:Array/string):ITest + description: "A composite type with primitives" + value: + field1: 1 + field2: true + field3: Test + field4: + - test1 + - test2 + - test3 + field2: + type: number + value: 123 + description: "Some number" + field3: + type: boolean + value: true + description: "Some boolean" + field4: + type: string + description: "Some string" +``` diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Policy.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Policy.md new file mode 100644 index 000000000..9ad70438d --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Policy.md @@ -0,0 +1,328 @@ +# Policies + +vRO Policies and how to define them in Aria Orchestrator + +## Overview + +Aria Orchestrator supports creating Policies with different elements and variables. + +## Table of Contents + +1. [Policy Template Versioning](#policy-template-versioning) +2. [Example Policy](#example-policy) +3. [Naming Convention](#naming-convention) +4. [Creating Variables in Policy](#creating-a-variable-in-policy) +5. [Creating Elements to a Policy](#creating-elements-to-a-policy) + +### Policy Template Versioning + +Policy template now has two versions for backward compatability. Template versions can be changed using the **templateVersion** attribute. Use v2 for full support of creating Policy with variables and multiple elements. + +**NOTE:** templateVersion attribute is optional. if not provided, templateVersion will be considered as v1 by default. + +```ts +import { PolicyTemplate } from "vrotsc-annotations"; + +@PolicyTemplate({ + name: "Sample Policy", + path: "MyOrg/MyProject", + description: "Some Description", + templateVersion: "v2", // or v1 +}) +``` + +### Example Policy + +A Example typescript policy with all posible configurations for Policy Template Version 2 (v2). + +#### Version 1 + +```ts +import { PolicyTemplate } from "vrotsc-annotations"; + +@PolicyTemplate({ + name: "Policy Template Amqp", + path: "MyOrg/MyProject", + type: "AMQP:Subscription", + templateVersion: "v1" +}) +export class PolicyTemplateAmqp { + onMessage(self: AMQPSubscription, event: any) { + System.log("onMessage"); + } +} +``` + +#### Version 2 + +```ts +import { PolicyTemplate } from "vrotsc-annotations"; + +@PolicyTemplate({ + name: "Sample Policy", + path: "MyOrg/MyProject", + description: "Some Description", + templateVersion: "v2", + variables: { + sample: { + type: "string", + value: "a string value with type mentioned", + description: "A variable created with type and description" + }, + config: { + type: "Properties", + configId: "8e2d3ba0-4e2c-4d4c-ad82-76de4967bf9f", + configKey: "props", + description: "A variable created with configuration binding" + }, + sample2: "a direct string value" + }, + elements: { + ElementOne: { + type: "AMQP:Subscription", + events: { + onMessage: "onMessage" + } + }, + ElementTwo: { + type: "SNMP:SnmpDevice", + events: { + OnTrap: { + workflowId: "56652d1b-f797-3e1c-a108-7db9ddfb1f42", + bindings: { + workflowInputOne: { + type: "string", + variable: "sample" + } + } + } + } + } + ElementThree: { + type: "Periodic Event", + schedule: { + periode: "every-minutes", + when: "13,15", + timezone: "Asia/Calcutta" + } + } + } +}) +``` + +### Naming Convention + +Naming convention for creating variables, elements with different types of elements and events. + +```ts +import { PolicyTemplate } from "vrotsc-annotations"; + +@PolicyTemplate({ + name: "Sample Policy", + path: "MyOrg/MyProject", + description: "Some Description", + templateVersion: "v2", // Policy Template Version: v1 or v2 + variables: { + sample: { // variable name + type: "string", // variable type + value: "a string value with type mentioned", // variable value + description: "A variable created with type and description" // variable description + }, + config: { // variable name + type: "Properties", // variable type + configId: "8e2d3ba0-4e2c-4d4c-ad82-76de4967bf9f", // configuration element ID + configKey: "props", // configuration element key + description: "A variable created with configuration binding" // variable description + }, + sample2: "a direct string value" // directly assiged string value to a variable + }, + elements: { + // Policy with script for event + ElementOne: { // Policy element name + type: "AMQP:Subscription", // policy element type + events: { // list of events for element + onMessage: "onMessage" // event : method name in class + } + }, + // Policy with workflow execution + ElementTwo: { // Policy element name + type: "SNMP:SnmpDevice", // Policy element type + events: { // list of events for element + OnTrap: { // event name + workflowId: "56652d1b-f797-3e1c-a108-7db9ddfb1f42", // workflow id to execute + bindings: { // workflow input bindings + workflowInputOne: { // workflow input name + type: "string", // workflow input type + variable: "sample" // variable name for workflow input + } + } + } + } + }, + // Policy with Periodic Event + ElementThree: { // Policy element name + type: "Periodic Event", // Policy element type + schedule: { // Periodic event schedule - mandatory for periodic event + periode: "every-minutes", // period of schedule + when: "13,15", // time for schedule, can be multiple + timezone: "Asia/Calcutta" // timezone for schedule + } + } + } +}) +``` + +### Creating a Variable in Policy + +Variables can be created in a policy by adding them under **variables** attribute as shown in the example. + +#### Creating a String variable + +String variables can be added by directly assigning values to the them. + +```ts +variables: { + sample2: "a direct string value" +} +``` + +#### Creating Variables with other data types + +Other data type variables can be added by providing the additional information to them. + +```ts +variables: { + sample: { + type: "boolean", + value: true, + description: "A variable created with type and description" + }, + sample2:{ + type: "number", + value: 2, + description: "A Numeric value" + } +} +``` + +#### Creating Variables with Configuration binding + +Variables can be binded to configurations by providing configuration ID and key. + +```ts +variables: { + config: { + type: "Properties", + configId: "8e2d3ba0-4e2c-4d4c-ad82-76de4967bf9f", + configKey: "props", + description: "A variable created with configuration binding" + } +} +``` + +**Note:** Configuration binding will be considered if both value and configuration ID are provided to a variable. + +### Creating Elements to a Policy + +Elements can be created in a policy by adding them under **elements** attribute as shown in example + +#### Supported Element types + +- AMQP:Subscription +- MQTT:Subscription +- SNMP:SnmpDevice +- SNMP:TrapHost +- Periodic Event + +#### Creating a Periodic Event Element with defined event Method + +Periodic Event element can be added by providing the list of events and schedules as below. Schedules are mandatory for Periodic Event type elements + +```ts +elements: { + PeriodicEvent: { + type: "Periodic Event", + events:{ + OnExecute: "onExecuteEvent" + }, + schedule: { + periode: "every-minutes", + when: "13,15", + timezone: "Asia/Calcutta" + } + } +} + +export class SamplePolicy { + onExecuteEvent(self: AMQPSubscription, event: any) { + let message = self.retrieveMessage(event); + System.log(`Received message ${message.bodyAsText}`); + } +} +``` + +#### Creating a Periodic Event Element with bound event Method + +Events can either be a method defined in the typescipt Policy or can be bound to a workflow. + +```ts +elements: { + PeriodicEvent: { + type: "Periodic Event", + events:{ + OnExecute: { + workflowId: "56652d1b-f797-3e1c-a108-7db9ddfb1f42", + bindings: { + workflowInputOne: { + type: "string", + variable: "sample" + } + } + } + }, + schedule: { + periode: "every-minutes", + when: "13,15", + timezone: "Asia/Calcutta" + } + } +} +``` + +From the above example, the workflow ID and its input bindings are provided. The inputs are binded to variables created in the policy. + +#### Creating Other Element Types + +Other supported element types can be as below. Events can be a method defined in the policy or can be binded to a workflow. + +```ts +elements: { + ElementOne: { + type: "AMQP:Subscription", + events: { + onMessage: "onMessage" + } + }, + ElementTwo: { + type: "SNMP:SnmpDevice", + events: { + OnTrap: { + workflowId: "56652d1b-f797-3e1c-a108-7db9ddfb1f42", + bindings: { + sourceGroup: { + type: "string", + variable: "sample" + } + } + } + } + } +} + +export class SamplePolicy { + onMessage(self: AMQPSubscription, event: any) { + let message = self.retrieveMessage(event); + System.log(`Received message ${message.bodyAsText}`); + } +} +``` diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Workflows.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Workflows.md new file mode 100644 index 000000000..a2b9ff842 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/Workflows.md @@ -0,0 +1,613 @@ +# Workflows + +How to use Aria Orchestrator Workflows and available decorators. + +## Overview + +You can use the method decorators to define various canvas items that will be included in the workflow. + +## Table of Contents + +1. [Argument Decorators](#argument-decorators) +2. [Available Method Decorators](#available-method-decorators) + - [`@DefaultErrorHandler`](#defaulterrorhandler) + - [`@WorkflowEndItem`](#workflowenditem) + - [`@Item`](#item) + - [`@WaitingTimerItem`](#waitingtimeritem) + - [`@DecisionItem`](#decisionitem) + - [`@RootItem`](#rootitem) + - [`@DefaultErrorHandler`](#defaulterrorhandler) + - [`@UserInteractionWorkflowItem`](#userinteractionworkflowitem) + - [`@WorkflowEndItem`](#workflowenditem) +3. [Example Workflow](#example-workflow) + +### Argument Decorators + +- `@In` - Used to bind an input to a function. +- `@Out` - Used to bind an output to a function. +- `@Err` - Used to bind an error to a function. + +### Available Method Decorators + +#### `@DefaultErrorHandler` + +This decorator is used to specify a default error handler. It can be bound either to a workflow item component or workflow end. + +#### Supported Parameters + +- `target` - target item to be attached to the default error handler, could be one of workflow item or workflow end. +- `exceptionVariable` - Exception variable that will hold the exception data when triggered. + +In order to bind inputs and outputs, you do it with the `@In` and `@Out` decorators. This is the same way we do it for other items. + +#### Example + +```ts +import { + Workflow, + RootItem, + In, + Out, + Err, + Item, + DefaultErrorHandler, + WorkflowEndItem, +} from "vrotsc-annotations"; + +@Workflow({ + name: "Default Error Handler Workflow", + path: "VMware/PSCoE", + description: + "Default error handler workflow with error handler redirecting to a workflow item", + attributes: { + errorMessage: { + type: "string", + }, + }, +}) +export class DefaultErrorHandlerWorkflow { + @RootItem({ target: "workflowEnd" }) + public initiateWorkflow() { + System.log("Initiating workflow execution"); + } + + @Item({ + target: "end", + }) + public goToEnd() { + // NOOP + } + + @Item({ + target: "workflowEnd", + }) + public processError(@In errorMessage: string) { + System.log( + `Processing error using custom task with message '${errorMessage}'` + ); + } + + @DefaultErrorHandler({ + target: "processError", + exceptionBinding: "errorMessage", + }) + public defaultErrorHandler(@Out @Err errorMessage: string) { + // NOOP + } + + @WorkflowEndItem({ + endMode: 0, + }) + public workflowEnd(@Out @Err errorMessage: string) { + System.log(`Terminating workflow with error ${errorMessage}`); + } +} +``` + +The example above would generate the following workflow. + +[![Default Error Handler Workflow](images/Canvas_Item_Default_Error_Handler_Workflow.png)](images/Canvas_Item_Default_Error_Handler_Workflow.png) + +#### `@WorkflowEndItem` + +The decorator is used to specify a custom workflow end item. + +##### Supported Parameters + +- `endMode` - End mode of the component, could be one of 0 or 1, where 0 is exit success and 1 is error. +- `exceptionVariable` - Exception variable that will hold the exception data when triggered. +- `businessStatus` - Value of the business status in the end component. + +#### `@Item` + +This decorator is used to specify a scriptable task. + +##### Supported Parameters + +- `target` - The name of the next in line item. If this is set to `end`, it will point to the end of the workflow. If this is set to `null`, it will point to the next item or if none, the end of the wf. If this is set to a string, but it does not exist in the workflow, it will point to the end of the wf. +- `exception` - **Not implemented yet** + +#### `@WaitingTimerItem` + +This decorator is used to specify a waiting timer. + +##### Supported Parameters + +- `target` - The name of the next in line item. Same as `@Item`. This decorator expects an `@In` parameter with the name of the waiting timer. If one isn't added, the workflow will not work. + +##### Example + +```ts +import { Workflow, In, WaitingTimerItem } from "vrotsc-annotations"; + +@Workflow({ + name: "Waiting Timer Workflow", + path: "VMware/PSCoE", + description: "Waiting timer will point with target to shouldGoHere", + attributes: { + waitingTimer: { + type: "Date", + }, + }, +}) +export class WaitingTimerWorkflow { + @WaitingTimerItem({ + target: "shouldGoHere", + }) + public waitForEvent(@In date: Date) { + // NOOP + } + + public shouldGoHere() { + // NOOP + } +} +``` + +The example above would generate the following workflow. + +[![Waiting Timer Workflow](images/Waiting_Timer_Canvas_Item_Workflow.png)](images/Waiting_Timer_Canvas_Item_Workflow.png) + +#### `@DecisionItem` + +This decorator is used to specify a decision item. + +##### Supported Parameters + +- `target` - The name of the next in line item. Same as `@Item`. +- `else` - The name of the next in line item if the decision is false. If this is set to `end`, it will point to the end of the workflow. If this is set to `null`, it will point to the next item or if none, the end of the wf. If this is set to a string, but it does not exist in the workflow, it will point to the end of the wf. + +##### Example + +```ts +import { Workflow, DecisionItem } from "vrotsc-annotations"; + +@Workflow({ + name: "Decision Item Workflow", + path: "VMware/PSCoE", + description: + "decisionElement is the root, it will point with else to end and target to shouldGoHere. shouldGoHere will point to end too", + attributes: { + waitingTimer: { + type: "Date", + }, + }, +}) +export class DecisionItemWorkflow { + @DecisionItem({ + target: "shouldGoHere", + else: "end", + }) + public decisionElement(waitingTimer: Date) { + return waitingTimer !== null; + } + + // This will point to end too, but no incoming + public shouldGoHere() { + // NOOP + } +} +``` + +The example above would generate the following workflow. + +[![Decision Item Workflow](images/Decision_Item_Canvas_Item_Workflow.png)](images/Decision_Item_Canvas_Item_Workflow.png) + +#### `@WorkflowItem` + +The decorator is used to specify a workflow item that will be called. + +##### Supported Parameters + +- `target` - The name of the next in line item. Same as `@Item`. +- `linkedItem` - The ID of the workflow to call. + +In order to bind inputs and outputs, you do it with the `@In` and `@Out` decorators. This is the same way we do it for other items. + +#### `@ScheduledWorkflowItem` + +The decorator is used to specify a scheduled workflow item that will be called. + +##### Supported Parameters + +- `target` - The name of the next in line item. Same as `@Item`. +- `linkedItem` - The ID of the workflow to schedule. + +In order to bind inputs and outputs, you do it with the `@In` and `@Out` decorators. This is the same way we do it for other items. + +##### Inputs + +Special input is needed for the ScheduledWorkflowItem. + +- `workflowScheduleDate` - {Date} is required. The name **must** be `workflowScheduleDate`. If this is missing an error is thrown. We don't check if the type is `Date` but Aria Orchestrator will complain. + +##### Outputs + +Special output is needed for the ScheduledWorkflowItem. + +- `scheduledTask` - {Task} is optional. If it's missing nothing will happen, if it's added, then the name **must** be `scheduledTask`. This is the task that is scheduled. + +##### Example + +```ts +import { + Workflow, + Out, + In, + Item, + RootItem, + ScheduledWorkflowItem, +} from "vrotsc-annotations"; + +@Workflow({ + name: "Scheduled Workflow", + path: "VMware/PSCoE", + description: "Scheduling another workflow and binding values correctly", + attributes: { + workflowScheduleDate: { + type: "Date", + }, + scheduledTask: { + type: "Task", + }, + }, +}) +export class ScheduledWorkflow { + @RootItem({ target: "prepareItems" }) + public start() { + System.log("Starting workflow"); + } + + @Item({ target: "scheduleOtherWf" }) + public prepareItems(@In @Out workflowScheduleDate: Date) { + workflowScheduleDate = System.getDate("1 minute from now", null); + } + + @ScheduledWorkflowItem({ + target: "printScheduledDetails", + linkedItem: "c2c9d5c4-468e-3cde-a64a-d1de50989214", + }) + public scheduleOtherWf( + @In first: number, + @In second: number, + @In workflowScheduleDate: Date, + @Out scheduledTask: Task + ) { + // NOOP + } + + @Item({ target: "end" }) + public printScheduledDetails(@In scheduledTask: Task) { + System.log(`Scheduled task: ${scheduledTask.id}, [${scheduledTask.state}]`); + } +} +``` + +The example above would generate the following workflow. + +[![Scheduled Workflow](images/Scheduled_Workflow_Canvas_Item_Workflow.png)](images/Scheduled_Workflow_Canvas_Item_Workflow.png) + +#### `@RootItem` + +This is a meta decorator. Add this to whichever function you want to be the entry point of the workflow. + +#### `@AsyncWorkflowItem` + +##### Supported Parameters + +- `@AsyncWorkflowItem({target: "", linkedItem: "" })` + - `target` - The name of the next in line item. + - `linkedItem` - The ID of the workflow to call + +##### Outputs + +Special output is needed for the AsyncWorkflowItem. + +- `wfToken` - {WorkflowToken} is required. The name **must** be `wfToken`. If this is missing an error is thrown. We don't check if the type is `WorkflowToken` but Aria Orchestrator will complain. + +##### Inputs + +No special inputs are needed for the AsyncWorkflowItem. + +#### `@ActionItem` + +##### Supported Parameters + +- `@ActionItem({target: "", scriptModule: "" })` + - `target` - The name of the next in line item. Same as `@Item`. + - `scriptModule` - The path of the action you want to call and the action name, separated by `/`. Example: `com.vmware.pscoe.library.general/echo`. + +In order to bind inputs and outputs, you do it with the `@In` and `@Out` decorators. This is the same way we do it for other items. + +##### Outputs + +There is a requirement to have only one output, and it will be of type `ActionResult`. + +#### `@UserInteractionWorkflowItem` + +The decorator is used to specify an user interaction workflow item. + +##### Supported Parameters + +- `target` - The name of the target to that user interaction workflow item is connected to. You can specify another user interaction workflow item as a target, thus chaining multiple user interaction components. + +In order to bind inputs and outputs, you do it with the `@In` and `@Out` decorators. + +##### Inputs + +If you need to specify certain access limitation for the user interaction component you can specify them with `@In` decorators. +Those inputs are optional. + +- `security_assignees` (type `Array/LdapUser`) - Any user from this array of users will be authorized to fill in this form. +- `security_assignee_groups` (type `Array/LdapGroup`) - Any user member of any of the groups will be authorized to fill in this form. +- `security_group` (type `LdapGroup`) - Any user member of this group will be authorized to fill in this form. +- `timeout_date` (type `Date`) - If not null, this input item will wait until date and will continue workflow execution. + +Note that those parameters should match also the input parameters of the workflow. + +##### Known Limitations for the Input Parameters + +The names of the variables in the additional method decorators should be as following: + +- `security_assignees` - for the security assignees parameter. +- `security_assignee_groups` - for the security assignee group parameter. +- `security_group` - for the security group parameter. +- `timeout_date` - for the timeout date parameter. + +##### Outputs + +You can specify multiple output variables that would hold the answer of the user interaction components. + +##### Example + +```ts +import { + Workflow, + In, + Item, + RootItem, + UserInteractionItem, +} from "vrotsc-annotations"; + +@Workflow({ + name: "User Interaction", + path: "VMware/PSCoE", + description: "Adding user interaction parameters", +}) +export class UserInteractionWorkflow { + + @RootItem({ target: "userInteraction1Enter", exception: "" }) + public start() { + System.log("Starting workflow"); + } + + @UserInteractionItem({ + target: "userInteraction2Enter", + }) + public userInteraction1Enter() { + System.log("User interaction component 1 activation"); + } + + @UserInteractionItem({ + target: "userInteractionExit", + }) + public userInteraction2Enter( + @In security_assignees: LdapUser[], + @In security_assignee_groups: LdapGroup[], + @In security_group: LdapGroup, + @In timeout_date?: Date, + @In userInteractionAnswer?: string + ) { + System.log("User interaction component 2 activation"); + } + + @Item({ target: "end" }) + public userInteractionExit(@In userInteractionAnswer: string) { + System.log("User Interaction exit"); + } +``` + +The example above would generate the following workflow. + +[![User Interaction Workflow](images/User_Interaction_Canvas_Item_Workflow.png)](images/User_Interaction_Canvas_Item_Workflow.png) + +### Example Workflow + +This example workflow combines all currently supported method decorators in a single workflow. + +```ts +/*- + * #%L + * vro.ts.workflows + * %% + * Copyright (C) 2024 TODO: Enter Organization name + * %% + * TODO: Define header text + * #L% + */ +import { + Workflow, + Out, + In, + Item, + RootItem, + DecisionItem, + WaitingTimerItem, + WorkflowItem, + WorkflowEndItem, + ScheduledWorkflowItem, +} from "vrotsc-annotations"; + +@Workflow({ + name: "Complex Workflow", + path: "VMware/PSCoE", + attributes: { + waitingTimer: { + type: "Date", + }, + counter: { + type: "number", + }, + first: { + type: "number", + }, + second: { + type: "number", + }, + result: { + type: "number", + }, + workflowScheduleDate: { + type: "Date", + }, + scheduledTask: { + type: "Task", + }, + errorMessage: { + type: "string", + }, + wfToken: { + type: "WorkflowToken", + }, + actionResult: { + type: "ActionResult", + }, + }, +}) +export class ComplexWorkflow { + @RootItem({ target: "execute" }) + public start() { + System.log("Starting workflow"); + } + + @Item({ target: "decisionItem" }) + public execute(@Out @In waitingTimer: Date, @Out @In counter: number): void { + if (!counter) { + counter = 0; + } + counter++; + if (counter < 2) { + const tt = Date.now() + 5 * 1000; + waitingTimer = new Date(tt); + } else { + waitingTimer = null; + } + System.log("Counter: " + counter); + System.log("Waiting Timer: " + waitingTimer); + } + + @DecisionItem({ target: "waitForEvent", else: "prepareItems" }) + public decisionItem(waitingTimer: Date) { + return waitingTimer !== null; + } + + @WaitingTimerItem({ target: "callAction" }) + public waitForEvent(@In waitingTimer: Date) { + // NOOP + } + + @ActionItem({ + target: "printActionResult", + scriptModule: "com.vmware.pscoe.library.ecmascript/Set", + }) + public callAction( + @In first: number, + @In second: number, + @Out actionResult: ActionResult + ) { + // NOOP + } + + @Item({ target: "callOtherWf" }) + public prepareItems( + @In @Out first: number, + @In @Out second: number, + @In @Out workflowScheduleDate: Date + ) { + first = 1; + second = 2; + workflowScheduleDate = System.getDate("1 minute from now", undefined); + } + + @WorkflowItem({ + target: "print", + linkedItem: "c2c9d5c4-468e-3cde-a64a-d1de50989214", + }) + public callOtherWf( + @In first: number, + @In second: number, + @Out result: number + ) { + // NOOP + } + + @Item({ target: "scheduleOtherWf" }) + public print(@In result: number) { + System.log("Result: " + result); + } + + @ScheduledWorkflowItem({ + target: "printScheduledDetails", + linkedItem: "9e4503db-cbaa-435a-9fad-144409c08df0", + }) + public scheduleOtherWf( + @In first: number, + @In second: number, + @In workflowScheduleDate: Date, + @Out scheduledTask: Task + ) { + // NOOP + } + + @Item({ target: "asyncCall" }) + public printScheduledDetails(@In scheduledTask: Task) { + System.log(`Scheduled task: ${scheduledTask.id}, [${scheduledTask.state}]`); + } + + @AsyncWorkflowItem({ + target: "printAsync", + linkedItem: "9e4503db-cbaa-435a-9fad-144409c08df0", + }) + public asyncCall( + @In first: number, + @In second: number, + @Out wfToken: WorkflowToken + ) { + // NOOP + } + + @Item({ target: "printActionResult" }) + public printAsync(@In wfToken: WorkflowToken) { + System.log(`Workflow token: ${wfToken.id} and state: ${wfToken.state}`); + } + + @Item({ target: "end" }) + public printActionResult(@In actionResult: ActionResult) { + System.log(`Action result: ${JSON.stringify(actionResult, null, 4)}`); + } +} +``` + +The example above would generate the following workflow. + +[![Complex Workflow](images/Canvas_Item_Complex_Workflow.png)](images/Canvas_Item_Complex_Workflow.png) diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/images/Canvas_Item_Complex_Workflow.png b/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/images/Canvas_Item_Complex_Workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..3aaefe103eb0ef816f5db9fd699d77086aa59082 GIT binary patch literal 80978 zcmbTe2UJs8_Xlbjb!^xM7?2_YB3-G{RjSgYmr#@zN&x93Bw$0N_e2N~r6bJ{AV4S< zdJ8oPU8RH&iX;RK^+o5KZ|3{2x7J(h!Gdt^y{FuB_SyTle|sOI9~kMLJ;i1EF6InbV-~(Tf^U-VP4NjkriAXzt<%Q#Q z0j9~_{kN|8u;bj>1Eb8e9UVn ze1`!Bhjhzg%#5&WJK^M=&M90-FaU$=z0Urt%J0#_H>3N8i;R0z)*1yXTlOJZgRatcbzf{_|J`z~p@CDt=JHtK z`{lvBs59Jh*Fk|?_QCtR%!-WSq{=iIh!RTcz&E^hT~e`zKwgo-=vjutSKZ$@o}oD zL$WqPDSiPeIsa{Q{n{(TyLz2zR%u<)Jz)im{DTz7t?g%L9LDXc&KV1pPskI z@SRhWfmWgqt+fHImOcbAK@LCcM+hOAo<5wgQl-YYzPGc z&OZfiH#(|wFBHO;HZZ<`(>tjd8Am6J4Q7wHUdCC zM>~D(8oH$3e?Eps4I-CohqKg=ZGLSgVJ1s>!HHmxlnL90fXimxC_z)M;m-QcFCs(c z2`|gr_sdchjqC9(VO#L(6_l{?*%=9ZptWR#>SAqN;cdt{e2VT%p7hiTdei+gPQ$7T zDlX4r)4XGx%uY0Ws8O(PA)bmhy1DwcZYSs&NbQ1S6&=X`?hmxE8=3+i!vK+fNW`mU zd-NSX>U)QMXf-J)JVo_Fl!o=-)&Wf!Aue+NpoULdVzyLpZ!8S!i88;^FKYenW2^32d>Ea z&{Y!|&<-HSOk7heSoZ%X;VjAm|tWMd(xAe<~s4|Z~=`e2t zsWv&V+IxT&J4twNFE4G2fKlhCRyl;f->9-H9vsILQwBw7-SZz7ruKvQD0Q~#N=}sq zbqh4mz>SphjZIgI+cI%@0dpl@Ih)uyV|+^};2G6?67KUEGmpL#odOt#9g-SXMXs?vlrc0X#B8nDRx)5u01n_F}M4U@p1&R-p28$K`_ zHWWcr-g3Q^Br2#bIF+~(lFgZPRCEZeS(_Dtv;rhFN#GL}#mT4a79zX86iD{Y+IrY= z`gAl_U_#cff~y%vz_X$0XycFc%KJObvUB7KG5ZCk4D6Exb2nGq)P$lwBiYcOR}SnH z3?9d)x1fUU`r%4&+V?XyPcow6i9xk^;}@A=!r&z7O?Y>l>*r2{$4 zBc!l+ia{N>>w>cG9C5|%c+MpiN>u(x1_(>ABG-W&jzU!~A%}~G0*l*qgG26Q@KkdmJ4sgl!gLdyxqwclc zWEw6>fVVnf{$17`unbk3dLeyvVpqs2YOz`?ylOc=ODsSGQP5r=8nKf>+pA%kF8jv; zjj{xd|0L?aZEDh2nG+`fPg+lBWTnOh#tcn;j1y{~)kM0~?He>5-enZvUS}Wy! z7Os=g1>YDtb)Zfq!;C-d-OyK8fEIxs6NYU|lw>}lb250Tb9;N(F1Oh~e*;bY$d++l zl40t-BMf_a)T?4QVyI7Xni(y?r6K3 zRg)uT?kJ4donIXgMm zWIrTB=9}+)r0eOqeEF5$0=e1nCGitS;re!0Igr%w>-hdG5%T21DE!a1LOwh>e%97z z?0mDeeHu2bKPd#8EoyA2Dyl8-qJ5-oVG-s}+xAup8}6jQXn9hyb6j}|j>omd72>7K z__H1xR2(xrcRoB)cg`x?tsCK%owCO)|Y9aI*RLRVbHPwn zmi9e=ATx#z8fs>OeK@1`J|ld0!shE{p$8H6ZW&Iaq8qsvk>2t2>~O7$KZ#LIWk!|! zXpgL(J?vaQShb=jMM;0YDcfIY)~LYTx<^|?A)Y!`$1$Gm_p0T3+d{da4b7aj{j8}4 zLzJo>Wp+ftM3NHCC2>^dTiqJeXR2O1d;pfS`_MbdT;5EG;!N%gi_c6vLlQXg9G`k2 z1WnnI@W$U#cZS6n&W<}g9^C?;<5Rm5u?*yS-VAVQGRw(u3P3kDuDLPfy$Wx9IX6{E z;%U-lyUc(R8Hbr3SR2~8o(isx4<_QK=!_79{eiIBb=)V8j3A?}^@cJVoKf>+TU|37 zM??3VR@)!QcA$!Tgo60C?B|vi#jWlGs+{q@^Pcw%x%`%(G$TvU(c!U!k5cPfQHAW9 zxY-R1Upv0+7+gpmQJQ2gZq*rO%Gr%4<{9`y z4^GYz)zjR}_p#?28@!`bE%LN;j6bLqP+hW0#&R*=65{^E>F`k+G_TDm72=}%8qH`; z3GLyM&8tI0BNv11^%>2=?z4>D*T{OBqdfC&TF z?mjk)mhTh!u8#f!iJz}#cz+L^$vaNy#ADeByGQK(%pi$!35kAeMaqeZL3SGBz-(yf zvZ#`+W`9Gp;q0H~4=#9syrOypPv2z5@xR}QM%h!tR7MNAKn?AegyQTntZf4@0h-6`_GH}QK zRs7~oboC0;gn4J;TsQvOne?;NoOGayy5x-S4wpy0t2e`6aJ+N*q+=St(!!Xe^wHLZ z^gxRG9EK+74A5Bmq3uzBQ{RZXVR#^VK-iw58H@6#@o)G_T|Uj$8QEBnlDrw>*2f>X zTfOV?(Ok)Av@uB$aQxi64Y ztCGP;+nYD@WMwQa& zv2js>wH$<-8nDY)5zgEaRz@p1=1|l+>iV(WIyi=-xf30}!7Zb&t`>&M-xxhWA-=td zI4}ZMCKWZ5rQ1Y~(nbx6cfM}(F)eqrY3<|XG-mMW`S`p9SnW3{g?PFPl%TQL72H0D!PHh$*iXTGavUbXyWak6HB(E;kjwF}E1Ehvo%9Xv!Y5OkNvy*MiW{#vG zSkSJtUTLL!v#oGli59mPfb=DAw}Y4u5fWTMd0HG?I|uvw>L)3Ug$8Jkk%rmgpdRbB z%D4b@ZL2LIEuTJ*Rf)+T0QZVZ-KU2K%*7g=^kmHrmlY_BKdkZpKzcw=Arf;_keF{L)1v#@g}F>q2$ z@JMTxVBz~S7sKU+00k1S8*KUXRoJgQI+`jn^|J0&2Tr(M8YMOs%;gwpzQ`v7fQ1XP zkihsi_3w$5VfE`wp1Y%egxVjg!;z zw9jV+j=zb~0V!|dTG4j5d3L;|^N9Ez6%c$Ho7J>TGprC1Rn9mu`YGhN0Fd)kBr<}^z6NA7L|xwOiGT>9Q%FT1QR z;KOUI!_aYc(Sw^o&x}(XC;|}_r(UzeB|S}aB}#ZGqH=YGGE}lN)AI$>ykZ&K$1W2( za87tHr6$Wn*15H%^ZRMS{;_J(q#(TmX0OaU>2q>OtsTg0sGh8!$!ZDx6g5}xY6E{S zzZAFo1nQ-=R@_#&pdxCla0qQ9%(Og8FvnQH^pgRj7H2C&@%cku7=g*2=uRkl!7gF(&%CAaEa{gXeXwU2Y ze##PMn=3PywU09|p-2WASCAZ%$y>oUH${kw#zl%}&|sVKjd)!UH)E4O#W6Trl4UYX zXn_uLPV@~9aC`A!H>oJE6y6io;G33yxP#FU$a_nF-_Pa&=lYGYs)y*tqDsFA_)Joc zrdyYYTTc2_fSipVCo(oaJsj@SjQ214RCioT;R@Pg?ry&r%fXSXz!r6gDd^*Ss4!rU z25>6v>JCu9)rtOMT{bjlHyjwmxw>tT?_?H1zO3R?p*jl7fxc$}gn)OAI$n;7XqyID zJoJNrLSmVn)Ea-a=H~J2%Z3&A2lfH3sZ-p;h9FCx*+h7pU(3=RB@Y|s_9TH zck^V7Cdl?;1%Z$wkNrwe#-n1lRdukdByPv@4^IQ2!+cy3*Q)Dq08um9s`=zQQS(V^ zy9~W{ zXJX^zL$Y6$y7K@=5jHh(w4fLOtpX!@X~qF6g#O=R3{fM2UXfJ2Kb*|AcI?s1A(3cD z-sk;!eul7VWlOPW{16#xp95nVAC=9p3F$e<%K@={pN`U=*9OdO z;b8VC#XiUDiEJd{jw8)~5aLM^eQJ`GTPRWfOz69Y8lw@X;bN;`oAE7_aD@CqlAYYb z&ZgvpAM6gQ*IW2+Sxx8R0kY}`oY(l$n%YL`RH3)6h3eF*a=%8b`SzBLhGrkxd7-oQ zjb(OCj3JiW=UEjC{Mi9t?)IWvd~Rab&LbhsNCwI~Ywc2sZzX39NmWR=ooU2-1E79m z;YpU_rd1KKg(Q)x>4llgTS43l(dGQk+E*rPxqjsly>&*JD2Y^=0F~tEzMufk?n}?h zR=-6?&54xIS?_kAw_`qS7fqL7GTi`^_USA{@uM;s&8FnBklQ%Qf~`{*-;Vd~?PU|X z%f5YpofK8Tn|HRYc+JhWlOa3#X#RGfhn^FCHKB%nu&ex`+!QBeLJ-xOC#uRPEyvRW9S_{=0W~8oiko(7PS*fkPl)i6lmyaX~u?WHx@pyAk`!IXcHu&W#y;N5IGwG$KZJW3Pf7dO5v#s}ziRP1I z`U<6&L;DW<*j;p*fl128GvynCbdxXZ&U>{hG$)&V3G`d^5Qb0Fn&61jeqY0M}UYl8@;pHa4LZhb(I zLjZ4Mx$?qh_VW`qF~B z`0&nGDFv9Mie_{l4W}&=LW6>HcXVum{E<-6i)b4^+nhBSKzLonhjGhDi5z9eX_aoJ zR}UV?_MPf#T2VoKZts_w&&SBSQT7?Mp0NPZ|NLC1gwUXG3$hxl#pM-6#Zk+J5*~TM)b} z2(!Qi#-aRHB#KXQUx%(q{QXHB2+F|7V>}78ixKEwW)TgOo7Gs(iCoR|f)cez% zQHfWnmSd^5^Fc1G*6nr~{?_j6EZJ!Uw>*F8V2!PFja)TC7VwzB^PrRGj@sQjf5wt_ z*PR@(JH`x0U-ffzBJOi_=vnoJgx?%54K9bgA#LztI`$Hkzt>0*@LzW#XSN*p^&d8C z)amYbGk&zANIKe;N})-?>}$Sf`OLknHuT!uZd+{xdQ6FGS#7BE%XpU6c&?_E!7%f2 z%yGT=iba+|>&^1GH>OqlZ9osH2U3Zo^3YsbGRqixZ$1QNjW-laxo??B_4b(_b+O&%(4 z9%9w2yd@a1q@b@Z=bi!80gQ1|qf(zPytyM)?#b`bWYFMP>OkCzV?pM};_q`LMM~QW zeFv@(2fv?KNy|&XUvdC(uQ4!zEEbpw^vJ7{-UY5JS2zvN0zsZs{8mu~{9bKm*{y3W z<%4aFci{&1SB$x+(;JmuYR;Gg4znK?GmgZ9;oGqGxq=2xWc&W;c3ht~OAnTayMBqE zka5lRJ+MciDM|Si&$lKw)ST%+WZBbK%M^iM6BB6bu%@EhTt!kkZ}RY097NAwIG@xA zVZ0lws;afaagc`kxuiW`#HoGho%DLt;Exj?BIKywSy&#*`W?*`t|4*q&pTEd+(&6z znT;44ebt86`;9&%**!S$+?kIbbGde{9#z|T#-U$Cjkl*h?#Id|)Cl`};*9l7h@ICZ zpAY2VJ2tpcgE85dOQUIPkYG`f7mkrUloh{(&0@YyW+;L1b3lES^;%Ho%E zO$LWoDi+zRdTv!3AFH+;{!!Rc)Z_0_v-J+#jF7Mq<@Z@rxn^|OjfiP0gf-V#xPQ>2 z23^nxZEL$svp7#IbK#2R;hjfDC`lAwiz9&wz6E;_J`q+6?fk(*&boWe8pJKChMn?c z&lJ2A=c?Iro3%Oldv7gXwiu5{FzOO-D#fKBdz5vw*TNRxWy!#YO$HAf5jM29qD3qT zXN3V&nWOE1r-Co|NkaH);sv7ku6?Q(JF>lch|VI;fH3&>d1N#X`;;e|skJ6~`1z3) z+rp`QgnrMI)qHEvOwgX+Y=aLtH@{u}+humxa~GZ#*Q`st?67jEdQdGiV6^Y{SHzb( zEa^;23YY~OvKP7%S4;*^8+RUT3;;_S;$nR4I4h=l_o9Q%Hu@6_&&_l@^y`e>*wQo>JY**1oDB7iUy>d*j}#Ymsa$PYx;W{CF<=AP zO3y4Q>GBQljQ~Lj6Z}Hv)GLLgKptsl4Rs}#rhG@Xv`lWZZ(}`5xkvC|HctuXtfT3v z+W`W0@!XPkSgS8jU91g$;nC*dGb61K@6paA{2GBrSGiv^W=^(U-W|1Od4hffUwQ%O zP(zYSVR3C3sss}Xi!~Iqil5y;Z;BVpFm4L~AdFYL_&3aEGOiXS9-;X4$@13e8{$$< z!|>)cFQg#X*Ve+(BOCE~>GBC5J$SW>$=7VW%hqNbv~$Yj61K>3v*lagFJ;3!jp5m8 zW(m5#)l~o&;2R3M4jR(h^UZYbXwpV>vnwra-DXJ}q+Bu6!Q$i;3we@Yo9-*Y251T` zpggEHU!@@p=_LCl{JTBIo}rX`hsaoRwV_4y&MpHA=l8FydlzjqxER=9P4sKpg#cb%C>KBF%6t}2(<1i`QLEJU;DJ18-nB!>$G8P) zwE}WN7dB|b6Qk|O*wA{_SJY6Me6BD%Det3c)lZ_Y^pk&-!Q&WX#V)t#`a?EkJ<1Aw z2o(MWXflR#rW^-L6z|ll-3=vGj0wzM@<|M|=aswt;4$>b+Ra&v#^^`Sw~JL-#&(s- zC|~h1uur_>`>@17FAs`JMNPCJxpUl=SA)Xq_Sk;-ewzUeatIy7u$1vaTB;R zJ~Gu_Q+uyr>Ty3^%EH3J{~OH#>^isQvc8J0sH$)n`kh6Tw^-?fJ0{pqd-GXgXAOTc zpg*~mB$BBnXklR?GX?F~5`K7CQyVcnAEXwR$ti!86;ggzx11zwyfJgFuga+B8|GLQ zaD-xstg3a%JvEg->oH?R}F#hARV0e~0R}^V4$Y1 z6$DD7j=G8ywt9+d1AJe)bIsm1f7{H@%$9p+(|Y_Qk>kyy04NGNLJBU&?^gddZDuB2 zhplE5nM!4;3P>kd`<}Ahvoj6^NFT`2t9c&trYl;aOHQsg_OYDKYvX&hvzLVyf5mtw zptH(5jVAgUjt{+z*37I^e7g<3>r1AF7&gg1M-qS2NlfLF#W!Q1^(4;P^I+iyaFJ9j#P)QcR)I%i(8EkVz=>Q(QjzBU<%Lp zQO|4jQwo1gWh;NHThlT0J#O8Nu_Wa;NeOWE$6qIC9ZzSH*04KX%=U@I^MW&;>pt|* zMZdw>ypDT`ocNKSuH&y3E?)kt`rpl+zpGbPBA^f(6JyXt%GEy2CFlO2d~iOHnUb<( zQr%QMxbgg#wfoQWLWGg?$jr7_PGs)QAqhaOgn;}%E&VRgDp}!V7BJtqJ-!=b_}{l--SH^?i_rOdgxvQ3FWEGI-~1UuWWD^q`t%6=cXhd> zI4)V8<7fW70tSOC=qCk6|MxD-35r%_CD;7jK+^GxtX!Ss6aQ**==L*`kPz*cyY!!d zbL+8&q{YX2^6zoz9X;ukn$-EPx#4DI9zdu*GE}{%Y32=mzQ2p6cvE=uC*m|y9PPf! z98_dEj_8iZcfv~}3ry!_G`Rk6FUD1d?KR=L(~!L&@RaaM5r6Whq5BAiU6prMHD8kv zEw*QhOw{vs3c%%Kxg@EynEbN##_jH4F5gwNw`mRizSdnDRa!bhUXp#tCaJzmY_j@r zZO?qJe@UQ?LeBqr@m6{kLc7V-WiIoGs8k5jQU5&htk^sm-uXmo&$XREPjPe*6=nim zhd0KmDEE`oAd`0q`e>zyeJB&z!o18})YTB<-ywC(O|6Avq3f}ZX_Vn2eLp{RL_McN z=$)bA;ez+?Z#>*{r)S`yI{n!yA}oblL3cKsX@(WpHZdZf4VdL*r-z%3vn^-l-l~xe{J_Nm#TGX@T9y3MPRlU}|Wg0oTAi(`lInc`qsN z?LLGixWF>@;|(YJt`jADXmS#6gV~c)vU_kfePXzvZ*kN=d{~PzQ4yJMq#pJ#U2t3%tDSYcu4G zd8Nb?7VdjQ8gJTJ4_VnJ+FhM+JDXe~>U&StIl^pMp;OoyHsdFXn7|bwQI%tt+qbtq(5lSR~QNB~Ha>D~E5))5Eaw5uqP=rpCaLS|fFrlbO1+ApS0b?jy{CU8;3 zzSf~r5gX)Z_A=0S%A#-$FP~T{ssN~lKaFMUVtn!!?U@prRVnIxGmj{^joah&NvdYs zb6rhFn%bF2X_FPZ8q-e*w+Icv-|P6e_6+!#x$bQ$$&`7;G`eM#{v8;S|s0lqP9>^ zQc^PA7e)nCxew+(vCQ*rW)_~|x%IxC%%|j^52dA|(u#5*_tk01iJeQMrG4DnT;W@| znXV}H4FSwPK73QQ{_)pm^($Y3{QdoVgLLA#T~}wrrs;fiOi8E2_3JmVmyAG5>%+6f zjQyp`{re3eYf=Y45)T$Rkqs3&isXg^^1&{@QqWRby~Z|V{aYI?-WRGF&f55$>Ec!{ zUq40C&K-O|w?8}F5adO_#jg=QnN=|yI5Sc0;cP^tznK`A%|mG?B5GSl>2JucEG-Z& z%Ip@e)Z5uynLpT{Iq=HS^)4^%xRUi^GzjZ6C3b?1=LS`UOd(rieX=L(14OR@3%yWM?fD0uOHz1;&bGUryh<#R+vVXEx2b}biX|TU~0WuzF2Y^T{1|B z<5dp4;hJX#TJmClE=GxAS!031Bc^SIry5ZE8%6%>-?TB)Wi}Xtdhqs!2ffJ*$tcAlYE{EIM`pLx?$v>MROS}~!j?X>zcP~#!1@$|hPTup z8%b*{$=HVlc%e(KnquExG~O~iwldumR*=hz=90|0#>#AD5B!!#OA)Gj8^cvlChb+* zf?^BPaI8L{$ni+2R&`<`VQ;79AS^@CHwWB1#oEzj)oq3Mjiw4E{ek^i9zL@qw6m#= zjfd1uO(o2bm8t6)uApW-vopQr>3#U!PA<7mRM8@^(y_(CKOmrQ{3CTF=ihNQ) zA;c)DcFL{mLWGrvit_gd#u;Ig7jvYXWDh!>xCVu_Gv&jkmcLC&)nqpggNn=gt!{GV zk$CED{bP>+fRtbz?ukKo^x=t{1W9@7pA$+TsMJAle@}|K+MW|;cUgvuR9i3SJE7U$ zJ0T`Qe|LfutpjqfCCr326*d4GvQO*h`y%B6nuf&`;^)_HA;xYxj2GBAnE_x%%VOo3 zErKP_3-2v7i|*yA4wtH)En@>TE}%BJnJdeQyOjqX4+@?#giStBIC~ z78`wSAbp|ls8GJ_#}xnZY7ZJ6bubBHF52yjXfUG~O*5V>EhihV0>;ybi1v zv0{N7RJ&S@V1D9ket7>rS=k3YUl{JgUU1gN)AQeJvu+LI0415MK)PEcf%6HXtl-$e zfCOdGDZeb56>FU66!%wE#FP5nr}`H#{u3?PV?%ibXx@OSaTcXh-uR$@#nD6kQgs_3 z+jacu#DZUO7@C5#^q(yTIiy`vvsFY`YF5oZ%Zmh-E2-;3s<}iY@Vr^nVtl{7{isSiZy=N zh6zTWLDo0`gQ?}%-CPrGyCS3PUPklYiti4tO=WA)=zabfVaaU&A@2+pQbA5t@ki|X zF-MBjUBjEdevXP_M~=Jh5?l6z;_)lcb~hm>**f{9{Clargo;G9&DYQ$pZOIM6N9CR z0qjN~qiki1{qIp4BP7)R-VPFFMNHHMd4lTe-TE?*OUldt4}PJ>R2&()_?ocs%zHLp zvqm73ak z#iF1qBmIMO0e%!D8>k&*wefpvp~gHwxXC`kCQw=94a1d`ww82~cU*t`IQh$+`6}Q0 zK#HnI6uR;eALn_^rMsY)VeN$hu$AuJ0%_R2TJH(BU}P{$IpAxnb2m5ovbgs#bS9q^(YJ4v4(rl119RgBN&O*o(jOLkvUVMebAIY zkmILJh0%0tPcMBn^%@q$z>=!-Q2LiBGzR-WaQYiKmtWO=uEDFl3a&K(&xS2@cd39) z&7B%sGDM#PLJ$<3?`wRZL_OMZfz4gK4|z8Fz4*3Km-~e7LQb6^SlcqhS`iKIAsHc8 zWxTh7MBig&-iVYk?w0zjD^enoxyST^hY)h$nCDidiC*~HWo7#rdR&T>Zl&;1Glp=Vt;d|8@b`H3 zvwHPevi&yH;G-_dY}d{;AZz06|L_f#)c6MtZvI{dPJTj~uqR9e%Jgqd1Sm94n|*9SOQ-@cMz~JLSCR zr#v{p02j~LPpn#=)ZvJIa>VA^#G5s^hs0pPn&+jc*bY`{Q=P6yNQ9rF9IK5O-I-|5>IZ$ z8N&YfAd6RZj&V<~?RQ=A))7~@%yJC=_IX%}Sy(~-Ux2$p5X6dqOh_M7-$C!jxv){M zOJ+6+dv|!lFSoV%yXwE(@SK{oF8YOMZ7vt;V_)HN5j`2bkA_OLWx=?WTVv2B>uzlQ zD?{h{()M5o)^E({g`@)As2m=rE~e>-AR^@vBVRN8W$;9X%6oALE9ahDAREx^x;$(> z7Fe!lBpn=Mm>10SR;qT%4-A5?vg-yERDTiyvS`wfp33f3@a8t8Y^Sq&C1H>(7?0); zTR598CF*Olb5oCF)uM~iBt)|Xd5Y`vssV5hTXv?_6i%#XsKX#1Ud`2#%XCj7lALj?=UwTEi9L~e-* z2IW64FS4Jts9UOjke53_b=TJq<7Izyus3tC!art591YqCC0qOAs73J=)PT@q5 z3f?JF_6@JOZasdJUs%|kCTb?6sHo^EP{L5~ot9v^$mJ$$gmOU6@BK_Vx##_(&o1A; zd~|CFqF(!n{gFH;QNTwor0v{XOHxqi2)NunB2ies$<|KrQHI&m3f zUjRd+z6H7?$7n{GY|RZJNhd%F1%{pKU+e;-U)u@m|8V`uYd^5|a5zYe1=CIkD8L z@(IL;MgCmNh1B@5JTeNg5>=0HSYaJw36o;chpb*LPn|kt@U=A8OarCfBP%V9hXxln z6JUdccf<;N*@DLqNP}Ht=*?C9;_-jPCWSlQZ`{?cEvs9GcTq%KT>qM3rb}>3EiMHJ z1S0KAEhZy1sjenv72V^Nx*`bqnbvaO~;40B? z)dg=)sibF)GaxK~E8L@a$Y-`az9vSmyy)m}9%}3mD zv7?v1fh@~yg*m0{Uj1NZv(oQbr|ghJmIal3m9oJ8*QREG$4lrTu$YR4>eYXw{o;%J ziZJzp;3766yFDtpq+H7D(#v2q_SatqL8uUgdK`I(OM|| z%J6S7cMp`XsnQ};I)?QR7-!Yd?kscGH1ND z=qwAVH7O>`!%8GEON?EOs<_OP-68wWh?WkqC*|qHr?4F5*PnWIaB-FPI7{WAC7~i? zRD$(@wypHVn=HT~#vb(M3hZSer>U6qwy=f8T_(NHXFXX*gUa%Q4c<~&`0no+ICNtC+k?nFw&lF?v)<9gc^O`(wRpQ! zP3ub*Wo1?%{dZv1Ikll>FL>41V&7!qHV%r9Wyx%(wAHKZbnAaS2^dF6N zUO-Hcs%nWYsiB&Co3238RqEd1IdbKUIWz%+hVO^@}AWkh`1`ddz9$ zA~jv{fwX!tCx4e^Wr0cMW{0${QH%+`=jEzsUOa?v_2KJ`F<~FdC*` zSePyZHN|uSR7YPD8Oq#@`>DkaMQ8FH>O&aHK$rV|-~xtJxU%s^tpg(3#?)@XzNsR$ zD!+IHXX#;EInV=1#l%BK@!&Ybs##URoBT=4+GAVk7E%vHDThE+lGmlh^fZ<#de_Xc zr{Dk0`Fuw4uIf(&Ydg%vo-+#YKyi5qVc(c{cX!*_ zJ3r29ma%jHxeDin%{Gmbfk0Jpe!d@%!1*15H|Hr&jeCsUcC}q`^8 zidPqBF)^=HX?jz0lp^i$UFYPuGs(ZHsy2zF9+Ct{Hd}anly?l$%Fc zh*o(ZMqA8VrJ*Zm<-XC&)8(I?Y*mhT4+5g*#<*rui%zI7iHS6ICl*5WHyvi$_&fGMUS3~xS=TgHrMRhrc~^{_MbbD zTkvmlUGoM%0<9+Ig&(f}Hgc*<2{~I&8i|`x$sxEau=W~zdhG+dW;-Dfkq4l6t!Gwq z!@s@gY&pRBHpC2`=G4jwz4|yKG&Lt@13x(e^b7|LTsl0o?!GGEkv(jnF0<(8k<7^4 z?bwLev;%owTjB5F|AiR11%4`mC(1tuEs(g$O7hC&L^NJMZ7fm7VmBP7M3K_o@Mkec z=!^kxO<}C6)oR*Ias+B~%`N*W;P`z9aE_AqShVY5`Eb?Qj^8gM9rvpWtD)=K$&sf& z$M(s4X-$Vu5bx6&L~S;nVo?RGFXvdJjgT~cYqIyPCahd#ZSn#$@!R|0>3(>Ypt6^OUQ4($#hwE9t%@RS3ZwETQg#Y96*rMA0UVWn_!Opj%`mICN| zlX{5J938bK>Dyxz27?jYwEbgiD)V7tw-wl?2CXb}Y_3KHoa-zfx?IH=(qXpDYDgQO z`<<0pEp-sL>$aL`C<>V)+{u8rKl4je6S%aMC=YnbHgoes8GT(~?Iy1F;4=wND1M6{ zm%v%Mt^5LxavZ-9V35K4#t~NZVN=e#Tq$(oVT59E*z|_x@VwneB}((#u-lv=Dk1!G z&A@q~7b2)Kj_BYlCwe_uE1Y%-^>_rHA*N)Z=c(Vz#tR)XE#lW$opu_|Q3!o69gGbL zo38dyuOG|PeTWEExhJKdadQrKxXPq$Vg6Grtx0s|hW1=cYOHJf+pfauKq>5Ow`D}B zk$3r+DxDppU0C~LWJ@Dsz0$ww$Gb9RjQRfiFJ#)rn~oy{tXVK(=H5@)y6(p0AB2z3u|}tW=)Yco=LSAZMgX0IS{1$YK{x3 zv7PLjfpDw{hZnN(ZO~CWg;Ct9*Ds<=B=4@QI5z%yT>;$g77qmN?~#nVn7bI7@ug<> zT9RELD53Y3oG2*PP!Y{65^hP2=>HL8B*)|nA+J0g~e0%4iXOT#*>{1*AyJ> z_p`F3Z+Wrt1=cK9?YiZxfwTI#<6_uY3p8-+7xEoBdZ0{koVQn-p65)8?!?M8N0yz` z0oWbKj+d=LsepSkw!=Tw%L7g2Yswm#G|7@WE1#8L+DGo%FEM3&czXGS9jb<6u`!kz zR0j-<==dyj>ASJto>Kke>|*duQH)|W`ihpg#%9)Igk|I6H5tDP^b z9hnS+ahm>gzusJU{?pAW25w{^@%^Ee>Z;#ASLDj1xS#Gr_5O% z(`xO+m4rE2fgRRAML4V6kl0WenU0N9BLjI@o&UJ~mrEyfVT;eaJ3d9W;t2Yt)-mAd z(VWi-%EqUV z^*c>J^lBlJ@sM-nM294&5ju@()a{;^6Q%Mx#chQC_$Tz@W;9NGOsjT1SxlZfQRo15 zZ`$D_c+LAY5pQg&6%L;Iy$EI(Evs+AOC;khLg_MV^r!ECGoh;4o zr9#*(2)G|CB&3_?;Bj%3n)YZ!e5=BN9A_XZRargVW=xKrCQxN=>i@)6#2{1nAL*9X zYu|LK><}AY|5_6~4){k1Dn;^`@O%y|Y8b+7b0GArS3BTKlv1pILO737;mTrjK8X1P z>eTvs2j9Hul}|4LmH0UM6u<*9S6A1Hikr8L9J!>be@f1iYh4MjsJT&vsrdp+doP!r z>E}5yz$aRMCEwqd3dPA6`EPZ{l#9D|=ATSae*CI>kznlLP5d0!%sNV-b=*h~A$%Fp z9Sy+Qd$nG&{V5JYihCzx zRZs*(l-@y+A_&rZK!MPEPpFCtQbf8CKEi8-7+!>cd-7A zX&PCPUvYfgYvy^`g3w?=l(;Ti+Due8RIhxxqXjrq7Aj9{oUbjPn@jOIQsjoo zDLdwXe`=F@y2I^97XpESJzDtcRi&+i5V@f&$Dxa^b{}w^e#<$BA9_|EHfy}^k6Xr) zqZP8Qe-w|L;nqca|ES(hzOwB5!BXB43G8n;1>m!E{Z`({K#RVz`F_(9tW%takykrK zTxy|TzrdiI;N$}TC*$IP5e|b|c#eg`5I1ivb%91DE@aJ;N-ZQ@M0|rk(&(eTwvDk= zFRIT6--Z3&);&!>$%V%$SPK%9Y{n=u#f7e!OY|7UR1vqiy0eDObS? zN~Av8|$IIz&$C>h|+J1=WX18dcMW&vMTn7UJTAk?bv5vA9~C$GH06c1xi6QS|Wb8{D_nXk^`f zEXgCRRUZj*i!3kG)6*GgUAYhyqFNj@RM7KGDC~>0o|_u>S#E74TWy7kI5i`8ahXf8 zn1o$ga(7tWb!bqRtN&QfDPNR&>DLh{>eOZf zK3C~boKDMev8-u|vZf_223<$?nd{1=ES4)Jw&K}wo;5}If0rbHlL=!{>$gDcl&f9BD`D(^Ud78P@|dPfj% z{I{vjRPDVo$FNm*xXDs(YG|Q!-F9?kE@W1wlO z$!YovplVNG@UqN+ZdaVZt=>HO?699@jLU1giV^$x5rH3f zpZ}YTE!=TW-frIe5od>uZR6tRB31s93rEP!?G(=4S(f0ITN$VEdzer(!9mn3j2n~K z#>UQH619x3>#xbTAN6@dWB^C0Rp4DY%Aln!MAoG66@&Ww#`{k{9yx3?vc+_j({Uva z?U+jfB5pNEZH(n5&*;o?Xv?VwKTNFbiZv2rs%#IU?2Bl|;6I(y`V8+f3BO1T={cg9 zcz(96z4ZKwd!{Oik3FYLCeXmaJ!1nMN_kg=C*!xKYk|kY*Y3Y*n4iCR-Hg? z{<@ZtB8;J|smL_0_J9uoApK2~hBAf94YXVKTN&K5gzhmke>&ct98mj9eY3bOj>!{M zd}}AF6LcL!>&W4$~{hQw`QS7KhDmawB-A7U-8gs5!%G&e}Vdvipsj zF~v+vz;fsCaK)Cow&oH@O0KIhn0jr10dz(ec)0Fa770~8acL1{qrS^MMi#Cub-l2ouXVJWNRlVpt6Y$cgU)XPjw6!9 zuv$+Qy(b1tUh7nV-{|`sU$3KUp^%6vPt2o7GF%PaH8=Bb#VhxXH~C7_eU=K&qHLq> zPR>d!XB~Kqw&65i(G>Gt4MbzwQ*)&a7Z|v17Iyh}Q#id=V+*cdo6A5;er(p;2BeEIl!!>vi5F! ze|C|sw@-=ufV^F-`oR9fdv}S6a{1oYm}#{^Q8v0e6PKexx?k9VBsTK`BCK1UFkUGH zX)upVnKwlLJ{}q{o(DVO$JR?o*QB#XWrsgHR5pB@sG9|qLq9ET*$mJ~^Pu>o&>S;? z-B7$4u~5ygd)mPG{5Csn_h*FBDf2Y*Goe)CTs9_#@~`Y^k80 z(U(Kh-ZH81hFwPs7DMU1AKu-rVp&sEYv1WwlMW65vW5RKgxK3z+|8vR#n-Ts87{nt zs0!k;QIMkXx_!;TW-zGlIr}vSgTsr6t*0nuDZe?(;_uVleCvFbE7!LQJ<6`-s4+!L z>vVMRoG%I3tf+gh!%WitY`XAYo3Qxw(inCNI1K9{>E0PV&}@*hmT| z(x|wz=_c1LVvz~%fq|yB;ja11tMdPFlKDy|xTC)MDOX&GjrG}NQ6tPU_!#iD4j`p+ z=9Ela61_;-h4FRinuvLgyM`hm6dWTqZ32uQEQ*3?ox-< zuu3WsJ*_6!PWF_|y20N0A%6CI+Tgt25X1|8sNZ1lwx|01@Re1kv{UA={DZt?e_Y9N z9y+M1(IEaQ0#^T3GfcX9=Z#`8DLvAdI{8!}&)v>(F3hclhX;0v75SB1V&mQ}JChG8bsAzQX`+pi z%NJ$|6UCqP-#tO@_tV*_Epu4>eBV{RA79N|bLOY-&-ef6vsi6uvqPC{ccy&lRYtU= zF?QLMx46=4btM%eAdrr?1E?8r!1#xs)u&OVW44gs#ga0rYJEK8nbx(p*Q5mL-5E*$l~flj>RmB%dYqOdX<`LM`-46Qe^b<+OTC}PTbxXk=f z;qII8%fc8=O?2ME*8t~F<%?b5_;WQrvQf+zo|Cz;v}#zXy885-mmKcz2MCrDOX8W* zSvY|;DC=YHP!i)M?#JA#aqUzC^*3agcK55IOXeqM{G&sAj4Fv1%}J{L9_mS4nn_+O zdUkg0kI`cPv_KD!d2~7+>2~mBl2ibvjRdAjMi3)?X*`#NrZ&Yhi`C`D!Z z9W<`HhCF>4Z?At|N0n@4{^6Cs%zh-$P*-eNDV9x-+=h#E(xM~m<&^eL_}j;+kwL9$m+TYcTPJ}I2qm7VM5sB2ql^+MN>OO5H9tfBTz?y~mRpIJB0)f0^( zh*SGFA6o5%KM*i7O06oFc)TZ

DKnDr>`e6}i&Y6N8%Z^`F|bBj>UI>Di7PgEf4@ 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

7Ksec(%A*`!J${cL>?&~Hf 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𝔑79mzIT#K_W(^fp5|cnX)u5p`I+&L-(B-} zz;1OAeVhtEZBuU7xy!#&0bK=pUg~xYZG1Z`i)={oOIPXR`UPnk=o8C)O51CxX8gxX3_VRq#9_J3-E zedf_ko*5>3I?2>yGb{`C5ia}}+m_?mf0_56IO zQNUMuP~Zb5aZ`lf^3njeX+(1=jx&>{KfTHINYowKoze=tajuKk=pWC~6=csRHF0#J z33Wa6XkcR`E&+*g?<+;Sfat)P~L}t{aHEwu13Nbue5NIel!w!*T zfk<>G1&GXZC8OKs1=gK)mz&0`LX>MX*Js}(sv9k?r`_n?;s4a-8?9Ok>zyWxO}6Pu zAZ&Zbn-1VF8fCwB6<1iDAOtstD%g~JEibE^|AMLYd^XfyR{|GPZRka&Ja5r7e*@(O z%fW%{bQ@hgQ}-M>ZkJPGgY?v-SM%I(H9UWgKO{$6rqNbKU!?($@!K7J6X2D|j~Nx#K|H z@*lX-#a|F39tHDnBS|(lO_(#01wujAxMBFYu(GkNcO=^FG_pW4m)p-2-S91;tt@l` zUNE1-&JAq`ObMSEkfDKY_0T~hFN{`{|MOC)^wM#tT>O>{l?#|HM7ipXmiOj%YMu|a zQT8EsM72AlCD0u@Yg$#UF$2DChvO>F+}Yz_)K%|Ux=v&s8|iyNsl^y0e#Kf0t#zD z3}dNnX$L3dKcT14k@uD!ZqQN(JhGB5O#fME^jXOcg>D4 z{^Bes|GW#zcJy(_evltYd0<3}rMbo}1eW(?D^{YBW4g?$0rjjasOHY4B0`liPRz*e z)m7VnDv{CM&^3apj_U|9=Xy#mO z_JVwT#&GE=A%hqy$iH6JG#6UT@EvPlgca5sRUMD1IFdq{ra0~cC8}H}8_y%=vLd}` z`w>$X(Xg&ZC2dJA1buA-ttBU?k(Ny;hx1EzWuYwt>hsSi#tiG7;qe{LdA_wYw}ya6 zSzX~-_^O7UhU4VD>ONΜ&Sufp~sMKCESqR}eWFf%;fnz!e{ks1!$_?q)d%8DK(T z0HOTnGhe3&s3NpPod}PW%@O9|aXwa;{TRY&-vQrI6Of1(0^@{>m4-0ZCdbWT4WaQ_ z45@hr>-qk<3r6LKQbMevU^;Grby-FRp$%^I3yR3|W-rx}VDE<Ic?je_T)v`YF3D#SIiczqdzwe{JHAAI_`lVali5(mWO7YIJ z_Niu%FYSYBq>i9hqMY_(mXBwD7jtJ&BrDbDZ`--O0A`Q zLo}rewHODi_4(wFD3?}?p7T8;8Wb-9sgJ&#Z+4d8#>Z+Y6l2ib`}-GRQ?X>YE5eUcXZ+mwpWCtS_PovxoLhKfxNBsh$t;bIMYxW>*m zgIjTbFZrp1EWgxtI@|1q>uPS*4=cX-mxf~%vjS>}!oTyr3N~srN~Abnj_b$_wiqz| zv*Qy~hdZA~Uk`t;{L9)FopUs72d?8`_A3aIgw;IIi6y^P`>Jk%r9^(yXI9y849Yxa zCLKgL8?LWDash)6Y}Mu~;GpT#rVDK2Az_H3pBeO6Cto~V#Oci$V(@P&`SvCc<@EEw zM{h%wQv|y2h5(^9F{dT$n{_kLBR5VJfaZ;6Ze|{x3snrF`xfw$D3_uAgvG5GC*kI_ z5J+sr8YKe{yrA8#qT;yQjkt&@()lDEW~^K4i>MreMu*LfMC!!0Ps{6f41v^mf}T6G z=v6&#V9dOleD-!=P5Vp@7$CL46AB~A-^DrvZ)s#Jo=>^gVrhlB)rz%Y?v)?r zjeD=V5!h~Jhb;YSX9nDR=>@x{85dq0?MV=e`+Oc3Lb~zupSNYyvXkB+WozV|WrDZ=Na?)$8kuTgIq!}(s=rqPSHOQL;3&t|p zrBV%GXnR?1}l@b2N?#frEF?-$AmMjX2%EwbKg5hjj4Q zbaVg?r@A3skQv<=2cOu8Xfqgr^M~hV!1&9f&)A(9y997YSrpdR|H12K4UqforTxlq zO$GWi`ysVlk)@_H`dNNu#Hyc-p1yyQOqs4}(^uWQ=i#{einl6~N^O$~Z zXHM$_G~-J%!Bp)5c=3=6td8ZgdG~f>f4jrD-cG})r$dXjVR+u*CicV0_)f)6RU6oN znPmmPbilA`u|3*z;x}{E!S);n+Ax(&Ex)Eu%d~IPDW`WDk;;5gkK26_tnbOw?~I1p zV@)m8K++EFE9D<{tg9~oQb3uKxmQeMj+z^zJ(_{Z*u1!bE)dvF+oyqt{W&Ocq;27a z!JEKZfLd_lgJ#cSIFLIuH}T}E2k%w`S%NiLnHPmlVY6acu%=hmWr>r98mK)`7OEUH z@*p49wsi~`t1N9S8wB$V=65_8!W2FKX85BU*1!xW#!gD3mezt68D5;M=VKwz`Udys zTA?8~a832&t&XMSW&xr%ZG!>rpQxJgeGl%VLSoHXw?O|V+P(bF5s-DwUp3_Pi&4p# zxmtI-ci1#;!}~dx&m)|sC@;Fa{L#F~%dn{WPuYs7hU)BBEJoJVQdVLO>pa-8-h1B8Qh){&m)(jvpG@}H%6eOIv z&Mw39yuhx9q*X|SXf5nZpk|54Y3Y&dP_VCPy2ug^u6)j+g`zcfw4{ZUl^w)r(N46@3uF{<6R1C z6O?VUeV3^DHgvjQnUDbu@%xS^L+GxkpZ7iEKvD)SG0P`$$f7@d-hpRK7P6Jggf;n47 z@$yzh;V2t%X0qNoOHyZoy9yEVu|2=zTL?`% zf2PJU74J{da`TH={&rF{#oM}vg-<^=43+Vvv0Bg6xlroGv9VRuU-BdU>?zoWEEwZ+!B zh;N&W!i4)27buDdUQQa-YKsMB`bk7sdY10ItdS)50fLiR1D|{gf~Ytp{>y$R9-i}& zER_mi-E(prNF%pOmmA*la8Tr8go>Cs6A@rxAk9AtBt}cS@;$#`nBax2?%Q5H z?zZkQ5C8*LX(f#Ixwf^8_~IbUL0QR&c_35r+9Y^B62fCRi%zhxzMQ_4zGYsO87PvU zfe^O`XuQ`5Xsz_81;}Yv`Ht7axn+~Itc;%z+8w_~+cMf6ORMLVLvzpj7^c<}>dGlD zwTos(%X#!^G{nE$hDT^dyq|N5SP=6D99q#%m=6zuyoM>0km9f84~dWL^Mej}!a1la zo$9>`PihFZqTc3sKDDxlvR}rLKE-3hgd9|bmUgChWxbN2uUqCd`X6|bHnOC{K_PV9 z8Sg$n?(1Jom~l*Z^qzra>Njgg@=inKrwe-wHkW3OKreUBVhiBdLR;<S`a_F8hf5tSx8kd zH};c5UU9Z@EQ+n>_jvS{lFMiLX$66cUp`o11<{r;CvPRg-|srA)Nuc(Z$)G-7UC-p zTq){#FZJrO;!lnW-{cs*6O`)E<5bGHbFOx4PLcZhIIIxaOn9$Ox-W@Q=WSsXGdkX+ z>q+~R?hm0)Ezo;-7p#V&qFSDGob@qO)3*t|ncERMzZQZoV@tf`R~CQ+uUCr0O`eRv z#CJLnxsXUFAxc42Cns=kLt$|}56GCY~Pja#iH^D)?-Ql?0UzSoQSEOX@3 z=pJT`$da}ATh>TY^^J|fsS&;)np-WCT8gnZWYy$gTptd?r1?BQMNFTjVvxTmVBcvG z^J)%m*&w2|mGrV{+%RHlrj=i?r584sC%3J&?)Iz<;zL*st;Wywrhi#+YDS{Xax&ax zVTY)lXWoD%US|0%o$DlOTKof@eH=17Qb@&^mjn#eV8*}aD)#a|Tx?zxrt_ZEJd5c&RbyFW27z5Xj zx~pZ=b{eBGPWc$EPV){VtNl7V$N@Bg2zE^xfyLP2j58kppV1D-7{sU6!qL30_5VWYV|0Pc$8uuTnkINuctx zF}bkzI4@f7^Z6voGEuS6iTg_pRk@dmk%z1F9{@p-gNQwmXjy1QVR%fjaA#zW>(~2l z+XnDHXR}ON6C(H|#CL!Hnj90!HShW%Ih`enm$>au4 z5>r{>UdE>I@$pi1@U=h{XLoqX2w2}nN7NO?`+7=IGz`fY)zzDS`o+X^>J&~;E$_;I zwB={2_-}nRE12mL&4`cEZXinPt5P&8)_N{gV%Z-w5L6MPw8#ESO={&#Rr2_|p>kaJ zQTAT??Zpug{P`KD&V-KF9UBls{UHOB)cE36Y$6FiQ6>L4AilEc@$f`U8}T)#f< z;He<5ulRNNUD&3_k2@06jBnuATUTQ=$+W2+17#$(6La{g82dQL7!@6q870aZn4bdE zGfJ4%GUh{`I2%_#-2>uQY(t?7;@cZYDS60Jv!Z4nNWI=KP#O6ds}!CS-#0@d$HjG+ z$uYcgR79EhOU@%x^v*PzzfN609~l~qd+H*gTo%neu%RUvM7gEkMk50jbomuJ2_Ej1 zO-f{@AF~$u49{ue4b!KeMDsED%?7(yGJ za~m@pozcODl66g<0N5S~3B^nfunMB=twL-E#)C*}d#+hBbs{@#e3wW_Cit;(P*J$g zeLGhaS>ar~01GVR*gx`sQ@72!vkam@z&o>g2T~i1mN6wPnwSvrF?$!Z-LJz8A?g-U z5(<3hnw6ndB!97o(MVtlvL1{M0Bq(4qWMFQw5=1m6d|3~k4Ufm^DbSZ1 z`IQ_g!k0cQ1GEzlC2|zVU=K&aWfr|x1<#1$(=8Cq(`Ja?!E+69yFh?*_UCVn@Csfu zDm(fgk;G9k%=vzBBd)>>2GNA4Xv&L95lU)vLgTPVV50UVR z(}>0jFPPw@fW{4m)SVeCkC|?HJ*_S3_#`VnfdPa(1n}kej|WCRrSnJYi5y%3hIsrk zOuJ@YM=Ne%%-52r39UfJIFR;R!X#q242RQJRw1V@hsohYyb()g<@vdgN^A{W!Y<&F zgt4IzNs6n{#5p>eWRt9v6(d{U@8;Z4xFB}+L+uVN=isD&Wz@r>*CFTf8es%{Ld8)X zyjKZByJm=4E$%4gyZ2x(>px44aAND(!Gj3-Fe&pwRY*4eQxx)pDT4Buid~+mOkSSB zaoxrh6zK1W<}@8S3O&kT{5MFMQr48$Bz%DDC8FiB!0zpqtc;ZYzYl_JOn8??F{s52 zMzc-Z;6OEm!}Hma0bcwlH(k-L&3>A8_R@?TYVouWedgZlG1Ww4cM@0{x#6xs$c#(G zL~hKqSirQAuL_Y(hwGY?D!u$mPQtR0@5Cd7Os^VoK(>jUVYc4XuSVmaE%;qLG&S(r zkYCF-N3AL&YgCWv6|5nkTphU}iT$qH>;M{fv9pw{G-T-X|vr?fzfm_{Ys*4f%46YW=nlpdi< zSYe3{8{1^vEBm5`*odj68cImZpa+!e2%v4!v!sTjZi>%BG{eUVPUiM8##70l>88Ws zn!LNyH&2el9hn`*8o=9c#X`+jw4*43|{QyF>s(|eglPM_2 zmo}*2K5VA@qZEz9(vjtb3wYm%FWM(yV7g#51J;eJge_p6V^J6B*9x!^sWj`F8wFSu zlOVr++5#$TjnTprOW5EOM|giG*zeB_bSGA%V?q_q1ea$;EomV{DGKLVf|o-GUDxJPU~qUfK$J^$Bna&@jKgl@L!TDlSO{o{shlNowax=q-iXMeb2 zxHOsr0pr_dY7r;TT-UB>Es_@Tgfue860#hR9HSHI1s-l#>J&jr;z*}M5|qSvR5?84 zM0c5xgXXA6xkoZWd7AtS$0SI^^yUakx@t}}QF`K|HDfFS+o8|^g9?}RIqJkgU%A1> zaPRs_L>p7(W>MCySICeII4p6*lfIzHJbd^vZ%=ndBC^jk)YtwpOc_n@f?lzu!za?D zF>pa#$@H-L4#c0&^4Cjo;>Okx>V#8Vdu`EKDq)$u#)$o`79o!7<&>kC-B{X`C3Y;0 z;LX$#yX`WX-6LZ8^Q#EL5-A*oA9LfkZvfKLm^Tlz)WiQyR8HtADcdrb3S3RS*ctF(N%dPA-Yx0Z%+E$Lmxs{7c+>|fB?2X?x ztw<(eymk;gWEgI4IVq4 zLcU;@kz?GnnHqvp9BsN$+%cSCQ@xgN)O+9n?l`mpyaz|%M6_99C&c|&er_P=X~US% z@_?+Lv_6;PjksFOQEF$@=*guvkAJid@-dx9S3^~TS)43(NTLpJZAqPxLlEAeIw znm^cRZ6x)M7s>Cf^^U$(wm~b;& zBt}CLOB>+Qpb39Yl@YWm09CdyyRefURy6XCSp}xQueF5teN~}@<-#f2D4)keY8pVI z3N+OU_;yPj$_sU7m14Es@j;9MCz2i}-GX2QaejC8(Fcb;7r)^;AsDJ?3NK&Uh?UfQ zM9egzDY81&Sh3~&BGGQ9y1P<=&I=K@AeLLHpi>6bGOVnRByN^JT6GmWv1ScOW%rUp z5a#x59AeR|=KrGYyQ7*)x4!32bJQ7BP#HyJM2ZNKK{Rx@ibx0Pos3lJN(s^u#}R1) z0z!lUQF=`b5Re)N=`B(d2xSmLfDjNufP|FqV7Yg0oA-YAy>I?-EmmA`&Uw!B?7e?w z?{NstdV^O-60p(qNp8WnIMr1C%d)s4G?8>P6DJermvnmsq4bP z>{>w;G8S6e!z@->ZL}(;|73TSs$3J81UFOZBxlr028d(Ilzg(H!d{_#f1^$NO$Uip z2MA>Ubb)}u9%^DgCmHpu=J-OCgA8z_Q@1TfO?pjpm?avvM;?beFBv8q*EzrLAVV?& zQ74qUw_vy9E~GuM)~u&T=7~C-+~t`@8iZZF9 z9dGs$+9&3+dseR#cPchzUDi80_&?>am?Uo?P^9XT38CmGrPq$vM# zoXzB7qsny;kzoYd$~4WnT6Sx4kmrvK7+0#D8ieYRrdu}pg$!w|Dvi;#!@FC~#0l=S z38B+uoXA`Ixo-RmVzW154O=a$u;YbPSWw?3Vqm>3Ok98sn>1Jpa^h(i+n$Z z-}(ih2x=M2o663I-&D)J9g`St?s}nGQDC}#OKkgz)B4*XbI9C^EFn#5rm*4K8_~TC-is0W?J$)$?3t9+&W3numQR+Ts9j0&5io(2b-J0oTn>zaU zt_=(H{j#DI+H{Knfh(qjxMz&-b_)!da}TXz&%|uvT;-eIm`p?jsD<|#0{SQBSjNh< zde_&Jyu9X^{$BG)>SeC**UQ&>s&Q%lk3T6R|?U4WT~VTvUV8jcAzZ# zg=}t}wCeoEQmUu#!=~T_?j~8Q+Epz4Ono9}A+B;O=a z{6==LwKI77Ph`=MYA2}^;ikG+R^?nxb+sI*yrY4mby6N2*74~9$L3;H{Kq1Z7enKW z`+pnrJU)SU(kv`(D}vtAY2X@sQ3A>X*Bv7ojlbvb6N%j14|V~pZUL2z0)AVhuflJ> zG4y! z9oa|!6}j2hYd(%U>$e?n$}b-i*?n4!ZMeIjlw3XN+H1a1S}sN289eB>RaqFWfVFes zTxlfb@;3;zb3ccYM`$BdIgyvcbt^N;^)sg%))R-;KX0UPO1IkX;$*d4tDUjq#{zW3 zLIzUCsIB|x8=fB}=6&9>}GKzv-6 z_dy}!`|wdV&vSQ>a)^XROrd()3md}YZd9OFyN0%H#$oX6(;A5HwN9&z9&c)_LVLuH9XYAWiSfxrI=#>Cz0I$)B%W)J+f2pK%RPTO?Kca)Q=K zSzyz?=FNR-P=2%T3~;E8@ACocB^Z#ua3Z_*_}P^E9l^5J10xo2dF;~Yw2+odT`AJwcEH8!*L$I^W_Jybe@r?W(6s)L3;3Sv2vMs+TjK=S zSnY(jtcZfkwZ_HC5jzeiu#sCMz0z&(uZv$gBEn09WBu@(N?WYGN*d1E-RiwkO;^y6 zuHM*qwg#t^Z%I;WdDtA-!0^_CKp+ycu$~TUATBZoI#|8+vay*n5eMzTM-p4u(I7;} zPFYlFaxZ=B&cT&Tli2>^0B7I2T+W03s9SNk$|S(vA3h$lB|DYGbD`9}6K{I=GG{X( z$B%{q66w{wlH89QMfO~=umaIpbJ6=qGrsVrIYaVli1BnK{s43r5BG#{HW26iJP_oj zOH%^7bpd1qzoXGtKSu! z|7slld(?0|`ZUlSkEU70@Q}xzF>Nv%M)#{<&tVGfqWREGy`0ro^@=kuc#6(-N}G}W zs$wE3f7K;6CM6GHWjss9&%N))iZK4Qm2pHiw@fq+$Du2tuktuT$sD}mMfACIW7{u&MK&#t3SU8Xh6kN;j_dFc_Z9H?a19DLK*gxcMK zs9!xG{BTP_uuyo>!pOk|(t}~o2@56Ai}V0YZSsNDQ)7ycC6!EbTe`m1*m~&1rMkDH z>c_7wLU)5aT5fh~)x1IHFlsM2jgC>00n5Q&clo`~pS1@EjHfbquVRH)79biP+uueE zoIarjI`Tl_4oP&-e^?rwg;H0vq~0bzEA}0%2(9q5V$-Q!x2Q$_hFY}l_AL}plJJsS z{Drlu+t8!P?z5>c>|U-?3c+laBzUu%NRJ%~%TeWqMEG_aIE;_s)Gq%{qk2m@e4)ts z+-65muU`jA1xhY8C57-+`q8R)z3ZsUD6Ly_0!WWJ)4P2|&hPFwv%Ab4xG-c?4KIJO z{`eKbGu(iILD!QT}f}(BJ06YKaA5W5xT&X#-)kd?&_A*RJq{9Uws~4QTR| z9Ya?$oi_8H0rSN^+&}Q|@A$$O-3mYL=s;UvRsVE$V_<_KLfLZt?62<{FdX4;HLxLZ z{iop!tH1oJdk+~KvKR>vYNOfxqbT_Ocflfm*&~48_`k2j{mTXX?q2@z57jM<4BPvW z?0_C9GZVll^<^LZ6CXkOz2DVv`SpM%`FiqcKQf;idStID(TC5QQ=hOq;OA%WRm8!6 z;!2s+@j?e)TnLA0WX(9LET`TXtK*M<=YXi;*~`-KlC<|C>d#(u4*|V!IXmn0Q-gs< zF`Rop|3YS*1vS@bYhs#7cZ!`$>5MKBh`T(d;il#xqIE(4jM&*qljG=S$ikRJ!Pw;< zdoeBP<;=#e23QVVYmFUWv2L|6K@8$D7MGd*YJ72;(2!4;)tKi{(|OAxN5UH2Ts4;r zTUk`RiDpiE5$749NvDUNH}`PZjft7&>1)^{k~SG6-_ov^r_&(~Q{PD+Y;%aapL+wtM_nw2+_p8g^)=PP z3gGN8NYP?-4=2((BF4wYvQK%VgNOyCwa%$;EUfi7=GdF5;fUFr1Y1$D{!T5t`o@@a z!F13aF57i~`muVR*U=pK#E$A}ACr*3$T@{W2RQR_Nn+w*Cl2UKgF{8sF0)nu`or!x z>W<2}(j}@Dgv%tA(cG-ffVPM!@w>GG<>eUkQDpNWRq>R{-S3o%1BhUqkDERCgmIW` zLt7l^;Z?JAX-wL(2yx?$u_&V($EG2T%{6G8K##(n)JuKE(_EF48F|F zO@n<3(&MGskg;3rEj8KkQfd3^PLRtnfvdQ!NPCSqQv@SabW3x-qyXLXgv@%AaV>X= zAJ}XpD-H6(kO@_gqTLuU1 zr$XkfH)gAk2j7w&UmAGsKJuLvJw1p<84k1yX`bhJAZS*V{42V)y@hiVL^xuop`H=U zcw=Hr{~_f5hj9kLUJ1EWNP2Q9<v%P4(a6vE) z5$0l%da=^aS@TKx&4B=_n3|o;bD3XdSfz{+N2>*l@F(7l=B0|2sTYbrE4q7C2W53! zNcLug&BB8e8iC+x=Ek|Pajy7cs3Ty2C%TYVA=d8v^U!|MJ zagKNr+uh8K7dBU(2uJsn_hBr)grCw)Vb#~lLwbRmg#>ftHrk2;fQQ3 zfy+tX7XJ2-s+ZC3!Pg&7BSh``9eyI{<0XDkVmw`?aS|d2%HEM3LS6IV5AC#k)8|dw zNX_tii~UBGdTpUd-Ts*~RwZ(Qv%?N(_7j(tOu?NE62rjhLn{#r^;WKDKH>%qxkZ9V z!HXu@FE4frK}ue3Jhj#L!8CYvwj#g+_!e115iQ@fiI)v_+}*YXP<#gE$bjs%xfq`` z-4y2jlm|js$5?h(BP^+g*()Bv)9J8LBgWj0VuuX9>pXO4u5k`+KU2Y@ozRjn^5GXR+WRIS`tTWA_v3Mm-V>Hmnb?PjF(oew9ZcOFTkVLribh^9Q zHQzE5R(&SpfR?M`R^AVBW_9J&9}4v2bp1$|M-1+rb`pk9^mcagu6MR5_xP+?By8T9Ph6W@5bP~9qp=KOqu~PL zKK?pvOHJ$I4CawCk=|nFnouJwj7GhYLt+sx@<}_Ic0SoL9pAPW$%0h1o;P5ddR&7D zG%XNH7qFDNj>?_~M@tmVV4yz!eRX-BamJLIUInSKR!?7ca5O2HFu7Tn-7}OMAY*3( z8@~}Y6|zD!hW=u(SlHK&h)4SyNi1i(1d(q0@W57-GeBd2dS2S;q=ifP8t7jhwvI)t zv2^xTj;f$6TK&m+n1~oY>8zAJ&U+zH!%MbyWS13hz6 z$ektL3*Wsm52HIrIVbE!6o}xC*1llp!wVFSmO1IYK$1q##@?xT1Mgq@`!5~b% zABheGrd#U9+Z#W8_8BSigr?6Gr#j4sdhAuvKO{4M{z^kgp(&d5oSfuJ5uhYY9+*y_ z@7LNgGTjSsK#22r-z4b651;+#60EGpV{yZk{2WE!UgH&Gs;<+;0rr-b+V*#=GXM=$ zKK=Pj=&O2tWRye9c&tHKZ;1%F{-b8?-glQ0NvE`6k!rd%r-sjH{q);!TbwRK5dAU1 z2Lzogwej9n-{`Q(>@D|yN_dSs=Ed0V)GJSm_E|&JU*2CDk_ZGaLR|QQd=(nvxl3ql zX|06#J`$&^X#a0%$1I?H*7(*(PA{{na*NWYzYw2B~O8kgmHyPMR$hH z_s^u)tK#yY-WZi76joI;D;W+8o3Aw0Yo@+sGdl&(%La0XyO8i{HWjxfhuebC_Rd?{ z&Y4ui^T)w1LBNreMnJ0{MY^w_KqRDQ!JL_+kgRWl^t>O6D;5A9iH+06U54pnlT}pk zVAH31z?XfAQn@H7-SYjnI##(&2gnCS%N<)g5tnqjPR>Ma(TIuQp%f;zyt@Q$3iUthWGTTi1)HO0cyC7-?_Ijc>lEd3wwx*3!RL>v! z>KQc9n@5eP^IChet1G(vGTW8$N8n-;8?oHk z24Q96$DV5?uFYJ;xb8Q$S&%41VnEA$PP6Q}bT6HTrUb9?I%DQz6-M9ZN5rrb; zb?rQ#H#2cxeRt!ZXLXPV!V5(}E zprMv?yfD@HEy&ux$PdP3fwO<=q3|2awT`29E{YN&ci#3$m_|N-+vDmYS=qc?Bzh1sq0C{U z<@`7=ntkS$J%BKV#GkXz&{f79P835MpVk?Zz9u*z9Bo&U+(e`5IpF2u`?SW2Wo3sn z58|U@1DTt^w)9{^2s>wh%&fC9F(*}BB*=Az^li#F2X)*sNKZ~N0=^K2Ma1<#m18a$ zV8=5>k*#rt`}L#+Mq}E3QqFLFo!yclYd(r`P=ai+M`XbfVy9+OmJ$s0P2vb77R&F$ zE&P^N?A7Lx^<)U!6BYNihtuFi=jQmH(P=XpT#vG>E3pl9)2}BvR(F_cN0m6qNxRI= zo2{|+9<>La(ZN78%q@;)!k>n^_XvAIj^>mPyatsQ!$&XdZCWbD$?iDN-)H#=3aNs5 zrwDch9Z3B?q)|0NJg#U8IrFZ~8YrOPtQ(TTWUS21E&X_7NJ9s^>*`grR8xk9LuEo* zj>rSo5I8zfQ}_sS*@3Y|W&!s>CKs-dHnnJB#oibK_M@HkUHAKP>URl7-~WGtLG9P- zi}6V(ww&`8iZ`}#Hsk{-NcrSiX9|!BX(o#U3sGic>3cxm2oIr;$!%C~9@ekD-RZFc z4UCa^3OXL*NK5J`(I?I@0v`_!v?ZG@5QHK=EjH zv5;UeaO-8x^^t ziK+GqKbPiY^3b|UHr+qs59xQKrpZJx^|JpyafxQlo)o{&G0;xe4U2aK9v>xj0&yy zSMf^95XirQZlrZV*LoF1H@^5iN~#Z+t47a?Dh^6#}t#A)-7Y)*6BU}Hi!hr4@k=&54s z$)wV5Pn*-gj@fzCdqv+^3&UQ}8q9sm)}~`>C48uDG@#Hw zT6yrp3y_m96QF}oUT^>DT-nCF70G$gmLjOxQXq46Y-hC^g3ncmY-JgWM^h~h`pak8 zC=_T@ULaRylvXMloG`t-Z(ouX2v;_c=%Y5_zp+YbyLg zJ{psyt+H(&p;?*RR@}>K6o?QDv^2MI@1aNDO32ajxw%n)JgjKy5gJZR?g3Di>LcmA z$V)|d+Kr6?LX4Uq@Za6UHyvBn?gfzvpeOPE^0SYXg6Mw-({z|HB3MZB@TP~Du| zlRGA5J0VwFvq3KLu?ncB_18_1PEh$*#5%Z~Ss`5Y(!-geZ?N?bZ=H(6+R96HYyg-I zjruw;MQYkngliGC;DoQix*pBMYkF3~om(h)lhi znrRXb|!W)Tm z80_vOO^!M+n8J!4 zX=t(I5*1;3xulVGf7fD(&wVUruuBqIP?v{#wU@8@9*|ZV#n4_8JiEI|r?@%k^j3vH zrw42(eFz$|Fu41hcjn3b(^xwD!r zOp(Hh3A3@j^fAqly@)^jKjayWS=Z^LO|K`UO*8V1&phJ#Z&v`pdfL%(Mimj>4#|4D z`5wf`Qv;`DeYirAn4-f#7H^k#t+iA5vg%g*P3H)deL*sCdW$I`Y~>T}36PEQv7p0t zL9#=|8(39bMe>a)Tg^(Kd}sDLXvHkI4QK`MZfZJ~H$|F_n4SYWg^h8pS}JAOg!ww} zr9_N#z&z!OZ~*3f+_t$p>ffKpvfh-#mS#g$I@;`a9vP$1hmot9$d=D6?Isu(Bv*Ps zBIhxUN!*5R|2O7#6_xJ_^U6hp?x_}&PJt)0P*D+~86-vMfUx4pPi3rFr#0}->8APHXLQG70hXf8 zB0+EuOtHt5->P?W4C}kk;7Z)eQP!|SUT9oD_2D7^H2gQ{Lyxd_&+bJ4{9T|{PpCOI z=DBpFD77R-Wgb0EO;Li|EG&=2Pn0$<6u>){cW!C&Sd^4H%`?p01R7Dyu%x1kX?k|A z#K*9C%rWZiq?|JWurq(aS5P31XFj43$(2<)*$?s_Oeux)OUhP6w03Srw8y+rcR#E8d2uzgmM_; zU};DcgN?86Sl6y};suRqykEqXgA7NTiH+l^_a8w`x&G(LE zo{`D=W@4P8z|IZxkHNi3>V4sNWW>ZT`!`?=&HH!mm9)lE>tXVE9fN6HuehPFL5IGFstiyR6;Xg3wd%F4=0tjC-9a;#i{r+2tmyH& z8N0Y2Dg+TKE*4c-Cy$JYn70>wI*SU5mK%AkbJvmvoJsN*LQGO|YIoIc=rp_hB@e%6 znpFgZf3=p#6!k$Y$a2%pT>&dt8|rTIeLas8d0eOCkYsY;`JhhRVI-byUavN03)IX7 zIUA~YTlwoL%p+O&UgCK!klbOJy?I?6tBg7x+UO+|_ZC&0-^FosKw#W~w&3D&-O zLI|1j7lada>3J2bm8NMgw7GV%qiM?_aiRHpY|lSRGqBH`QUHpPM*7ss?84 zU65!?---bcp^F;7o9c`+j5CJs^R)TYnQ8Aq9zlAU8+4xEmW-EW(28)OLo(NoC|CqX zij7`4pK;30TpmoUSRcM2<}KVCM^X+OY1H%zyjZZvEZ6mp7iSz|pp95B(6Q;qu29Pu z?|K~}PPjj+?}r~N8%1<@0KHaDd~yNb>yQ3#MOInn(!uWVmM^Z(J#ZOL_v{B<3vmrg z-{mTAunE0XfUH=yWyZ%FpNRw7K~H7rOvlTYmWV#~0;+_kMg^`E;iBbT0%-&r;ZY>? zTr~IB%(GzEx-_*`Pw$6Ek0I4R@)e(DV8K8}@bKN0!Eh+R%1O8VCT7uE@~uT zoP(X!#3o!cz*xrT_d2SgFi!MMa?ylvOH0(H8LMn)@6p{YwAT1MYHh-N|5nR}08r=UM5Q%OLWQXw=8TOUN}o}7BQsC~UuU><*MAqAPk2y27F6t%Mwn3v z*NfRY&!DY=Jq)ZgO|5Z`?@5V9?fRZQsyb~2D8T7+mawIc9f`KtPlb2lU2n5}&_!;3 zSwsIha6$6+L(4X{dV=HClaT2>W+2f|iKm7(gE+nf!ymiIgkoEIpXy7tDVwz7x6 z+HDimX@Yk5%C_AV&o)!RgCd!0d8`1=Pjy4;JzRK82QRr{Cu?gha{@jq3m556C#as1Gf{_vGeN{T?y*y#2OztgTt(cB{!RgG!d4x z(`Y{o7Wo8D&xv*l_Xu+{Ro~{7D^<)mB}1P^baJ3L3aD>Dn3AmvsdYM}hJMZ5{gohq zv5(>IBn)!h;MuZgZ};>3>&|I4M0VR=T4di|RFK1d@?-j>fe=y< zh34A>HL!cVv7JZmoz7n<48tYu``!q?a?!%t>!mtVTt=_|3xI7j(b#v#%}etneo;jt zuPT^}=VC;z&8GI37|Z)?tX6&S%wWI-wm(Ce%q%Nc*?G6x*2kT(_HcxQ7T%;?V# z{d~@t`g(U(BJ;IE%81_=_e3Bl+B%mYs-)_v_)|^e;Dc+%uYvdgD<<=M@Wf(ye}+K!Y=`OL4zp z_c>{0SM%Gbu^B0D1JBj`&Hk1f>iU*ashAC|8!hXEMk%!$+UwNE-_QZRN}!P^AwLQa zhIxK_fv_g5i$KrR7-7Sv=P;J~J#wj{s6tlpXsCkWcZ|tpP$+At;n2vYk zqi4Xx!-;1Vj`y~=*-o=}LbyPxIMjyp$%mH_nrH|x^pQA&NUdQWBJW1+xa-93?-pk; zx=%Ld(x`tGw(ykG`-0&G$NvH&WtgsMCwU{{Owgs1cpaxebEcyRMdF86t#~Vtl$1`2 zC{i%e%Vikhht3t@BMJeb&8TTdeBarGOW38`b8NUJkfOfS|3-$oP^u!)_@yCHo6DxR zx=Nem)EKqdEGbI`IEmt$&H+q6(DcphZ3hbC*?D0g4pga(fp)bsPxLU_X6ZFUDIbe^YWQ5Y(!;TI&ol6>blApD%IGQupg%8diA z!T$>4ZXg$c{pnHG&_R{b%xs98O;K+rbgD3}|5}^I8P>~2rshu9{O)5ZFmAVsGIVE< z)p;W-CtyPU&xw_cvHF+%KRrho+AN?TK+keosI!;Gr2lnkNgS+^*NN?B>Jh|jfaP6C zAYa>vDWpKW2)q0*&Lp@w8EPSBRlVwpU|IzlLBnyzm7^`dnatbXx(Kg~k2M}m+1wTj z+1uhTRQ}s!T?Lcq$#)zbBm5ii89>_Q6l_KpYRV#}7iIr3OS6C;g(&G|5feFbQo@I>Z^kSXbzhB~bfl%k%=%FU zk@k@8Q;GQu#Iq5ghg=$7fU-p)H*m35MYN&@!JEsN+^CDO*XgRv_DX(szdZ`OwD!)ZqxUcpw=#D0IVpI^^p@_;wO0FgC{FQ^nsJ-NL}?tN>Cr@duu?1*e=$vg(3kWlZ2$U)TXa6nFK7yn(vk$7Vb zQwvv#xs_U7)-L2E#KpSqS);>mOqCNeGz`#voW58oWXQF;b^%z=R|^IfamM>kNSioj z&c}f)9m9+&3UD@4HLkOUA~BGe^uk23+E72osR~|{3qx3^cjFuCvAp%yxbFNe_5;0E zR^E>XnJJ;%Q(iQLP714&z1h2I`d-4s90nvzX6P=?Rd1)i)i9+xs3~;-)bo>oO`e%J zdfV7$7XgKdg@FPolL`L;g zRht2$PBcO;v_i2hs-t{)k%@XyWH;+BB~{}&=@Bk8Z*c#!cQ22RfR7^4TGADOFwzmF zss*ULhu7}DFz{vTSxU`pf9@*5Sik0RcV$>!#-hOUQH>}v?uW`)WA3D0?NU9`#Bod< z%yoJqQ1^ueHD5II{P5jXwN*B8t>G^3=kHiOy=fZ^5r2(PmVKLtxz^z!U=o3(a!5o& z3qO41m$A@aUQX8fV@na=EDaubPco4vy-s2?r3$kzZG5b)wnM9;j~-Ff>D)G(%5&*X zk)*f;^`F%Gj`(`}}uNl9zRJLAI(iq2i+|G3suHGuh~y*ic&iCsSKG}FXm zY@p?U#Ka<`htQvGvvUH875+;9QG-*Cf<#6z@�VIr*nEEQ(w4vYv}%D`w-MMM%Ri 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%0ANzNe& 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 literal 0 HcmV?d00001 diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/images/User_Interaction_Canvas_Item_Workflow.png b/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/images/User_Interaction_Canvas_Item_Workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..2d318069cd71bbd9b4f91cf57c4bf6cc24505670 GIT binary patch literal 65058 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 literal 0 HcmV?d00001 diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/images/Waiting_Timer_Canvas_Item_Workflow.png b/docs/versions/v3.0.0/Components/Archetypes/typescript/Components/images/Waiting_Timer_Canvas_Item_Workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..bf5c32caac1105e0697f5f9f7ddec5276a04dce5 GIT binary patch literal 66565 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�vbcSh&2A5i@>o#4)$3S|4I;W%ZoeG#HVa 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 literal 0 HcmV?d00001 diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Core Concepts.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Core Concepts.md new file mode 100644 index 000000000..69df68c24 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Core Concepts.md @@ -0,0 +1,30 @@ +[//]: # (DEFAULT TEMPLATE, Used if no others match) + +[//]: # (Remove Comments when you are done) +[//]: # (What is this?) + +# Title + +[//]: # (Additional Information on the topic goes here) + +[//]: # (What will you learn) +[//]: # (Optional) + +## Overview + +[//]: # (Internal navigation) +[//]: # (Navigational links may have a short description after them separated by a `-`) + +## Table Of Contents + +1. [Section](#section) + +[//]: # (Fill As many of these as you need. Use h4 and further here, do not include h1s, h2s or h3s.) + +### Section + +[//]: # (Optional Section) +[//]: # (## Previous:) + +[//]: # (Optional Section) +[//]: # (## Next:) diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Getting Started.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Getting Started.md new file mode 100644 index 000000000..ecd8bbe2a --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Getting Started.md @@ -0,0 +1,32 @@ +[//]: # (DEFAULT TEMPLATE, Used if no others match) + +[//]: # (Remove Comments when you are done) +[//]: # (What is this?) + +# Title + +[//]: # (Additional Information on the topic goes here) + +[//]: # (What will you learn) +[//]: # (Optional) + +## Overview + +[//]: # (Internal navigation) +[//]: # (Navigational links may have a short description after them separated by a `-`) + +## Table Of Contents + +1. [Properties](#properties) + +### Properties + +#### skipInstallNodeDeps + +Add the `skipInstallNodeDeps` flag to skip the deletion and re-installation of node-deps. Ex: `mvn clean package -DskipInstallNodeDeps=true`. + +Note: If node_modules folder doesn't exist, then this flag is ineffective. + +#### -Dvro.forceImportLatestVersions + +This strategy will force you to upload the same or newer version of a package, otherwise it will fail the build, allowing us for better CI/CD pipelines, where we can ensure that the latest versions are always used on the server. diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Known Issues.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Known Issues.md new file mode 100644 index 000000000..27e64d851 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Known Issues.md @@ -0,0 +1,118 @@ +# Known Issues + +A list of known typescript archetype issues. + +## Table Of Contents + +1. [Array functions are not transpiled to vRO code](#array-functions-are-not-transpiled-to-vro-code) + +### Array functions are not transpiled to vRO code + +If an `Array` variable is not explicitly defined or recognized as such, the transpiler does not convert the TS-specific `Array` prototype functions (`find()`, `some()`, etc.) into vRO compatible code which results in a runtime error. + +Consider the following example: + +```javascript +const testArray = [1, 2, 3, 4, 5]; + +let objectsForIteration = null; +if (true) { + objectsForIteration = testArray; +} + +// Fails to transpile correctly because type is resolved to "any" +const res = objectsForIteration.find(o => o === 2) +System.log(res + "") +``` + +The code above is be converted to the following vRO code, which during execution throws the error `TypeError: Cannot find function find in object 1,2,3,4,5.` + +```javascript +var testArray = [1, 2, 3, 4, 5]; + +var objectsForIteration = null; +if (true) { + objectsForIteration = testArray; +} + +// Fails to transpile correctly because type is resolved to "any" +var res = objectsForIteration.find(function (o) { return o === 2; }); +System.log(res + ""); +``` + +Proper variable typization solves this problem. Let's revisit the example but this time we will explicitly define the type of values that we expect the `objectsForIteration` variable to receive. + +```javascript +const testArray = [1, 2, 3, 4, 5]; + +let objectsForIteration: Array = null; +if (true) { + objectsForIteration = testArray; +} + +// Transpiles correctly because of explicit typization +const res = objectsForIteration.find(o => o === 2) +System.log(res + "") +``` + +The code is transpiled correctly to vRO code and executes successfully. + +```javascript +var __global = System.getContext() || (function () { + return this; +}).call(null); +var VROES = __global.__VROES || (__global.__VROES = System.getModule("com.vmware.pscoe.library.ecmascript").VROES()); +var testArray = [1, 2, 3, 4, 5]; + +var objectsForIteration = null; +if (true) { + objectsForIteration = testArray; +} +// Transpiles correctly because of explicit typization +var res = VROES.Shims.arrayFind(objectsForIteration, function (o) { return o === 2; }); +System.log(res + ""); +``` + +#### How to prevent this issue + +The recommended configuration to prevent such issues is to set the `strictNullChecks` property to `true` in your project's local `tsconfig.json` file. This allows for a type hint warning to be displayed in case the type is not explicitly defined. + +> **NOTE!** The warning messages received are optional and are NOT blocking package build and push operations. + +Let's revisit the example once again with `strictNullChecks` enabled: + +```javascript +const testArray = [1, 2, 3, 4, 5]; + +let objectsForIteration = null; +if (true) { + // The following warning message is displayed: Type 'number[]' is not assignable to type 'null'.ts(2322) + objectsForIteration = testArray; +} + +// The following warning message is displayed: 'objectsForIteration' is possibly 'null'.ts(18047) +const res = objectsForIteration.find(o => o === 2) +System.log(res + "") +``` + +Sample `tsconfig.json`: + +```javascript +{ + "compilerOptions": { + "target": "ES5", + "module": "CommonJS", + "moduleResolution": "Node", + "lib": [ + "ES5", + "ES2015.Core", + "ES2015.Collection", + "ES2015.Iterable", + "ES2015.Promise", + "ES2017.String" + ], + "experimentalDecorators": true, + "strictNullChecks": true + } +} +``` diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Code Coverage.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Code Coverage.md new file mode 100644 index 000000000..b75212271 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Code Coverage.md @@ -0,0 +1,123 @@ +# Code Coverage + +Details on how to enable, configure and read code coverage + +## Overview + +After code has been compiled to javascript (from typescript), a testbed is created. A VRO Runtime is inserted so you can use some modules natively (things like Workflow, Properties, LockingSystem, Server, System, etc.). After the test bed is created, jasmine is run either through IstanbulJS or directly (depending if code coverage is enabled or not). + +> **Jasmine version: 4.0.2** + +## Table Of Contents + +1. [Enabling Code Coverage](#enabling-code-coverage) +2. [Reporters](#reporters) +3. [Setting Thresholds](#setting-thresholds) +4. [How to exclude files from code coverage](#how-to-exclude-files-from-code-coverage) +5. [Best Practices](#best-practices) +6. [Limitations](#limitations) +7. [FAQ](#faq) + +### Enabling Code Coverage + +Start by Adding the following profile to your `~/.m2/settings.xml` file + +```xml + + pscoe-testing + + true + text,html,clover,cobertura,lcovonly + + +``` + +Activate the profile by adding it to the ``. + +```xml + + pscoe-testing + +``` + +### Reporters + +The toolchain supports many different code coverage reporters. Internally we use a tool called IstanbulJS, so the supported reporters and their documentation can be found here: [Using Alternative Reporters](https://istanbul.js.org/docs/advanced/alternative-reporters/). + +After enabling a reporter and running `mvn clean test`, you can see the output files in: `/target/vro-tests/coverage/` + +### Setting Thresholds + +When setting the thresholds for code coverage if you set the ``, if the percentage is not met when running the tests, the tests will be considered as failed. Including such thresholds into your CI/CD pipeline will introduce hard limits that developers must follow when writing code. This way you can introduce a very good quality gate. It is suggested to start with a lower threshold for older projects and higher threshold for new projects. A good example of setting an error threshold would be around 60-70 and a possible warning threshold in the 80s. + +Individual overwrites for thresholds can be set for branches, lines, functions and statements. These individually overwrite the default ones (`test.coverage.thrsholds.error|warn`). + +#### Per-file + +Code coverage per file bases. Set custom --coverage-thresholds, if any file in the project drops below those thresholds, the build will fail. + +Enable by setting `true` in your `~/.m2/settings.xml` testing profile. + +Refer to InstanbulJS documentation for more information: [https://github.com/istanbuljs/nyc](https://github.com/istanbuljs/nyc). + +```xml + + pscoe-testing + + true + text,html,clover,cobertura,lcovonly + + + 70 + 80 + + 60 + 70 + 60 + 70 + 60 + 70 + 60 + 70 + true + + +``` + +### How to exclude files from code coverage + +Files can be excluded from code coverage by naming them following the pattern: `*.helper.[tj]s`. + +During testing, you will be able to use these files by specifying them normally (`import testHelper from "./testHelper.helper";`). + +### Best Practices + +> **Naming convention** + +```txt +"**/?(*.)+(spec|test).[j|t]s(x)" + +//example names for javascript file +MyTests.test.js +MyTests.spec.js + +//example names for typescript file +MyTest.test.ts +MyTest.spec.ts +``` + +### Limitations + +> **actions-package** + +For actions-package projects, all test must be placed under `src/test` folder in order to be compiled and executed and packaged correctly. + +### FAQ + +#### Can I use Jasmine Helpers? + +Jasmine helpers are not supported. We are injecting the vRO Runtime with a helper tho. + +#### Can I test workflows? + +This is currently not supported. As a general rule of thumb, keep your Workflows as minimal as possible. Abstract the logic away from the workflows and put it in an Action that is easily testable. diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/Dependecy Injection.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/Dependecy Injection.md new file mode 100644 index 000000000..e33350e8b --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/Dependecy Injection.md @@ -0,0 +1,88 @@ +# Dependecy Injection + +Example on how to test Dependency Injection + +## Overview + +Dependency injection is providing the objects that an object needs (its dependencies) instead of having it construct them itself. It's a very useful technique for testing, since it allows dependencies to be mocked or stubbed out. + +Dependencies can be injected into objects by constructor injection or setter injection. + +## Table Of Contents + +1. [Example](#example) + +### Example + +Test + +```typescript +export class NoDependencyInjection { + protected restHost: RESTHost; + + // We can retrieve the RESTHost from a config element, but we have no way of creating mocks/spies/expectations + init() { + const restHostConfig = new ConfigElementAccessor('ing/testing/dependencyInjectionRestHost'); + this.restHost = restHostConfig.get('restHost'); + } + + doApiCall() { + const request = this.restHost.createRequest("GET", "/ping", ""); + + return request.execute(); + } +} + +// To test this, create a mock for restHostConfig +export class SomeDependencyInjection { + private restHost: RESTHost; + + // Retrieve the RESTHost from a config element + constructor(restHostConfig: ConfigElementAccessor) { + this.restHost = restHostConfig.get('restHost'); + } + + doApiCall() { + const request = this.restHost.createRequest("GET", "/ping", ""); + + return request.execute(); + } +} + +// Even Better, we can test this by creating a mock for restHost directly, always delegate logic to the parent, not the child! +// Let the action/workflow that needs this class, fetch everything that is needed. +export class GoodDependencyInjection { + constructor(private restHost: RESTHost) { + } + + doApiCall() { + const request = this.restHost.createRequest("GET", "/ping", ""); + + return request.execute(); + } +} + +// Test oriented dependency injection. Useful in a LOT of cases. In your normal execution, you want to retrieve the value +// from some config element, but in test cases, you have an out +export class TestRelatedDependencyInjection { + // When we create this class in our workflows or actions, do not pass a parameter, but when writing tests, create a mocked restHost + constructor(private restHost?: RESTHost) { + if (!restHost) { + const restHostConfig = new ConfigElementAccessor('ing/testing/dependencyInjectionRestHost'); + this.restHost = restHostConfig.get('restHost'); + } + } + + doApiCall() { + const request = this.restHost.createRequest("GET", "/ping", ""); + + return request.execute(); + } +} + +export class NoDependencyInjectionTestDouble extends NoDependencyInjection { + // @ts-ignore + constructor(protected restHost: RESTHost) { + } +} +``` diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/Global-Classes.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/Global-Classes.md new file mode 100644 index 000000000..c13b67170 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/Global-Classes.md @@ -0,0 +1,52 @@ +# Global Classes + +Example on how to test global classes + +## Overview + +When it comes to Static Global Classes (like vCACCAFEFilterParam for example), they need to be defined before each test, with the methods that you want to use inside your test. + +## Table Of Contents + +1. [Example](#example) + +### Example + +Example Class: + +```typescript +export default function ( date: string): string { + Server.log( "Getting date" ); + return vCACCAFEFilterParam.date( date ); +} +``` + +Example test: + +```typescript +import testOne from "./testOne"; + +describe('', function () { + beforeEach(()=>{ + ( vCACCAFEFilterParam) = { + date: function ( date: string ) { + throw new Error( "Not Supported" ); + } + }; + }); + + afterEach(() => { + ( vCACCAFEFilterParam) = undefined; + }); + + it('should ', function () { + spyOn( Server, "log" ).and.callFake( () => {} ); + spyOn( vCACCAFEFilterParam, "date" ).and.returnValue( "spy" ); + + expect( testOne( 'test' ) ).toBe( "spy" ); + + expect( vCACCAFEFilterParam.date ).toHaveBeenCalledTimes( 1 ); + expect( Server.log ).toHaveBeenCalledTimes( 1 ); + }); +}); +``` diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/Native-Actions.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/Native-Actions.md new file mode 100644 index 000000000..1025a88a3 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/Native-Actions.md @@ -0,0 +1,33 @@ +# Native Actions + +Example on how to test native actions + +## Overview + +When it comes to native actions items, using the old syntax of creating actions allow us to call the actions directly when needed. Mapping inputs and outputs according to the documentation/arguments. + +## Table Of Contents + +1. [Example](#example) + +### Example + +Test: + +```typescript +const sumAction = System.getModule("com.vmware.pscoe.actions").sumAction; + +describe("Sum Action test", () => { + it("should add two numbers", () => { + expect( sumAction( 1,5 ) ).toBe( 6 ); + }); +}) +``` + +Code To Test: + +```typescript +(function ( numberOne: number, numberTwo: number ):number { + return numberOne + numberTwo; +}); +``` diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/RestHost.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/RestHost.md new file mode 100644 index 000000000..685be7bd1 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Examples/RestHost.md @@ -0,0 +1,51 @@ +# RestHost + +Example on how to test RestHost + +## Overview + +## Table Of Contents + +1. [Example](#example) + +### Example + +Test: + +```typescript +describe("ApiCall", () => { + it('should do an api call', function () { + const restHostTestDouble = jasmine.createSpyObj("RESTHost", ["createRequest"]); + const restRequestTestDouble = jasmine.createSpyObj("RESTRequest", ["execute"]); + const restResponseTestDouble = jasmine.createSpyObj("RESTResponse", [], {contentAsString: JSON.stringify({test: 2})}); + + restHostTestDouble.createRequest.and.returnValue(restRequestTestDouble); + restRequestTestDouble.execute.and.returnValue(restResponseTestDouble); + + const restHostExample = new RestHostExample(restHostTestDouble); + + const response = restHostExample.doApiCall(); + + expect(response.test).toBe(2); + expect(restHostTestDouble.createRequest).toHaveBeenCalledTimes(1); + expect(restHostTestDouble.createRequest).toHaveBeenCalledWith("GET", "/api/v1/test", ""); + expect(restRequestTestDouble.execute).toHaveBeenCalledTimes(1); + }); +}) + +``` + +Code To Test: + +```typescript +export default class RestHostExample { + constructor(private restHost: RESTHost) { + } + + doApiCall() { + const restRequest: RESTRequest = this.restHost.createRequest("GET", "/api/v1/test", ""); + const restResponse: RESTResponse = restRequest.execute() + return JSON.parse(restResponse.contentAsString); + } +} +``` diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Getting Started.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Getting Started.md new file mode 100644 index 000000000..1f5343b0b --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Getting Started.md @@ -0,0 +1,85 @@ +# Getting Started + +## Overview + +After code has been compiled to javascript ( from typescript ), a testbed is created. A VRO Runtime is inserted so you can use some modules natively (things like Workflow, Properties, LockingSystem, Server, System, etc.). After the test bed is created, jasmine is run either through IstanbulJS or directly( depending if code coverage is enabled or not ). + +> **Jasmine version: 4.0.2** + +## Table Of Contents + +1. [Limitations](#limitations) +2. [Best Practices](#best-practices) +3. [FAQ](#faq) + +### Limitations + +> ***actions-package*** + +For actions-package projects, all test must be placed under `src/test` folder in order to be compiled and executed and packaged correctly. + +> ***What types of files can I test*** + +Only file types that can be tested are Actions - filename.ts. Workflows can't be tested as well as config files. As a general rule of thumb, keep your Workflows as minimal as possible. Abstract the logic away from the workflows and put it in an Action that is easily testable. + +### Best Practices + +> ***Unit testing*** + +Testing individual components of software. A unit test should test one thing. + +Label your test suites (describe blocks) and specs (it blocks) in a way that clearly conveys the intention of each unit test. Note that the name of each test is the title of its it preceded by all its parent describe names. Favor assertive verbs and avoid ones like "should." + +Test file contains one describe() block containing multiple describes with common functionality. Each describe() must have a meaningful name. Do not include logic or mocks in describe blocks. + +> ***beforeEach()*** + +We can execute some pieces of code before execution of each spec. For example you can create new instances here. Don't use any logic in the describe() block, only in beforeEach(). Use "this" to share variables between it and before/after blocks. + +```typescript +beforeEach(() => { + this.someClass = new SomeClass(); +}); + +describe("Different Methods of Expect Block",function() { + it("Returns even or optional ", function() { + expect(this.someClass.evenOrOdd()).toBe("even"); + }); +}); +``` + +> ***Write Minimum Passable Tests*** + +If appropriate, use Jasmine's built-in matchers (such as toContain, jasmine.any, jasmine.stringMatching, ...etc) to compare arguments and results. You can also create your own matcher via the asymmetricMatch function. + +```typescript +describe('Array.prototype', function() { + describe('.push(x)', function() { + beforeEach(function() { + this.initialArray = []; + + this.initialArray.push(1); + }); + + it('appends x to the Array', function() { + expect(this.initialArray).toContain(1); + }); + }); +}); +``` + +> ***Naming convention*** + +```txt +"**/?(*.)+(spec|test).[j|t]s(x)" + +//example names for javascript file +MyTests.test.js +MyTests.spec.js + +//example names for typescript file +MyTest.test.ts +MyTest.spec.ts +``` + +### FAQ diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Jasmine Spies.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Jasmine Spies.md new file mode 100644 index 000000000..1ab5a14f5 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Jasmine Spies.md @@ -0,0 +1,51 @@ +# Jasmine Spies + +## Overview + +A Spy is a feature that allows you to simulate the behavior of existing code and track calls to it back. It’s used to mock a function or an object. + +## Table Of Contents + +1. [createSpy()](#createspy) +2. [createSpyObj()](#createspyobj) + +### createSpy() + +Can be used when there is no function to spy on. Takes two arguments - name of the Service, method we want to mock + +```typescript +let testDouble = jasmine.createSpy("Name holder.", "method"); +``` + +### createSpyObj() + +createSpyObj() creates a mock object that will spy on one or more methods. It returns an object that has a property for each string that is a spy. It takes as first argument the name of a Service and as a second an array of strings of all the methods that we want to mock. + +```typescript +let testDouble = jasmine.createSpyObj("Name holder. Same as the type, in this case T", ["Array of strings with all functions that will be overwritten"]); +``` + +```typescript +describe("ApiCall", () => { + it('should do an api call', function () { + const restHostTestDouble = jasmine.createSpyObj("RESTHost", ["createRequest"]); + + const restRequestTestDouble = jasmine.createSpyObj("RESTRequest", ["execute"]); + + // Properties mock + const restResponseTestDouble = jasmine.createSpyObj("RESTResponse", [], {contentAsString: JSON.stringify({test: 2})}); + + restHostTestDouble.createRequest.and.returnValue(restRequestTestDouble); + restRequestTestDouble.execute.and.returnValue(restResponseTestDouble); + + const restHostExample = new RestHostExample(restHostTestDouble); + + const response = restHostExample.doApiCall(); + + expect(response.test).toBe(2); + expect(restHostTestDouble.createRequest).toHaveBeenCalledTimes(1); + expect(restHostTestDouble.createRequest).toHaveBeenCalledWith("GET", "/api/v1/test", ""); + expect(restRequestTestDouble.execute).toHaveBeenCalledTimes(1); + }); +}) +``` diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Test Helpers.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Test Helpers.md new file mode 100644 index 000000000..698d15d94 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/General/Testing/Test Helpers.md @@ -0,0 +1,13 @@ +# Test Helpers + +## Overview + +Helpers are testing files. Naming convention is - filename.helper.ts . They are compiled, can be used in testing, no code coverage and will not be pushed to vRO. Mocks are defined in Helper files. + +## Table Of Contents + +1. [Known Issues](#known-issues) + +### Known Issues + +Helper files must be located in any folder under `src/`, recommended place is `src/tests/helpers`. diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/Operations/Building.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/Operations/Building.md new file mode 100644 index 000000000..69df68c24 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/Operations/Building.md @@ -0,0 +1,30 @@ +[//]: # (DEFAULT TEMPLATE, Used if no others match) + +[//]: # (Remove Comments when you are done) +[//]: # (What is this?) + +# Title + +[//]: # (Additional Information on the topic goes here) + +[//]: # (What will you learn) +[//]: # (Optional) + +## Overview + +[//]: # (Internal navigation) +[//]: # (Navigational links may have a short description after them separated by a `-`) + +## Table Of Contents + +1. [Section](#section) + +[//]: # (Fill As many of these as you need. Use h4 and further here, do not include h1s, h2s or h3s.) + +### Section + +[//]: # (Optional Section) +[//]: # (## Previous:) + +[//]: # (Optional Section) +[//]: # (## Next:) diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/Operations/Pushing.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/Operations/Pushing.md new file mode 100644 index 000000000..69df68c24 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/Operations/Pushing.md @@ -0,0 +1,30 @@ +[//]: # (DEFAULT TEMPLATE, Used if no others match) + +[//]: # (Remove Comments when you are done) +[//]: # (What is this?) + +# Title + +[//]: # (Additional Information on the topic goes here) + +[//]: # (What will you learn) +[//]: # (Optional) + +## Overview + +[//]: # (Internal navigation) +[//]: # (Navigational links may have a short description after them separated by a `-`) + +## Table Of Contents + +1. [Section](#section) + +[//]: # (Fill As many of these as you need. Use h4 and further here, do not include h1s, h2s or h3s.) + +### Section + +[//]: # (Optional Section) +[//]: # (## Previous:) + +[//]: # (Optional Section) +[//]: # (## Next:) diff --git a/docs/versions/v3.0.0/Components/Archetypes/typescript/README.md b/docs/versions/v3.0.0/Components/Archetypes/typescript/README.md new file mode 100644 index 000000000..f08947010 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/typescript/README.md @@ -0,0 +1,24 @@ +# Typescript Archetype + +Typescript archetype used to compile and push typescript code to vRO. + +## Overview + +This archetype is used when you want to push code to vRO. It supports configuration elements, resource elements, workflows, +actions, policy templates, native content, types, etc. + +It allows you to write unit tests and has embedded code coverage + +## Navigation + +1. [Getting Started](General/Getting%20Started.md) +2. [Core Concepts](General/Core%20Concepts.md) +3. Operations + * [Building](Operations/Building.md) + * [Pushing](Operations/Pushing.md) +4. Components + * [Config](Components/Config.md) + * [Policies](Components/Policy.md) +5. Testing + * [Code Coverage](General/Testing/Code%20Coverage.md) +6. [Known Issues](General/Known%20Issues.md) diff --git a/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Components/Blueprints.md b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Components/Blueprints.md new file mode 100644 index 000000000..ff9267cdd --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Components/Blueprints.md @@ -0,0 +1,63 @@ +# Blueprints + +Blueprint (aka `Cloud Templates`) architects build Software components, machine blueprints, and custom XaaS blueprints and assemble those components into the blueprints that define the items users request from the catalog. + +## Table Of Contents + +1. [Structure](#structure) - how are blueprints exported and what does each file mean? +2. Operations + 1. [Importing](#importing) blueprints to vRA +3. [Known Issues](#known-issues) + +### Structure + +Below is an example structure of a blueprint export. + +Example `content.yaml` + +```yaml +blueprint: + - Example Blueprint +# ... +``` + +Structure + +```ascii +src/ +├─ main/ +│ ├─ resources/ +│ │ ├─ blueprints/ +│ │ │ ├─ Example Blueprint/ +│ │ │ │ ├─ content.yaml +│ │ │ │ ├─ details.json +│ │ │ │ ├─ versions.json +``` + +Each blueprint will be placed in a different folder. + +- `content.yaml` contains the exported code from the blueprint's canvas. +- `details.json` contains metadata information +- `versions.json` contains version information. Note that this is just the metadata, for now [the version history is not preserved](#version-history-gets-lost). + +### Importing + +When importing a blueprint, it is matched by its `name`. If there is a blueprint with the same name on the server, an update will be performed. Otherwise, the blueprint will be created instead. + +Also when importing an already existing blueprint, we will check for any differences between local copy and server copy. If there are differences, a new version will be released. New version is determined by the already existing versions. If a patter of MAJOR.MINOR.PATCH is detected, vRBT will try to continue the numbering, otherwise a date formatted version is released. + +#### Version Management + +By default all versions that are not the latest one will be unreleased. + +To control this behavior you can set: + +```xml +false +``` + +### Known Issues + +#### Version history gets lost + +This is known and currently there is no workaround for this. diff --git a/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Components/Content Policies.md b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Components/Content Policies.md new file mode 100644 index 000000000..7f000b570 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Components/Content Policies.md @@ -0,0 +1,200 @@ +# Content Policies + +There are 6 types of content policies: + +- Approval +- Content Sharing +- Day 2 Actions +- Deployment Limit +- Lease +- Resource Quota + +## Table Of Contents + +1. [Structure](#structure) +2. [Operations](#operations) + 1. [Exporting](#exporting) - how are policies exported from a vRa + 2. [Importing](#importing) importing policies to vRA +3. [Known Issues](#known-issues) + +### Structure + +Below is an example structure of content policies export. + +Example `content.yaml` + +```yaml +policy: + approval: + - example policy + content-sharing: + - example policy + day2-actions: + - example policy + deployment-limit: + - example policy + lease: + - example policy + resource-quota: + - example policy + +# ... +``` + +Structure + +```ascii +src/ +├─ main/ +│ ├─ resources/ +│ │ ├─ policies/ +│ │ │ ├─ approval/ +│ │ │ │ ├─ examplePolicy.json +│ │ │ ├─ content-sharing/ +│ │ │ │ ├─ examplePolicy.json +│ │ │ ├─ day2-actions/ +│ │ │ │ ├─ examplePolicy.json +│ │ │ ├─ deployment-limit/ +│ │ │ │ ├─ examplePolicy.json +│ │ │ ├─ lease/ +│ │ │ │ ├─ examplePolicy.json +│ │ │ ├─ resource-quota/ +│ │ │ │ ├─ examplePolicy.json +``` + +### Operations + +Operations are invoked on policies based on filtering from content.yml file, according to the following rules: + +- Empty array [] - nothing is imported/exported. +- List of items - the given items are imported/exported. If they are not present on the server an Exception is thrown. +- Null (nothing given) - everything is being imported/exported. + +#### Importing + +When importing policies, files are read form the filesystem, and the content.yml filter is by filename. All non-hidden files are read from the folder, and if the name of the file, without the extension matches the list in content.yml, the policy will be imported. The filename is only important for filtering. Actual policy fields are read from the file contents. If there is a policy with the same id on the server, an update will be performed. Otherwise, the policy will be created instead, using the same id, that is found in the file. + +##### Content Sharing Polices Import + +If project name is is defined as a *scope* proprty in the content sharing JSON file it will be used as a project scope during push , hence allowing more granular content sharing across different projects. If the *scope* property is not defined then the project id defined in the settings.xml configuration file will be used. + +If a organization name is defined as *organization* property in the content sharing JSON file then it will be used as organization of the content sharing policy, otherwise the organization defined in the settings.xml file will be used. The following policy types can be used during import: + +1. Content source policies. +2. Catalog item policies. +3. Combined policies (that contain catalog items and content sources). + +The name of the content source(s) and catalog item(s) in the file are stored in the JSON file, hence if they are present on the target system the policy can be imported correctly during subsequent push. + +#### Exporting + +When exporting a policy, a json file will be created on the filesystem. The filename will be the policyName[-index].json. +Index will be added only if there are multiple policies with the same name. + +##### Content Sharing Polices Export + +The scope and organization of the content sharing policy will be exported as *scope* and *organization* properties in the output JSON file(s). The project name will be used as as *scope* parameter and organization name will be used as a *organization* parameter. The following policy types can be created on the target system and they will be exported as well: + +1. Content source policies. +2. Catalog item policies. +3. Combined policies (that contain catalog items and content sources). + +The catalog items and content source policies will be stored with their names in the output JSON file. + +#### Content Sharing Polices Examples + +Example content sharing policy JSON file with scope / organization parameters. + +```JSON +{ + "id": "1", + "name": "contentSharingPolicy", + "typeId": "com.vmware.policy.catalog.entitlement", + "projectId": "1", + "scope": "projectId1", + "organization": "organization1", + "enforcementType": "HARD", + "description": "TEST", + "definition": { + "entitledUsers": [ + { + "items": [ + { + "name": "Content Source 1", + "type": "CATALOG_SOURCE_IDENTIFIER" + }, + { + "name": "Content Source 2", + "type": "CATALOG_SOURCE_IDENTIFIER" + }, + { + "name": "Catalog Item 1", + "type": "CATALOG_ITEM_IDENTIFIER" + }, + ], + "userType": "USER", + "principals": [ + { + "type": "PROJECT", + "referenceId": "" + } + ] + } + ] + } +} +``` + +Example content sharing policy JSON file without scope / organization parameters. + +```JSON +{ + "id": "1", + "name": "contentSharingPolicy", + "typeId": "com.vmware.policy.catalog.entitlement", + "projectId": "1", + "orgId": "1", + "enforcementType": "HARD", + "description": "TEST", + "definition": { + "entitledUsers": [ + { + "items": [ + { + "name": "Content Source 2", + "type": "CATALOG_SOURCE_IDENTIFIER" + }, + { + "name": "Content Source 3", + "type": "CATALOG_SOURCE_IDENTIFIER" + }, + { + "name": "Catalog Item 4", + "type": "CATALOG_ITEM_IDENTIFIER" + }, + ], + "userType": "USER", + "principals": [ + { + "type": "PROJECT", + "referenceId": "" + } + ] + } + ] + } +} +``` + +### Known Issues + +Re-Creating Deleted policy. +If you delete a policy, and then try to re-import it immediately, the import command will not fail, however, the policy will not be created. +After a certain delay, the policy can be re-created again via vrealize:push. +"Open bug: [VRAE-61849]" + +Here are two approaches to prevent this from happening: + +- **Do not delete policies before re-importing them.** This approach will only work if you do not need to change some properties like projectId. + +- **Remove policy ids from JSON files.** After successful import, do a export to get the new policyIds in the JSON files again. This approach will only work if you are exporting and importing from a single site. If you are exporting from SiteA to SiteB regularly, this may lead to policy duplicates. diff --git a/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Components/Custom Resources.md b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Components/Custom Resources.md new file mode 100644 index 000000000..8d0dff59c --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Components/Custom Resources.md @@ -0,0 +1,17 @@ +# Custom Resources + +They are items that can be used in the Blueprints/Cloud Templates when the existing Resource Types are not enough. + +## Overview + +Custom Resources are items that are defined inside of Cloud Assembly. They extend the capabilities of Cloud Templates by giving you the ability to define your own Resource, that calls either a vRO Workflow or an ABX Action (in the latest version of vRA). Custom Resources are defined in the `content.yaml` file under `custom-resource` ([See content.yaml](../General/Content.md)). + +## Table Of Contents + +1. [Known Issues](#known-issues) + +### Known Issues + +#### Updating A Custom Resource When In Use By Deployment + +When we try to update a CR that is in use by a deployment and if the deletion fails, now we will attempt to update the CR by pre-fetching it's ID. Once we have the ID, we would remove it from the CR and re-assigned it again before the importing process is initiated. This would allow us to create an updated CR that would be imported to vRA no matter if it is used by a deployment. However, update capabilities are limited and may not allow you to update all fields. diff --git a/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Content.md b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Content.md new file mode 100644 index 000000000..f948e0e5b --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Content.md @@ -0,0 +1,91 @@ + +# Content + +## Overview + +The vRA 8.x elements that you want to work with are described in the `content.yaml` + +## Table Of Contents + +1. [Content.yaml](#contentyaml) + +### Content.yaml + +By default the `content.yaml` looks like this. + +```yaml +blueprint: +subscription: +custom-resource: +resource-action: +catalog-entitlement: +catalog-item: +content-sources: +property-group: +``` + +#### Content Filtering + +Contents are exported by different rules. + +#### Import Rules for content types + +- Empty array [] - nothing is imported +- List of items - the given items are imported. If they are not present on the server an Exception is thrown. +- Null (nothing given) - everything is being imported + - blueprints + - catalog-item + - content-source + - custom-resource + - catalog-entitlement + - property-group + - subscription + - policies + +#### Export Rules for content types + +- Empty array [] - nothing is exported +- List of items - the given items are exported. If they are not present on the server an Exception is thrown. +- Null (nothing given) - everything is being exported + - blueprints + - catalog-item + - content-source + - custom-resource + - catalog-entitlement + - property-group + - subscription + - policies + +#### Examples + +Example of `content.yaml` file. + +```yaml +blueprint: # will export all +subscription: # will export all +catalog-item: # export according to filter + - Project Blueprints__WindowsVM + - Project Blueprints__LinuxVm + - Main Workflows__ConfigureVM +custom-resource: # will export all +resource-action: # will export all +property-group: # export according to filter + - memory +catalog-entitlement: # export according to filter + - Content source entitlement +content-source: # export according to filter + - Project Blueprints + - Main Workflows + - Utility Workflows + - Project Abx Actions + - Project Code Stream pipelines +policy: # export according to filter + approval: [] + content-sharing: + - cs policy 1 + - cs policy 2 + day2-actions: [] + deployment-limit: [] + lease: [] + resource-quota: [] +``` diff --git a/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Core Concepts.md b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Core Concepts.md new file mode 100644 index 000000000..07576d0da --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Core Concepts.md @@ -0,0 +1,72 @@ +# Core Concepts + +Laid out are some Core Concepts to follow when working with vRA 8.x ( vRA-NG ) archetype. + +## Overview + +vRA-NG archetype uses a pull and push approach to handling data. + +## Table Of Contents + +1. [Data Handling](#data-handling) +2. [ID handling](#id-handling) +3. [Single Project And Organization](#single-project-and-single-organization) +4. [Blueprint Versioning](#blueprint-versioning) + +### Data Handling + +All data that needs to be exported from vRA is defined in the `content.yaml` file ([read more here](Content.md)). The tool respects configuration in manifest when doing `vra-ng:pull` for the given objects: + +- blueprints +- catalog-item +- content-source +- custom-resource +- catalog-entitlement +- property-group +- subscription +- policies + - approval + - content-sharing + - day2-actions + - deployment-limit + - lease + - resource-quota + +It will throw an error if the given entities are not on the server. + +All the data exported will be imported when running `vrealize:push`! Keep in mind that the `content.yaml` will not be taken into consideration. + +### ID handling + +Relying on ids exported by Build Tools for VMware Aria should not happen. Build Tools for VMware Aria will remove where needed such ids or in some cases data will be fetched from the remote server, modified in flight and pushed to the server ( in cases where an import is needed ). + +### Single Project And Single Organization + +When working with vRA-NG archetype, each generated archetype is intended to work with **only one project and one organization**. In a case where more are needed, you must generate multiple archetypes. + +### Blueprint Versioning + +When pushing a blueprint to a vRA server that contains previously released blueprint with the same name as the one being pushed, a new version will be created and released in order to maintain the intended state. A new version will *not* be created if the content of the blueprint has not been modified since the latest released version in order to avoid unnecessary versioning. + +If there's a custom form associated with the blueprint being imported and there's no previously released version, an initial blueprint version (1) will be created and released in order to import the custom form. + +When creating a new version in the above-described cases, the new version will be auto-generated based on the latest version of the blueprint. The following version formats are supported with their respective incrementing rules: + +| Latest version | New version | Incrementing rules | +|----------------|---------------------|------------------------------------------------------------| +| 1 | 2 | Increment major version | +| 1.0 | 1.1 | Major and minor version - increment the minor | +| 1.0.0 | 1.0.1 | Major, minor and patch version - incrementing the patch | +| 1.0.0-alpha | 2020-05-27-10-10-43 | Arbitrary version - generate a new date-time based version | + +### Catalog Items Custom Forms + +The catalog items in the vRA Service Broker consists of different type of content sources - Blueprint, Extensibility Actions, Pipelines, Workflows and AWS CloudFormation Template. As with the 8.12 release, the catalog items custom forms can be versioned. For all types, the same concepts replies - *only current versions for custom forms are de-serializing/serializing.* + +Blueprint type catalog items have different versions that corelate to the released versions of the Blueprints. Only the current version of the latest blueprint version is targeted. + +[//]: # (Optional Section) +[//]: # (## Previous:) + +[//]: # (Optional Section) +[//]: # (## Next:) diff --git a/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Getting Started.md b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Getting Started.md new file mode 100644 index 000000000..73320977d --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Getting Started.md @@ -0,0 +1,130 @@ +# Getting Started + +## Overview + +vRA 8.x projects are called vRA NG (New Generation) projects in **Build Tools for VMware Aria**. The new Maven Archetype that supports vRA 8.x content is *com.vmware.pscoe.vra-ng.archetypes*. It is a representation of vRA 8.x content into human friendly YAML and/or JSON format.The project consist of content descriptor and content container. + +- *Content Descriptor* defines what part vRA 8.x content will be part of this project - `content.yaml` +- *Content Container* holds the actual content representation -`./src` folder + +## Table Of Contents + +1. [Maven Archetype](#maven-archetype) +2. [Configuring settings xml](#configuring-m2settingsxml-to-work-with-vra-ng) + +### Maven Archetype + +**Build Tools for VMware Aria** provides ready to use project templates (*maven archetypes*). + +To create a new vRA 8.x project from archetype use the following command: + +```Bash +mvn archetype:generate \ + -DinteractiveMode=false \ + -DarchetypeGroupId=com.vmware.pscoe.vra-ng.archetypes \ + -DarchetypeArtifactId=package-vra-ng-archetype \ + -DarchetypeVersion= \ + -DgroupId=local.corp.it.cloud \ + -DartifactId=catalog +``` + +**Note**: *The specified should be minimum 2.4.11* + +#### Content Structure + +The result of this command will produce the following project file structure: + +```ascii +catalog +├── README.md +├── content.yaml +├── pom.xml +├── release.sh +└── src + └── main + └── blueprints + └── blueprint.yaml + └── content.yaml + └── versions.yaml + └── content-sources + └── source.json + └── property-group + └── property_group_name.json + └── catalog-items + └── forms + └── source name__workflow one name with custom form.json + └── source name__workflow one name with custom form__FormData.json + └── source name__workflow three name with custom icon and form.json + └── source name__workflow three name with custom icon and form__FormData.json + └── icons + └── source name__workflow two name with custom icon.png + └── source name__workflow three name with custom icon and form.png + └── source name__workflow one name with custom form.json + └── source name__workflow two name with custom icon.json + └── source name__workflow three name with custom icon and form.json + └── entitlements + └── Blueprint.yaml + └── Workflow.yaml + └── ABX Action.yaml + └── subscriptions + └── subscription.json + └── custom-resources + └── customResource.json + └── resource-actions + └── resourceAction.json + └── policy: + └── approval: + └── aprovalPolicy1.json + └── content-sharing: + └── contentSharingPolicy1.json + └── day2-actions: + └── day2ActionsPolicy1.json + └── deployment-limit: + └── deploymentLimitPolicy1.json + └── lease: + └── leasePolicy1.json + └── resource-quota: + └── resourceQuotaPolicy1.json + + +``` + +Content Descriptor is implemented by content.yaml file with the following defaults. + +**Note**: *vRA NG Project supports only content types outlined into content descriptor.* + +### Configuring ~/.m2/settings.xml to work with vRA-NG + +The following need to be added to the profile that you intend to use: + +```xml + + + + example.vra.url.com + console.cloud.vmware.com + http://proxy.host:80 + 443 + administrator + someSecurePassword + {tenant} + {project+name} + {org+name} + {refresh+token} + true|false + {vro+integration+name} + +``` + +- `vrang.refresh.token` - will use the given refresh token instead of credentials. + + **Note:** this will take precedence over +credentials. + +- `vrang.bp.unrelease.versions` - Defaults to `true`. Controls whether old versions of a blueprint sould be unreleased. + +- `vrang.data.collection.delay.seconds` - Delay in seconds to wait for vRA data collection to pass before importing data. Can also be passed as an interactive parameter `-Dvrang.data.collection.delay.seconds=600`. useful when Dynamic types and custom resources are used in the projects and vRO content is imported, however vRA needs to then retrieve it in order to be able to create the custom Resource and use the Create/Delete Workflows. This only happens after a short delay and the vRA data collector scrapes vRO. Defaults to no delay. + +#### Organizations + +`vrang.org.name` needs to be specified. The `vra-ng` project is scoped to a single organization. diff --git a/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Known Issues.md b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Known Issues.md new file mode 100644 index 000000000..b718f04e2 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/General/Known Issues.md @@ -0,0 +1,14 @@ +# Known Issues + +A list of known vRA 8.x archetype issues + +## Table Of Contents + +1. [All Local Data Is Pushed](#all-local-data-is-pushed-to-vra) + +### All local data is pushed to vRA + +This is not a bug, but a feature. Reference: [1][1] | [2][2] + +[1]: Core%20Concepts.md#data-handling "Data Handling" +[2]: ../Operations/Pushing.md#usage "Pushing" diff --git a/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Operations/Pulling.md b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Operations/Pulling.md new file mode 100644 index 000000000..5b746b137 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Operations/Pulling.md @@ -0,0 +1,19 @@ +# Pulling + +Maven command for pulling vRA 8.x Content + +## Overview + +When working on a vRA 8.x project, you mainly make changes on a live server using the vRA Portal (Service Broker, Cloud Assembly, etc.) and then you need to capture those changes in the maven project on your filesystem to be able to store the content, track changes, collaborate, etc. + +## Table Of Contents + +1. [Usage](#usage) + +### Usage + +To support this use case, the toolchain comes with a custom goal `vra-ng:pull`. The following command will `pull` the content outlined into *Content Descriptor* file to the current project from a specified server and expand its content in the local filesystem overriding any local content: + +```bash +mvn vra-ng:pull -P{profile} +``` diff --git a/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Operations/Pushing.md b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Operations/Pushing.md new file mode 100644 index 000000000..4b0ae4987 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/Operations/Pushing.md @@ -0,0 +1,21 @@ +# Pushing + +Maven command for pushing vRA 8.x Content + +## Overview + +This will push all local content from `./src` folder to the remote vRA Server for the given profile. + +## Table Of Contents + +1. [Usage](#usage) + +### Usage + +To deploy the code developed in the local project or checked out from source control to a live server, you can use the `vrealize:push` command. + +> **Note**: This ignores `content.yaml` + +```bash +mvn package vrealize:push -P{profile} +``` diff --git a/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/README.md b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/README.md new file mode 100644 index 000000000..b198c8a2c --- /dev/null +++ b/docs/versions/v3.0.0/Components/Archetypes/vRA 8.x/README.md @@ -0,0 +1,32 @@ +# vRA 8.x Archetype + +vRA 8.x archetype used to pull and push content from/to vRA. + +## Overview + +This archetype is used when you want to pull and push content to vRA. The content you want to pull is defined in `content.yaml`. All exported content goes to `./src`. + +Supported content: + +- `blueprint` +- `subscription` +- `custom-resource` +- `catalog-entitlement` +- `catalog-item` +- `content-sources` +- `property-group` + +This Archetype is also known as `vRA-NG` (which stands for **vR**ealize **A**utomation-**N**ew **G**eneration). + +## Navigation + +1. [Getting Started](General/Getting%20Started.md) +2. [Core Concepts](General/Core%20Concepts.md) +3. Operations + - [Pulling](Operations/Pulling.md) + - [Pushing](Operations/Pushing.md) +4. [Content](General/Content.md) +5. Components + - [Custom Resources](Components/Custom%20Resources.md) + - [Blueprints](Components/Blueprints.md) +6. [Known Issues](General/Known%20Issues.md) diff --git a/docs/versions/v3.0.0/Components/Local/Common/Artifact Manager/Components/vRA 8.x/README.md b/docs/versions/v3.0.0/Components/Local/Common/Artifact Manager/Components/vRA 8.x/README.md new file mode 100644 index 000000000..18367b4e3 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Local/Common/Artifact Manager/Components/vRA 8.x/README.md @@ -0,0 +1,16 @@ +[//]: # (Used just for navigation, should not have any information beside very basic one) +[//]: # (If you need to add information to an entry it needs to be moved outside to a different folder) +[//]: # (Change the title) + +# Entry + +[//]: # (Additional Information on the entry goes here) + +[//]: # (What will you learn) + +## Overview + +[//]: # (External navigation) +[//]: # (Navigational links may have a short description after them separated by a `-`) + +## Navigation diff --git a/docs/versions/v3.0.0/Components/Local/Common/Artifact Manager/README.md b/docs/versions/v3.0.0/Components/Local/Common/Artifact Manager/README.md new file mode 100644 index 000000000..156b4e97d --- /dev/null +++ b/docs/versions/v3.0.0/Components/Local/Common/Artifact Manager/README.md @@ -0,0 +1,18 @@ +[//]: # (Used just for navigation, should not have any information beside very basic one) +[//]: # (If you need to add information to an entry it needs to be moved outside to a different folder) +[//]: # (Change the title) + +# Entry + +[//]: # (Additional Information on the entry goes here) + +[//]: # (What will you learn) + +## Overview + +[//]: # (External navigation) +[//]: # (Navigational links may have a short description after them separated by a `-`) + +## Navigation + +1. [vRA 8.X](Components/vRA%208.x) diff --git a/docs/versions/v3.0.0/Components/Local/Installer/.gitkeep b/docs/versions/v3.0.0/Components/Local/Installer/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/versions/v3.0.0/Components/Local/Installer/Components/Install Workflow.md b/docs/versions/v3.0.0/Components/Local/Installer/Components/Install Workflow.md new file mode 100644 index 000000000..be3673dd9 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Local/Installer/Components/Install Workflow.md @@ -0,0 +1,47 @@ +# Install workflow + +Most common case of today is to use Install workflow from PsCoE installer library. + +## Overview + +We can run Install workflow automatically and pass to this workflow all necessary parameters: + +- jsonString +- tags +- blacklist + +## Table Of Contents + +1. [vRO workflow run configuration](#vro-workflow-run-configuration) +2. [Installation/configuration values](#installationconfiguration-values) +3. [Installation/configuration file example](#installjson-example) + +### vRO workflow run configuration + +```ts +vro_run_workflow=true +vro_run_workflow_id=1490692845582937823496790834565483423 +vro_run_workflow_input_file_path=./install.json +vro_run_workflow_output_file_path=./output.json +vro_run_workflow_timeout=300 +``` + +### Installation/configuration values + +The installation/configuration values are passed as a json file (or yaml). Each root property of this file should have the name of an input value of the targeted workflow. + +### install.json example + +```JSON +{ + "tags": [ + "conn" + ], + "jsonString": { + "conn": { + "username": "admin", + "password": "p@$$w0rd" + } + } +} +``` diff --git a/docs/versions/v3.0.0/Components/Local/Installer/General/Core Concepts.md b/docs/versions/v3.0.0/Components/Local/Installer/General/Core Concepts.md new file mode 100644 index 000000000..28d86d651 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Local/Installer/General/Core Concepts.md @@ -0,0 +1,17 @@ +# Core Concepts + +## Overview + +We can run any existing workflow automatically at the end of the installation process and pass to the workflow all necessary parameters of different types. Supported types are: + +- string +- number +- boolean +- Array/string + +All other types except mentioned bellow will be send as parameter of type `string`. The most common case of today is to use this feature for running `Install` workflow. + +## Navigation + +1. Components + - [Example of using Install workflow](../Components/Install%20Workflow.md). diff --git a/docs/versions/v3.0.0/Components/Local/Installer/README.md b/docs/versions/v3.0.0/Components/Local/Installer/README.md new file mode 100644 index 000000000..31e8d89c0 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Local/Installer/README.md @@ -0,0 +1,12 @@ +# Installer + +## Overview + +We can run any existing workflow automatically at the end of the installation process and pass to the workflow all necessary parameters. + +## Navigation + +1. General + - [Core Concepts](General/Core%20Concepts.md) +2. Components + - [Example of using Install workflow](Components/Install%20Workflow.md) diff --git a/docs/versions/v3.0.0/Components/Local/Maven/.gitkeep b/docs/versions/v3.0.0/Components/Local/Maven/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/versions/v3.0.0/Components/Local/Packages/.gitkeep b/docs/versions/v3.0.0/Components/Local/Packages/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/versions/v3.0.0/Components/Local/Types/.gitkeep b/docs/versions/v3.0.0/Components/Local/Types/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/versions/v3.0.0/Components/Local/Typescript/polyglotpkg/.gitkeep b/docs/versions/v3.0.0/Components/Local/Typescript/polyglotpkg/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/versions/v3.0.0/Components/Local/Typescript/vro-scripting-api/.gitkeep b/docs/versions/v3.0.0/Components/Local/Typescript/vro-scripting-api/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/versions/v3.0.0/Components/Local/Typescript/vropkg/.gitkeep b/docs/versions/v3.0.0/Components/Local/Typescript/vropkg/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/versions/v3.0.0/Components/Local/Typescript/vropkg/README.md b/docs/versions/v3.0.0/Components/Local/Typescript/vropkg/README.md new file mode 100644 index 000000000..7fa5ce41c --- /dev/null +++ b/docs/versions/v3.0.0/Components/Local/Typescript/vropkg/README.md @@ -0,0 +1,27 @@ +[//]: # (Remove Comments when you are done) +[//]: # (What is this?) + +# vropkg + +Compiles javascript code to vRO native. + +[//]: # (What will you learn) +[//]: # (Optional) + +## Overview + +[//]: # (Internal navigation) + +## Table Of Contents + +1. [Section](#section) + +[//]: # (Fill As many of these as you need. Use h4 and further here, do not include h1s, h2s or h3s.) + +### Section + +[//]: # (Optional Section) +[//]: # (## Previous:) + +[//]: # (Optional Section) +[//]: # (## Next:) diff --git a/docs/versions/v3.0.0/Components/Local/Typescript/vrotest/General/How Does It Work.md b/docs/versions/v3.0.0/Components/Local/Typescript/vrotest/General/How Does It Work.md new file mode 100644 index 000000000..e6c68252c --- /dev/null +++ b/docs/versions/v3.0.0/Components/Local/Typescript/vrotest/General/How Does It Work.md @@ -0,0 +1,42 @@ +# How does it work + +Maintainer specific details on how vrotest works + +## Overview + +`vrotest` gets executed by different Maven Mojos depending on the project archetype. The Mojos of interest are: `maven/plugins/typescript/src/main/java/com/vmware/pscoe/maven/plugins/TypescriptTestMojo.java` + +## Table Of Contents + +1. [Process](#process) +2. [Where is the test bed created](#where-is-the-test-bed-created) +3. [How is testing configured](#how-is-testing-configured) +4. [How is the vRO Runtime injected](#how-is-the-vro-runtime-injected) +5. [How are test helpers used?](#how-are-test-helpers-used) +6. [Where are the code coverage files](#where-are-the-code-coverage-files) + +### Process + +When `mvn clean test` or other maven lifecycle command that calls `test`, the `TypescriptTestMojo` is going to get called. The mojo will execute vrotest with `build` and then with `run`. + +### Where is the test bed created? + +The testbed is created under `PROJECT_ROOT/target/vro-tests` + +### How is testing configured? + +Testing is configured by adding `.nycrc` file in the `vro-tests` folder to configure code coverage and `jasmine.json` to configure the jasmine test runner. + +### How is the vRO Runtime injected? + +The vRO Scripting Api/vRO Runtime is injected as a jasmine helper in the `vro-tests/helpers` folder. The runtime injects a bunch of intrinsic classes as globals. + +More information on Jasmine Helpers, read the official documentation [here](https://jasmine.github.io/pages/docs_home.html) + +### How are test helpers used? + +Test helpers are put in the same folder as the actions, giving you the ability to import them directly. vrotsc gives us the ability to specify the location, and even tho while packaging, they go to a different folder, during testing they go to the same folder + +### Where are the code coverage files? + +THe code coverage are located under `PROJECT_ROOT/target/vro-tests/coverage`. diff --git a/docs/versions/v3.0.0/Components/Local/Typescript/vrotest/General/Usage.md b/docs/versions/v3.0.0/Components/Local/Typescript/vrotest/General/Usage.md new file mode 100644 index 000000000..43e14726f --- /dev/null +++ b/docs/versions/v3.0.0/Components/Local/Typescript/vrotest/General/Usage.md @@ -0,0 +1,87 @@ +# Usage + +Provides detailed instructions on how to use vrotest + +## Overview + +The usage is divided in 2 steps + +1. `build` -> Builds the test bed +2. `run` -> Runs the unit tests + +If `mvn clean test` is run inside of the created project, build will be executed after which run will be called. + +## Table Of Contents + +1. [Building](#building) - how to build the testbed +2. [Running](#running) - how to run the tests + +[//]: # (Fill As many of these as you need. Use h4 and further here, do not include h1s, h2s or h3s.) + +### Building + +#### Usage + +`vrotest build [options]` + +#### CLI options + +The following commandline options are accepted when building: + +```txt + --actions Path to the vRO JavaScript folder. + --testHelpers Path to the vRO JavaScript test helpers folder. + --tests Path to the folder containing all tests. + --maps Path to the folder containing source maps when using TypeScript. + --resources Path to the folder containing vRO resources. + --configurations Path to the folder containing vRO configurations. + --dependencies Path to the folder containing dependent vRO packages. + --helpers Path to the folder containing vRO scripting API. + --ts-src Path to the original TypeScript code. + --ts-namespace Namespace for the TypeScript project e.g. com.example.myproject + --output Folder where testbed will be created. + --coverage-thresholds Defines the threshold (in %) for the test coverage. Tests will fail if coverage is below the threshold. + Format: :: + Types: + * all + * branches + * lines + * functions + * statements + --coverage-reports Specify test coverage reports to use. + Availale values: + * text + * html + * json + * clover + * cobertura + * lcov + * lcovonly + --per-file Code coverage per file bases. Set custom --coverage-thresholds, if any file in the project drops below those thresholds, the build will fail +``` + +#### Examples + +```bash +vrotest build --actions src --testHelpers src --tests test --output target/vro-test --coverage-thresholds 50:60:all,65:70:statements --coverage-reports text,html,lcovonly +``` + +### Running + +#### Usage + +```bash +vrotest run [testbed path] [options] +``` + +#### CLI options + +The following commandline options are accepted when running tests: + +```plaintext + --instrument Instrument code and generate code coverage reports. +``` + +#### Examples + +`vrotest run target/vro-test --instrument` diff --git a/docs/versions/v3.0.0/Components/Local/Typescript/vrotest/README.md b/docs/versions/v3.0.0/Components/Local/Typescript/vrotest/README.md new file mode 100644 index 000000000..a3a9647a5 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Local/Typescript/vrotest/README.md @@ -0,0 +1,12 @@ +# vrotest + +`vrotest` is a utility that is used to run jasmine tests on the client machine. + +## Overview + +`vrotest` is responsible for building a test bed, instrumenting it if needed, and running jasmine tests. It enables code coverage using istanbuljs. + +## Navigation + +1. [Usage](General/Usage.md) - how to use vrotest +2. [How does it work](General/How%20Does%20It%20Work.md) diff --git a/docs/versions/v3.0.0/Components/Local/Typescript/vrotsc/Components/Test Helpers.md b/docs/versions/v3.0.0/Components/Local/Typescript/vrotsc/Components/Test Helpers.md new file mode 100644 index 000000000..581b7c5cb --- /dev/null +++ b/docs/versions/v3.0.0/Components/Local/Typescript/vrotsc/Components/Test Helpers.md @@ -0,0 +1,50 @@ +# Test Helpers + +Test helpers are compiled to a different directory than the one specified for actions. + +## Overview + +`vrotsc` gives you the ability to specify a different directory for the test helpers. Usually these files need to be excluded from vRO packaging since they are used only for testing purposes. + +## Table Of Contents + +1. [How is a test helper defined?](#how-is-a-test-helper-defined) +2. [How is a test helper compiled?](#how-is-a-test-helper-compiled) +3. [Why is there no transformer file for a testHelper](#why-is-there-no-transformer-file-for-a-testhelper) +4. [How to import a test helper](#how-to-import-a-test-helper) + +### How is a test helper defined? + +A test helper is defined by following the pattern: `*.helper.[tj]s`. + +### How is a test helper compiled? + +Due to VROES limitations, during compilation, the file name is changed from : `example.helper.ts` to `example_helper.js`. VROES works in a way where all dots AFTER the final slash will be replaced with underscores (e.g. `com.vmware.pscoe.vrotsc.actions/test.helper` gets compiled to `com.vmware.pscoe.vrotsc.actions.test_helper` ). + +### Why is there no transformer file for a testHelper? + +A Test Helper is essentially an action. Where the test helper is put is decided inside the action transformer. + +### How to import a test helper? + +The same way you would another action. + +#### Example + +`test.helper.ts`: + +```typescript +export default function (){ + return Math.random(); +} +``` + +`example.ts`: + +```typescript +import testHelper from "./test.helper"; + +export default function () { + return testHelper(); +} +``` diff --git a/docs/versions/v3.0.0/Components/Local/Typescript/vrotsc/General/Usage.md b/docs/versions/v3.0.0/Components/Local/Typescript/vrotsc/General/Usage.md new file mode 100644 index 000000000..fb513751f --- /dev/null +++ b/docs/versions/v3.0.0/Components/Local/Typescript/vrotsc/General/Usage.md @@ -0,0 +1,58 @@ +# Usage + +Provides detailed instructions on how to use vrotsc + +## Overview + +`vrotsc` has only one command to run, with different options. Detailed instructions can be found below on the possible options as well as an example. + +## Table Of Contents + +1. [Running](#running) + +### Running + +#### Usage + +```bash +vrotsc [SRC_DIR] [OPTIONS] +``` + +#### CLI options + +The following commandline options are accepted: + +```plaintext + -h, --help Print this message. + -v, --version Print the compiler's version. + -p, --project Path to the tsconfig.json file to use. + --emitHeader Emit auto-generated header on top of each file. + --actionsOut Specify the output directory for actions. + --testHelpersOut Specify the output directory for test helpers. + --workflowsOut Specify the output directory for workflows. + --configsOut Specify the output directory for configuration elements. + --resourcesOut Specify the output directory for resource elements. + --testsOut Specify the output directory for tests. + --typesOut Specify the output directory for types. + --mapsOut Specify the output directory for source maps. + --actionsNamespace Specify actions namespace. + --workflowsNamespace Specify workflows namespace. +``` + +#### Examples + +```bash +vrotsc src \ + --actionsNamespace com.vmware.pscoe.example \ + --workflowsNamespace example \ + --files \ + --typesOut target/vro-types \ + --testsOut target/vro-sources/test/com/vmware/pscoe/example \ + --mapsOut target/vro-sources/map/com/vmware/pscoe/example \ + --actionsOut target/vro-sources/js/src/main/resources/com/vmware/pscoe/example \ + --testHelpersOut target/vro-sources/testHelpers/src/main/resources/com/vmware/pscoe/example \ + --workflowsOut target/vro-sources/xml/src/main/resources/Workflow \ + --policiesOut target/vro-sources/xml/src/main/resources/PolicyTemplate \ + --resourcesOut target/vro-sources/xml/src/main/resources/ResourceElement \ + --configsOut target/vro-sources/xml/src/main/resources/ConfigurationElement +``` diff --git a/docs/versions/v3.0.0/Components/Local/Typescript/vrotsc/README.md b/docs/versions/v3.0.0/Components/Local/Typescript/vrotsc/README.md new file mode 100644 index 000000000..4784eabb9 --- /dev/null +++ b/docs/versions/v3.0.0/Components/Local/Typescript/vrotsc/README.md @@ -0,0 +1,16 @@ +# vrotsc + +`vrotsc` is a utility used to transpile typescript/other code to vRO native code. + +## Overview + +`vrotsc` is responsible for transpiling all sorts of code to native vRO code. It works with actions, workflows, configurations, resource elements, native, declarations, policy templates and tests + +[//]: # (External navigation) +[//]: # (Navigational links may have a short description after them separated by a `-`) + +## Navigation + +1. [Usage](General/Usage.md) - how to use vrotsc +2. Components + - [Test Helpers](Components/Test%20Helpers.md) - Information on test Helpers diff --git a/docs/versions/v3.0.0/Components/README.md b/docs/versions/v3.0.0/Components/README.md new file mode 100644 index 000000000..6100c925b --- /dev/null +++ b/docs/versions/v3.0.0/Components/README.md @@ -0,0 +1,23 @@ +# Build Tools for VMware Aria Components + +Navigation to different components of the Toolchain + +## Overview + +The Components are divided in 2 types. + +1. Archetypes -> Project Archetype that Build Tools for VMware Aria can generate +2. Local -> Local developer-centric documentation on how different Components of Build Tools for VMware Aria work + +[//]: # (External navigation) + +## Navigation + +1. Archetypes + * [Typescript](./Archetypes/typescript) +2. Local + * [vrotsc](./Local/Typescript/vrotsc) + * [vrotest](./Local/Typescript/vrotest) + * [vropkg](./Local/Typescript/vropkg) + * [vro-scripting-api](./Local/Typescript/vro-scripting-api) + * [polyglotpkg](./Local/Typescript/polyglotpkg) diff --git a/docs/versions/v3.0.0/General/Cheatsheets/.gitkeep b/docs/versions/v3.0.0/General/Cheatsheets/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/versions/v3.0.0/General/Cheatsheets/abx-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/abx-plugin-arguments.md new file mode 100644 index 000000000..c4ff113de --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/abx-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'abx-package-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:abx-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:abx-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Cheatsheets/actions-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/actions-plugin-arguments.md new file mode 100644 index 000000000..fbc60bd43 --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/actions-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'o11n-actions-package-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:o11n-actions-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:o11n-actions-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Cheatsheets/bsc-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/bsc-plugin-arguments.md new file mode 100644 index 000000000..fe6a03249 --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/bsc-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'bsc-package-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:bsc-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:bsc-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Cheatsheets/cs-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/cs-plugin-arguments.md new file mode 100644 index 000000000..ff53a5aa3 --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/cs-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'cs-package-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:cs-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:cs-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Cheatsheets/polyglot-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/polyglot-plugin-arguments.md new file mode 100644 index 000000000..dcfc39cd9 --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/polyglot-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'o11n-polyglot-package-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:o11n-polyglot-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:o11n-polyglot-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Cheatsheets/ssh-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/ssh-plugin-arguments.md new file mode 100644 index 000000000..9de0360bd --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/ssh-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'ssh-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:ssh-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:ssh-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Cheatsheets/typescript-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/typescript-plugin-arguments.md new file mode 100644 index 000000000..7d7cb629f --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/typescript-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'o11n-typescript-package-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:o11n-typescript-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:o11n-typescript-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Cheatsheets/vcd-ng-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/vcd-ng-plugin-arguments.md new file mode 100644 index 000000000..d9640e860 --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/vcd-ng-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'vcd-ng-package-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vcd-ng-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vcd-ng-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Cheatsheets/vra-ng-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/vra-ng-plugin-arguments.md new file mode 100644 index 000000000..cf5cf1e01 --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/vra-ng-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'vra-ng-package-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vra-ng-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vra-ng-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Cheatsheets/vra-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/vra-plugin-arguments.md new file mode 100644 index 000000000..913df5090 --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/vra-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'vra-package-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vra-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vra-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Cheatsheets/vrealize-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/vrealize-plugin-arguments.md new file mode 100644 index 000000000..212e00853 --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/vrealize-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'vrealize-package-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vrealize-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vrealize-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Cheatsheets/vrli-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/vrli-plugin-arguments.md new file mode 100644 index 000000000..b675c9642 --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/vrli-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'vrli-package-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vrli-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vrli-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Cheatsheets/vrops-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/vrops-plugin-arguments.md new file mode 100644 index 000000000..c685f806e --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/vrops-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'vrops-package-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:vrops-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:vrops-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Cheatsheets/xml-plugin-arguments.md b/docs/versions/v3.0.0/General/Cheatsheets/xml-plugin-arguments.md new file mode 100644 index 000000000..b9e4017aa --- /dev/null +++ b/docs/versions/v3.0.0/General/Cheatsheets/xml-plugin-arguments.md @@ -0,0 +1,11 @@ +[ERROR] +[ERROR] groupId: 'com.vmware.pscoe.maven.plugins' +[ERROR] artifactId: 'o11n-xml-package-maven-plugin' +[ERROR] version: '2.43.1-SNAPSHOT': Plugin com.vmware.pscoe.maven.plugins:o11n-xml-package-maven-plugin:2.43.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact com.vmware.pscoe.maven.plugins:o11n-xml-package-maven-plugin:jar:2.43.1-SNAPSHOT +[ERROR] -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/docs/versions/v3.0.0/General/Core Concepts.md b/docs/versions/v3.0.0/General/Core Concepts.md new file mode 100644 index 000000000..205e90d9a --- /dev/null +++ b/docs/versions/v3.0.0/General/Core Concepts.md @@ -0,0 +1,23 @@ +# Core Concepts + +[//]: # (Additional Information on the topic goes here) + +[//]: # (What will you learn) + +## Overview + +[//]: # (Internal navigation) + +## Table Of Contents + +1. [Section](#section) + +[//]: # (Fill As many of these as you need. Use h4 and further here, do not include h1s, h2s or h3s.) + +### Section + +[//]: # (Optional Section) +[//]: # (## Previous) + +[//]: # (Optional Section) +[//]: # (## What's Next) diff --git a/docs/versions/v3.0.0/General/Examples/.gitkeep b/docs/versions/v3.0.0/General/Examples/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/versions/v3.0.0/General/Examples/README.md b/docs/versions/v3.0.0/General/Examples/README.md new file mode 100644 index 000000000..391157e9b --- /dev/null +++ b/docs/versions/v3.0.0/General/Examples/README.md @@ -0,0 +1,21 @@ +# Examples + +[//]: # (Additional Information on the topic goes here) + +[//]: # (What will you learn) +[//]: # (Optional) + +## Overview + +[//]: # (Internal navigation) + +## Table Of Contents + +1. [Section](#section) + +[//]: # (Fill As many of these as you need. Use h4 and further here, do not include h1s, h2s or h3s.) + +### Section + +[//]: # (Optional Section) +[//]: # (## Read Next:) diff --git a/docs/versions/v3.0.0/General/FAQ.md b/docs/versions/v3.0.0/General/FAQ.md new file mode 100644 index 000000000..a84596cd1 --- /dev/null +++ b/docs/versions/v3.0.0/General/FAQ.md @@ -0,0 +1,17 @@ +# Frequently Asked Questions + +[//]: # (Internal navigation) + +## Table Of Contents + +1. [Section](#section-one) + +[//]: # (Fill As many of these as you need. Use h4 and further here, do not include h1s, h2s or h3s.) + +### Section One + +[//]: # (Optional Section) +[//]: # (## Previous) + +[//]: # (Optional Section) +[//]: # (## What's Next) diff --git a/docs/versions/v3.0.0/General/Getting Started.md b/docs/versions/v3.0.0/General/Getting Started.md new file mode 100644 index 000000000..d670e4942 --- /dev/null +++ b/docs/versions/v3.0.0/General/Getting Started.md @@ -0,0 +1,19 @@ +# Getting Started + +Here you will find information on how to easily get onboarded working with Build Tools for VMware Aria. + +## Overview + +Build Tools for VMware Aria relies on a private artifact manager like JFrog Artifactory OSS ( no limitation to it being public, but possibly not desirable ). Here you will find instructions on how to setup such an environment. + +Build Tools for VMware Aria also has some local dependencies that need to be configured and we will talk about them as well. + +## Table Of Contents + +- [Prerequisites](./Getting%20Started/Prerequisites.md) +- [Setting Up Artifactory](./Getting%20Started/Setting%20Up%20Artifactory.md) +- [Setting Up Local Environment](./Getting%20Started/Setting%20Up%20Local%20Environment.md) + +## What's Next + +See [Prerequisites](./Getting Started/Prerequisites.md). diff --git a/docs/versions/v3.0.0/General/Getting Started/Prerequisites.md b/docs/versions/v3.0.0/General/Getting Started/Prerequisites.md new file mode 100644 index 000000000..937684dc4 --- /dev/null +++ b/docs/versions/v3.0.0/General/Getting Started/Prerequisites.md @@ -0,0 +1,50 @@ +# Prerequisites + +[//]: # (TODO: Update the links in the Use section after the files are moved) +[//]: # (TODO: More in Installation section?) +[//]: # (TODO: Replace all references of the setup-workstation.md to point to Prerequisites.md) + +## Overview + +Prerequisites for installation of Build Tools for VMware Aria. + +## Table Of Contents + +1. [Prerequisites](#prerequisites) +2. [Installation and Configuration](#installation-and-configuration) +3. [Usage](#usage) + +### Prerequisites + +- [vRealize Developer Tools](https://github.com/vmware/vrealize-developer-tools) (Optional) +- Java 17 +- Maven 3.5+ ([official installation guide](https://maven.apache.org/install.html)) +- NodeJS 16.x.x (use `nvm` if possible) [official downloads](https://nodejs.org/en/download/releases/) +- Development vRealize Automation Tenant configured with development vRealize Orchestrator + - Tenant administrator user + - Workstation can access vRA server on port 443 +- Development vRealize Orchestrator + - vRO administrator user + - vRO appliance root user + - Workstation can access vRO server on ports [443 or 8281], 8283 +- Powershell Core for Linux/MacOS if working with the polyglot powershell archetype. + - [MacOS]( https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos ) + - [Linux]( https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-linux ) + +### Installation and Configuration + +#### Configuration + +- [Build Tools for VMware Aria Build System](Setting%20Up%20Artifactory.md) + +### Usage + +- [vRO Projects](use-workstation-vro-project.md) +- [vRA Projects](use-workstation-vra-project.md) +- [vRA NG Projects](use-workstation-vra-ng-project.md) +- [ABX Projects](use-workstation-abx-project.md) +- [vROps Projects](use-workstation-vrops-project.md) + +## What's Next + +See [Setting Up Artifactory](./Setting%20Up%20Artifactory.md). diff --git a/docs/versions/v3.0.0/General/Getting Started/Setting Up Artifactory.md b/docs/versions/v3.0.0/General/Getting Started/Setting Up Artifactory.md new file mode 100644 index 000000000..b61006669 --- /dev/null +++ b/docs/versions/v3.0.0/General/Getting Started/Setting Up Artifactory.md @@ -0,0 +1,107 @@ +# Setting Up Artifactory + +[//]: # (TODO: Modernize - validate or adapt content) +[//]: # (TODO: Replace all references of the setup-platform.md to point to Setting Up Artifactory.md) + +Here you will learn the needed steps on how to configure the artifactory + +## Overview + +## Table Of Contents + +1. [Configuring Artifactory](#configuring-artifactory) +2. [Configure permissions for local cache for the Anonymous user](#configure-permissions-for-local-cache-for-the-anonymous-user) +3. [Uploading toolchain artifacts to Artifactory](#uploading-toolchain-artifacts-to-artifactory) +4. [Upload vRO artifacts to Artifactory (if needed)](#upload-vro-artifacts-to-artifactory-if-needed) + +### Configuring Artifactory + +Note that the libs-release, libs-snapshot etc. are the default Maven repositories created by JFrog's **Quick Setup** shown at first login. This guide assumes that this **Quick Setup** has been executed. + +1. Create a local repository in artifactory to contain the toolchain artifacts, e.g. **vrealize-build-tools** and add it to the virtual release repository (e.g. **libs-release**) +2. Create a remote repository and configure the maven central public repository ([https://repo1.maven.org/maven2/](https://repo1.maven.org/maven2/)). Add it to the virtual release repository (e.g. **libs-release**). This is needed so any public dependencies can be downloaded as well. + +### Configure permissions for local cache for the Anonymous user + +1. Login into Artifactory with admin privileges +2. Navigate to **Admin > Permissions** +3. Click the **New** button +4. Add a name for the permissions (for example: Anonymous Cache) +5. Add all repositories into the **Selected Repositories** list view +6. Skip the groups section +7. On the **Users** section add **Anonymous** user +8. Give **Deploy/Cache, Annotate, Read** permissions +9. Click **Save & Finish** + +### Uploading toolchain artifacts to Artifactory + +#### Via Cli + +1. Unzip **iac-maven-repository.zip** found at **artifacts/maven/** path relative to the root of the toolchain bundle to a folder, e.g. **import/** +2. Go to the directory where you have unzipped the archive. Your working directory should contain the "com" folder and the **archetype-catalog.xml** file, e.g.: + + ```bash + root@photon-G6H8GzV2j [ ~/toolchain/import ]# ls + archetype-catalog.xml com + ``` + +3. Run `jfrog config add` to configure your local environment with the artifactory server. +4. Then, run the following command + + ```jfrog rt u --recursive=true --flat=false ./* vrealize-build-tools``` + + where **vrealize-build-tools** should be the name of the repository you've created at step #1 in [Configuring Artifactory](#configuring-artifactory). + +5. Examine the output of the command. It should look something similar to this: + + ```bash + Uploading artifact: /path/to/artifact/some-artifact.jar + { + "status": "success", + "totals": { + "success": 1, + "failure": 0 + } + } + ``` + + **Note:** There is a chance that not all of the artifacts will be uploaded (you will be getting a lot of errors). If this happens, you can re-run the command. + +#### Via UI + +> **FINISH** + +### Upload vRO artifacts to Artifactory (if needed) + +First you need access to a supported version of vRO appliance to get the vRO dependencies for the toolchain in your artifactory. + +1. Get all vRO artifacts on the local machine. Run: + + ```bash + wget --no-check-certificate --recursive --no-parent --reject "index.html*" https://:/vco-repo/com/ + wget --no-check-certificate --recursive --no-parent --reject "index.html*" https://:/vco-repo/com/vmware/o11n/mojo/pkg/ + wget --no-check-certificate --recursive --no-parent --reject "index.html*" https://:/vco-repo/com/vmware/o11n/pkg + ``` + +2. Create a new local repository (e.g. **vro-local**) and add it to the virtual release repository (e.g. **libs-release**). + +3. Navigate to the root folder of the downloaded repository on the local filesystem - at the same level as the **com** directory. E.g.: + + ```bash + root@photon-G6H8GzV2j [ ~/192.168.71.1/vco-repo ]# ls + com + ``` + +4. Import the vro artifacts to the selected repository, for example: + + ```bash + jfrog rt u --recursive true --flat false ./* vro-local + ``` + +## Previous + +See [Prerequisites](./Prerequisites.md). + +## What's Next + +See [Setting Up Local Environment](./Setting%20Up%20Local%20Environment.md). diff --git a/docs/versions/v3.0.0/General/Getting Started/Setting Up Local Environment.md b/docs/versions/v3.0.0/General/Getting Started/Setting Up Local Environment.md new file mode 100644 index 000000000..96cd79f00 --- /dev/null +++ b/docs/versions/v3.0.0/General/Getting Started/Setting Up Local Environment.md @@ -0,0 +1,305 @@ +# Setting Up Local Environment + +[//]: # (TODO: Modernize - validate or adapt content) + +[//]: # (TODO: Replace all references of the setup-workstation-maven.md to point to Setting Up Local Environment.md) + +Here you will learn the needed steps on how to configure your environment + +## Overview + +**Build Tools for VMware Aria** are built on top of the Maven build automation ecosystem. vRealize Automation and vRealize Orchestrator content are described as Maven Project Object Models which enable huge amount of options like automated build going through phases like validate, compile, test, package, verify, install and deploy; dependency management, versioning, etc. + +## Table Of Contents + +1. [Installation](#installation) +2. [Configuration](#configuration) + 1. [Java Keystore](#java-keystore) + 2. [Global Configuration](#global-configuration-settingsxml) + 3. [Signing](#signing) + 4. [Bundling](#bundling) + 5. [Security](#security) + 6. [Timeouts](#timeouts) + 7. [Delays](#delays) + 8. [Checksums](#checksums) + +### Installation + +#### Prerequisites + +- Build Tools for VMware Aria Platform + - [Build Tools for VMware Aria Platform](Setting%20Up%20Artifactory.md) ready to use + - Workstation can access Build Tools for VMware Aria Platform services +- Java 17 +- Maven 3.5+ ([official installation guide](https://maven.apache.org/install.html)) + +### Configuration + +There are several things that need to be in place before you can use the Build Tools for VMware Aria to work with vRO content. + +#### Java Keystore + +Java keystore is used for signing packages build time. + +#### Create private key and certificate + +The process creates an archive called **archetype.keystore-1.0.0** (artifact name + version) containing the generated files (**archetype.keystore**, **cert.pem**, **private_key.pem** ). The archive needs to be deployed on the artifact manager. + +```sh +mkdir -p ~/cert/archetype.keystore-1.0.0 +cd ~/cert/archetype.keystore-1.0.0 + +## Create the certificates and fill in the required country,state,location,organization details ... +openssl req -newkey rsa:2048 -new -x509 -days 3650 -keyout private_key.pem -out cert.pem +keytool -genkey -v -keystore archetype.keystore -alias _dunesrsa_alias_ -keyalg RSA -keysize 2048 -validity 10000 + +cd ~/cert +zip archetype.keystore-1.0.0.zip -r archetype.keystore-1.0.0 +``` +`Note:` Its very important to note that "Email" field should be EMPTY, otherwise the vRO import will break with 400 OK error + +`Note:` JKS is a propriatary format specific to the particular JVM provider. When running above commands, ensure the keytool used is the one under the JVM that Maven would use (check with `mvn -v`). + +#### Deploy the keystore artifact + +The artifact should be deployed to any path as long as the **settings.xml** file points to it. + +Example: +- artifact group ID: com.clientname.build +- artifact ID: archetype.keystore +- artifact version: 1.0.0 +- **keystorePassword** and **vroKeyPass** passwords need to be replaced with the values used during the key generation process above +- settings section: +```xml + + com.clientname.build + archetype.keystore + target/${keystoreArtifactId}-${keystoreVersion}/archetype.keystore + 1.0.0 + {{keystorePassword}} + target/${keystoreArtifactId}-${keystoreVersion}/private_key.pem + target/${keystoreArtifactId}-${keystoreVersion}/cert.pem + {{vroKeyPass}} + +``` + +#### Global Configuration (*settings.xml*) + +Firstly, you will need to configure Maven. + +There are a number of properties that must be set through profiles in the settings.xml file, as they are environment specific: + +- keystorePassword - Required. This is the password for the keystore used for signing vRO packages. +- keystoreLocation - Required. This is the location of the keystore. You can either hardcode a location on the machine executing the build. +- snapshotRepositoryUrl - Required. This is the url of the snapshot maven repository. +- releaseRepositoryUrl - Required. This is the url of the release maven repository. Could be the same as snapshotRepositoryUrl. + +The recommended approach is to keep a settings XML file under SCM to be used by developers and a modified version with credentials for the Artifactory deployed on the CI server directly (i.e. not accessible by everyone). + +Furthermore, in the example, bundling (i.e. should the bundle.zip be produced upon build) is moved to a separate profile and developers/CI can choose whether to create the bundle or not by including the "-Pbundle" command line argument to the maven invocation. + +```xml + + + + + {vro_username} + {native+maven+encrypted+pass} + corp-dev-vro + + + {vra_username} + {native+maven+encrypted+pass} + corp-dev-vra + + + + + packaging + + + + + com.vmware.pscoe.build + archetype.keystore + 2.0.0 + target/${keystoreArtifactId}-${keystoreVersion}/private_key.pem + target/${keystoreArtifactId}-${keystoreVersion}/cert.pem + VMware1! + + + + bundle + + false + + + + artifactory + + + false + central + central + http://{artifactory-hostname}/artifactory/{release_repository} + + + true + central-snapshots + central-snapshots + http://{artifactory-hostname}/artifactory/{snapshot_repository} + + + + + false + central + central + http://{artifactory-hostname}/artifactory/{release_repository} + + + true + central-snapshots + central-snapshots + http://{artifactory-hostname}/artifactory/{snapshot_repository} + + + + http://{artifactory-hostname}/artifactory/{release_repository} + http://{artifactory-hostname}/artifactory/{snapshot_repository} + + + + + corp-dev + + + {vro_host} + {vro_port} + {vro_username} + {vro_password} + corp-dev-vro + {basic|vra} + {auth_host} + {auth_port} + {refresh_token} + http://proxy.host:80 + {vro_tenant} + + {vra_host} + {vra_port} + {vra_tenant} + corp-dev-vra + {vra_username} + {vra_password} + + + + + artifactory + packaging + + +``` + +> **Note**: {vro_username} is usually taking the form of `username@domain`. For vRO8 embedded in vRA8 with BASIC for {vro_auth} it will be required that only `username` part is specified for successful authentication. + +#### Signing + +vRO packages are signed. In order to be able to use the toolchain, you have to have a keystore and configure it in the settings.xml file both for the developers and the CI. + +##### Keystore located on the building machine + +You must have the keystore file accessible on the machine and set the **keystoreLocation** and **keystorePassword** properties through the settings.xml. + +#### Bundling + +There is a built-in bundling capabilities that are described in a Maven profile. You can decide to not only package a vRO/vRA project, but also to create a `*-bundle.zip` with all its dependencies. This will create an archive with the following structure: + +```sh +vro/ # all vRO packages. If the current project is vRO, its package will be here as well. +vra/ # all vRA packages. IF the current project is vRA, its package will be here as well. +repo/ # JARs that comprise the bundle installer - a CLI tool that is capable of importing the whole bundle to a target environment. +bin/ # shells for invoking the bundle installer CLI. + installer # Bash executable version of the installer for Linux/Unix/macOS + intasller.bat # Batch exectable version of the installer for Windows +``` + +The bundle is produced as a separate artifact during `mvn package`. To produce it, you need to add the `-Pbundle-with-installer` profile: + +```bash +mvn clean deploy -Pbundle-with-installer +``` + +To learn more about the bundle installer, check [Build Tools for VMware Aria - Bundle Installer](use-bundle-installer.md) for more information. + +#### Security + +All API calls from the toolchain (i.e. the client) verify the SSL certificate returned by vRO/vRA (i.e. the server). If you are using self-signed or third-party signed certificates, you may need to add those certificates or their CA certificates to the default JAVA keystore, i.e. `JAVA_HOME/lib/security/cacerts`. **This is the recommended approach.** + +The other option, **applicable ONLY for development environments**, is to ignore certificate checks by passing a flag. + +#### Timeouts + +Controlling timeouts is done through the following System Properties: + +- the Connection Timeout ("vrealize.connection.timeout") – the time to establish the connection with the remote host (Defaults to 360 seconds (6 minutes)) +- the Socket Timeout ("vrealize.socket.timeout") – the time waiting for data – after establishing the connection maximum time of inactivity between two data packets (Defaults to 360 seconds(6 minutes)) +- the vra 8.x content import timeout ("vrang.import.timeout") – (in miliseconds) the time out waiting for import of custom forms / content sources to complete (Defaults to 6 seconds) + +#### Delays + +- the vra 8.x data collection delay ("vrang.data.collection.delay.seconds") – (in seconds) the amount of time to way before running the import job. The vRA data collection usually takes around 10 minutes ( 600 seconds ) to complete. Defaults to no delay. + + You can set these as JVM Options as specified [here](https://maven.apache.org/configure.html) + +- Timeouts can be set up to be used by the installer too using the following settings (in the environment properties file): + - http_connection_timeout - for the connection timeout (in seconds), default is 360 seconds (6 minutes) + - http_socket_timeout - for the socket timeout (in seconds), default is 360 seconds (6 minutes) + - vrang_import_timeout - for the vra 8.x content import timeout (custom forms, content sources). + +#### Checksums + +Checksums are supported for the following project types - vRO JS, TS, XML and vRA 7/8. By defaults the target folder will also contain .sha1 checksums for the different file types, e.g. js.sha1, ts.sha1, xml.sha1, content.sha1 and packages.sha1. These are specified per project type in the base pom.xml using following definition: + +```xml + + ... + js,packages + ... + +``` + +To add more checksum definitions for your project, just redefine this property in your pom.xml. For example, add the "docs" checksum to the build: + +```xml + + ... + js,packages,docs + ... + +``` + +With the "docs" prefix you can now specify if the phase is enabled, readmes location directory, files glob filter and as well list of excludes RegExp patterns of files to ommit. For example like this: + +```xml + + ... + js,packages,docs + + true + docs/markdown + *.md + \.docx$,\.pdf$ + ... + +``` + +## Previous + +See [Setting Up Artifactory](./Setting%20Up%20Artifactory.md). diff --git a/docs/versions/v3.0.0/General/Guides/.gitkeep b/docs/versions/v3.0.0/General/Guides/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/versions/v3.0.0/General/Installation.md b/docs/versions/v3.0.0/General/Installation.md new file mode 100644 index 000000000..49e3e90ff --- /dev/null +++ b/docs/versions/v3.0.0/General/Installation.md @@ -0,0 +1,24 @@ +# Installation + +[//]: # (Additional Information on the topic goes here) + +[//]: # (What will you learn) +[//]: # (Optional but highly recommended) + +## Overview + +[//]: # (Internal navigation) + +## Table Of Contents + +1. [Secion](#section) + +[//]: # (Fill As many of these as you need. Use h4 and further here, do not include h1s, h2s or h3s.) + +### Section + +[//]: # (Optional Section) +[//]: # (## Previous) + +[//]: # (Optional Section) +[//]: # (## What's Next) diff --git a/docs/versions/v3.0.0/General/Known Issues/.gitkeep b/docs/versions/v3.0.0/General/Known Issues/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/versions/v3.0.0/General/Use Cases/.gitkeep b/docs/versions/v3.0.0/General/Use Cases/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/versions/v3.0.0/README.md b/docs/versions/v3.0.0/README.md new file mode 100644 index 000000000..cad2557dc --- /dev/null +++ b/docs/versions/v3.0.0/README.md @@ -0,0 +1,22 @@ +# v3.0.0 + +Build Tools for VMware Aria is a tool that helps enterprises adhere to Infrastructure-as-Code principles in a wide variety +of VMware tools. + +## Navigation + +- [Core Concepts](./General/Core%20Concepts.md) +- [Getting Started](./General/Getting%20Started.md) +- [Installation](./General/Installation.md) +- [Use Cases](./General/Use%20Cases) +- What's next + - [Examples](./General/Examples) + - [Cheatsheets](./General/Cheatsheets) + - [Guides](./General/Guides) + - [Known Issues](./General/Known%20Issues) +- [Components](./Components) +- [FAQ](./General/FAQ.md) + +## What's Next + +See [Release](./Release.md). diff --git a/docs/versions/v3.0.0/Release.md b/docs/versions/v3.0.0/Release.md new file mode 100644 index 000000000..f1f9a81e4 --- /dev/null +++ b/docs/versions/v3.0.0/Release.md @@ -0,0 +1,149 @@ +# v3.0.0 + +## Breaking Changes + + +### *`vrang.project.id` has been removed in favor of `vrang.project.name`* + +Moving forward, `vrang.project.id` will not be accepted as part of the configuration. Instead, use `vrang.project.name`. + +`project.name` is more flexible as it will automatically find out the `project.id`. + +### *`vrang.org.id` has been removed in favor of `vrang.org.name`* + +Moving forward, `vrang.org.id` will not be accepted as part of the configuration. Instead, use `vrang.org.name`. + +`org.name` is more flexible as it will automatically find out the `org.id`. + +### *Polyglot projects will not try to fix mistakes due to issues with the manifest* + +Before, the `polyglot.json` could be defined like this: + +```json5 +{ + "platform": { + "runtime": "nodejs", // Here, this makes sense only for `ABX` projects, but not `vro` ones, which this is, looking 5 rows down + "action": "auto", + "tags": [], + "entrypoint": "out/handler.handler" + }, + "vro": { + "module": "com.vmware.pscoe.templates.buildtoolsforvmwareariasamples", + "inputs": { + "limit": "number", + "vraEndpoint": "CompositeType(host:string,base:string):VraEndpointType" + }, + "outputType": "Array/string" + }, + "files": ["%out", "!**/package.json", "!**/polyglot.json", "!**/tsconfig.json"] +} +``` +That would result the build tools to compile this correctly and default to using `node:12`. + +Now, however, you have to define the `runtime` correctly as `node:12` if you want this to work. + +This applies for automatic fixes for `vro` and `abx` types. + +### *Policy Templates's `templateVersion` is now mandatory* + +`@PolicyTemplate` decorators now **must** specify a `templateVersion`. + +The possible options are `v1` and `v2` (you can also see this in the definitions). + +```ts +@PolicyTemplate({ + name: "Sample Policy", + path: "MyOrg/MyProject", + templateVersion: "v2", // This is now mandatory + variables: { /* ... */ }, + elements: { /* ... */} +}) +``` + +## Deprecations + + +### *Deprecation of vRA 7 archetype* + +The vRA 7 Archetype and all related plugins/mojos/code are removed due to the fact that vRA 7 is Out Of Support. + +The suggested alternative is to use version 2.44.0 of the toolchain. That is the last version that supports vRA7 + +### *Deprecation of vRA 7 types* + +The `o11n-plugin-vcac` and `o11n-plugin-vcacafe` types are also removed. + +### *Deprecated Regional Content* + +The Regional content supported in previous versions of Build Tools for Aria has been removed. Unfortunately that part of the build tools never functioned the way we wanted it to, and managing the "infrastructure" tab in Assembler is no longer something we want to do as it contradicts the principles behind the `vra-ng` archetype. + +As an alternative, we suggest you use some sort of install workflow to manage them. + +## Features + + +### *Added a health check script* + +To check if the dependencies are met, you can now run: + +```sh +curl -o- https://raw.githubusercontent.com/vmware/build-tools-for-vmware-aria/main/health.sh | bash +``` + +Works for Linux,Mac and Windows with Git Bash + + + +## Improvements + +### *Flexible unit tests setup* +It is now possible to configure how the unit tests are being bootstrapped and executed. +#### Previous Behavior +Unit tests were locked to a specific version of Jasmine. +#### New Behavior +There are two out-of-the-box options for test frameworks: Jasmine and Jest. +The default behavior will be fully backwards compatible. Optionally the user is able to specify which +framework should be used as well as its version or even completely override how the unit tests are being ran. +#### Relevant Documentation +More in-depth documentation is available in the [vrotest](./../../../typescript/vrotest/) component. + + +## Upgrade procedure + +### *Polyglot projects using `nodejs` as a runtime for a `vro` project need to be migrated* + +1. Look for all of your polyglot projects made for `vro`. +2. Look for `nodejs` runtimes and change them to `node:12`. +3. Look for `powershell` runtimes and change them to `powercli:11-powershell-6.2` +4. Look for `python` runtimes and change them to `python:3.7` + +Note: + +You don't need to migrate projects if they are `abx` based. `nodejs` is the correct value for `abx` projects. + +### *Polyglot projects using vro runtimes for abx projects need to be migrated* + +1. Take a look at the documentation for the available runtimes +2. Correctly set the `vro` runtime you want to use instead of the `abx` +3. `nodejs`, `powershell` or `python` only + +### *Migrate PolicyTemplates* + +Search your projects that use `@PolicyTemplate` decorator. The `templateVersion` property is now required. Check on top for possible values + +### *Migrate away from `vrang.project.id`* + +1. Open your `settings.xml`. +2. Search for `vrang.project.id`. +3. If found, replace it with the name of the project as seen in Aria + +### *Migrate away from `vrang.org.id`* + +1. Open your `settings.xml`. +2. Search for `vrang.org.id`. +3. If found, replace it with the name of the organization as seen in Aria + +### *Modify your `environment.properties` files if in use (installer)* + +1. If you have `environment.properties` that rely on `vrang_project_id`, they should be modified to use the `vrang_project_name` +2. If you have `environment.properties` that rely on `vrang_org_id`, they should be modified to use the `vrang_org_name` diff --git a/pom.xml b/pom.xml index 487327812..24a864684 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ ${project.basedir} - 2.44.1-SNAPSHOT + 3.0.0 17 diff --git a/typescript/npmconv/package-lock.json b/typescript/npmconv/package-lock.json index ad2639af4..ae2b1ba46 100644 --- a/typescript/npmconv/package-lock.json +++ b/typescript/npmconv/package-lock.json @@ -1,12 +1,12 @@ { "name": "@vmware-pscoe/npmconv", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@vmware-pscoe/npmconv", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "license": "VMware Confidential", "dependencies": { "command-line-args": "^5.1.1", diff --git a/typescript/npmconv/package.json b/typescript/npmconv/package.json index 820c91192..eb34e1a4d 100644 --- a/typescript/npmconv/package.json +++ b/typescript/npmconv/package.json @@ -1,6 +1,6 @@ { "name": "@vmware-pscoe/npmconv", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "description": "Used for converting pure-typescript npm package to vRO project", "author": "VMware PSCoE", "license": "VMware Confidential", diff --git a/typescript/polyglotpkg/package-lock.json b/typescript/polyglotpkg/package-lock.json index 3954ddea1..85fe4b995 100644 --- a/typescript/polyglotpkg/package-lock.json +++ b/typescript/polyglotpkg/package-lock.json @@ -1,12 +1,12 @@ { "name": "@vmware-pscoe/polyglotpkg", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@vmware-pscoe/polyglotpkg", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "license": "VMware Confidential", "dependencies": { "adm-zip": "^0.4.14", diff --git a/typescript/polyglotpkg/package.json b/typescript/polyglotpkg/package.json index 5291fafd4..cb6a7c9c1 100644 --- a/typescript/polyglotpkg/package.json +++ b/typescript/polyglotpkg/package.json @@ -1,6 +1,6 @@ { "name": "@vmware-pscoe/polyglotpkg", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "description": "Create a vRO Polyglot or serverless package", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/typescript/vro-scripting-api/package-lock.json b/typescript/vro-scripting-api/package-lock.json index 1dc4c2a2e..757b8ee34 100644 --- a/typescript/vro-scripting-api/package-lock.json +++ b/typescript/vro-scripting-api/package-lock.json @@ -1,12 +1,12 @@ { "name": "@vmware-pscoe/vro-scripting-api", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@vmware-pscoe/vro-scripting-api", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "license": "VMware Confidential", "devDependencies": { "@rollup/plugin-commonjs": "28.0.0", diff --git a/typescript/vro-scripting-api/package.json b/typescript/vro-scripting-api/package.json index 04bd23175..1307c50e0 100644 --- a/typescript/vro-scripting-api/package.json +++ b/typescript/vro-scripting-api/package.json @@ -1,6 +1,6 @@ { "name": "@vmware-pscoe/vro-scripting-api", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "VMware Confidential", "description": "vRO script API for NodeJS", diff --git a/typescript/vropkg/package-lock.json b/typescript/vropkg/package-lock.json index 4fa7b5219..d2ee286e8 100644 --- a/typescript/vropkg/package-lock.json +++ b/typescript/vropkg/package-lock.json @@ -1,12 +1,12 @@ { "name": "@vmware-pscoe/vropkg", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@vmware-pscoe/vropkg", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "bundleDependencies": [ "abstract-syntax-tree", "archiver", diff --git a/typescript/vropkg/package.json b/typescript/vropkg/package.json index 675d0f797..27338366d 100644 --- a/typescript/vropkg/package.json +++ b/typescript/vropkg/package.json @@ -1,6 +1,6 @@ { "name": "@vmware-pscoe/vropkg", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "description": "Used to build vRealize Orchestrator signed package out of it source code (expand to package XML)", "author": "VMware PSCoE", "license": "VMware Confidential", diff --git a/typescript/vrotest/package-lock.json b/typescript/vrotest/package-lock.json index bad13af53..3fe29cf07 100644 --- a/typescript/vrotest/package-lock.json +++ b/typescript/vrotest/package-lock.json @@ -1,12 +1,12 @@ { "name": "@vmware-pscoe/vrotest", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@vmware-pscoe/vrotest", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "bundleDependencies": [ "iconv-lite", "jasmine", diff --git a/typescript/vrotest/package.json b/typescript/vrotest/package.json index a3f06bc92..d72d88c1e 100644 --- a/typescript/vrotest/package.json +++ b/typescript/vrotest/package.json @@ -1,6 +1,6 @@ { "name": "@vmware-pscoe/vrotest", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "VMware Confidential", "description": "vRO Test Suite for NodeJS", diff --git a/typescript/vrotsc/package-lock.json b/typescript/vrotsc/package-lock.json index 95ac170bb..6b40655f8 100644 --- a/typescript/vrotsc/package-lock.json +++ b/typescript/vrotsc/package-lock.json @@ -1,12 +1,12 @@ { "name": "@vmware-pscoe/vrotsc", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@vmware-pscoe/vrotsc", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "license": "VMware Confidential", "bin": { "vrotsc": "bin/vrotsc" diff --git a/typescript/vrotsc/package.json b/typescript/vrotsc/package.json index e46123e97..6975f6348 100644 --- a/typescript/vrotsc/package.json +++ b/typescript/vrotsc/package.json @@ -1,6 +1,6 @@ { "name": "@vmware-pscoe/vrotsc", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "VMware Confidential", "description": "vRO TypeScript to JavaScript transpiler", diff --git a/vro-types/ecmascript/package.json b/vro-types/ecmascript/package.json index 247acda6e..878c92a99 100644 --- a/vro-types/ecmascript/package.json +++ b/vro-types/ecmascript/package.json @@ -1,5 +1,5 @@ { "name": "@types/ecmascript", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "private": true } diff --git a/vro-types/jasmine/package.json b/vro-types/jasmine/package.json index af09f67e8..54cd2d37a 100644 --- a/vro-types/jasmine/package.json +++ b/vro-types/jasmine/package.json @@ -1,5 +1,5 @@ { "name": "@types/jasmine", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "private": true } diff --git a/vro-types/node/package.json b/vro-types/node/package.json index 233bafbee..2033a4c26 100644 --- a/vro-types/node/package.json +++ b/vro-types/node/package.json @@ -1,5 +1,5 @@ { "name": "@types/node", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "private": true } diff --git a/vro-types/o11n-core/package.json b/vro-types/o11n-core/package.json index 96496167d..deab07992 100644 --- a/vro-types/o11n-core/package.json +++ b/vro-types/o11n-core/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-core", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-activedirectory/package.json b/vro-types/o11n-plugin-activedirectory/package.json index bdf0326d5..18997a6d4 100644 --- a/vro-types/o11n-plugin-activedirectory/package.json +++ b/vro-types/o11n-plugin-activedirectory/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-activedirectory", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-amqp/package.json b/vro-types/o11n-plugin-amqp/package.json index d4003e864..f0ddb770d 100644 --- a/vro-types/o11n-plugin-amqp/package.json +++ b/vro-types/o11n-plugin-amqp/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-amqp", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-apic/package.json b/vro-types/o11n-plugin-apic/package.json index 653973b2f..23a39e658 100644 --- a/vro-types/o11n-plugin-apic/package.json +++ b/vro-types/o11n-plugin-apic/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-apic", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-aria/package.json b/vro-types/o11n-plugin-aria/package.json index d0343e0a0..74e8d7e30 100644 --- a/vro-types/o11n-plugin-aria/package.json +++ b/vro-types/o11n-plugin-aria/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-aria", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-azure/package.json b/vro-types/o11n-plugin-azure/package.json index 0768a795b..a7a38a4af 100644 --- a/vro-types/o11n-plugin-azure/package.json +++ b/vro-types/o11n-plugin-azure/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-azure", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-dynamictypes/package.json b/vro-types/o11n-plugin-dynamictypes/package.json index 369d07a80..3bfb2341f 100644 --- a/vro-types/o11n-plugin-dynamictypes/package.json +++ b/vro-types/o11n-plugin-dynamictypes/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-dynamictypes", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-mail/package.json b/vro-types/o11n-plugin-mail/package.json index 0b00b07df..55394328a 100644 --- a/vro-types/o11n-plugin-mail/package.json +++ b/vro-types/o11n-plugin-mail/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-mail", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-mqtt/package.json b/vro-types/o11n-plugin-mqtt/package.json index 9492e381e..55cfe480e 100644 --- a/vro-types/o11n-plugin-mqtt/package.json +++ b/vro-types/o11n-plugin-mqtt/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-mqtt", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-net/package.json b/vro-types/o11n-plugin-net/package.json index 3c6ba75cb..67b9450e4 100644 --- a/vro-types/o11n-plugin-net/package.json +++ b/vro-types/o11n-plugin-net/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-net", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-nsx/package.json b/vro-types/o11n-plugin-nsx/package.json index a41d71dbb..f70afc946 100644 --- a/vro-types/o11n-plugin-nsx/package.json +++ b/vro-types/o11n-plugin-nsx/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-nsx", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-powershell/package.json b/vro-types/o11n-plugin-powershell/package.json index a4b7cd254..9e2c76db9 100644 --- a/vro-types/o11n-plugin-powershell/package.json +++ b/vro-types/o11n-plugin-powershell/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-powershell", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-rest/package.json b/vro-types/o11n-plugin-rest/package.json index 65a74bc7d..c253983e5 100644 --- a/vro-types/o11n-plugin-rest/package.json +++ b/vro-types/o11n-plugin-rest/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-rest", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-snmp/package.json b/vro-types/o11n-plugin-snmp/package.json index d375a6a03..6d5f42985 100644 --- a/vro-types/o11n-plugin-snmp/package.json +++ b/vro-types/o11n-plugin-snmp/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-snmp", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-soap/package.json b/vro-types/o11n-plugin-soap/package.json index a57e7033d..8a5f47323 100644 --- a/vro-types/o11n-plugin-soap/package.json +++ b/vro-types/o11n-plugin-soap/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-soap", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-sql/package.json b/vro-types/o11n-plugin-sql/package.json index 35a5b249a..5c6cc73b5 100644 --- a/vro-types/o11n-plugin-sql/package.json +++ b/vro-types/o11n-plugin-sql/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-sql", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-ssh/package.json b/vro-types/o11n-plugin-ssh/package.json index 45abaf7e4..51bf00253 100644 --- a/vro-types/o11n-plugin-ssh/package.json +++ b/vro-types/o11n-plugin-ssh/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-ssh", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-vapi/package.json b/vro-types/o11n-plugin-vapi/package.json index a6a61e97f..932d40a9f 100644 --- a/vro-types/o11n-plugin-vapi/package.json +++ b/vro-types/o11n-plugin-vapi/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-vapi", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-vc/package.json b/vro-types/o11n-plugin-vc/package.json index 7ecdbdce1..3f0fadaa9 100644 --- a/vro-types/o11n-plugin-vc/package.json +++ b/vro-types/o11n-plugin-vc/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-vc", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-vcloud/package.json b/vro-types/o11n-plugin-vcloud/package.json index cde4910cc..e8a69f165 100644 --- a/vro-types/o11n-plugin-vcloud/package.json +++ b/vro-types/o11n-plugin-vcloud/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-vcloud", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-vco/package.json b/vro-types/o11n-plugin-vco/package.json index 3e5c9c046..9bfdc2d5d 100644 --- a/vro-types/o11n-plugin-vco/package.json +++ b/vro-types/o11n-plugin-vco/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-vco", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/o11n-plugin-xml/package.json b/vro-types/o11n-plugin-xml/package.json index bda0faee6..bb4566263 100644 --- a/vro-types/o11n-plugin-xml/package.json +++ b/vro-types/o11n-plugin-xml/package.json @@ -1,6 +1,6 @@ { "name": "@types/o11n-plugin-xml", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true diff --git a/vro-types/tslib/package.json b/vro-types/tslib/package.json index 7d6cff003..b7829647b 100644 --- a/vro-types/tslib/package.json +++ b/vro-types/tslib/package.json @@ -1,6 +1,6 @@ { "name": "tslib", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "description": "TypeScript compiler requires that tslib library is installed as a NodeJS module. VRO is using separate implementation for tslib, so this library will just provide the types.", "license": "ISC", diff --git a/vro-types/vrotsc-annotations/package.json b/vro-types/vrotsc-annotations/package.json index c9786a4d4..20a25157a 100644 --- a/vro-types/vrotsc-annotations/package.json +++ b/vro-types/vrotsc-annotations/package.json @@ -1,6 +1,6 @@ { "name": "@types/vrotsc-annotations", - "version": "2.44.1-SNAPSHOT", + "version": "3.0.0", "author": "VMware PSCoE", "license": "ISC", "private": true