From 278ca69290da1c4e83878f82033382cce50624f9 Mon Sep 17 00:00:00 2001 From: jbowdre Date: Fri, 16 Oct 2020 09:35:09 -0500 Subject: [PATCH] initial commit --- .gitignore | 1 + Dockerfile | 23 ++ README.md | 263 +++++++++++++ open_source_licenses.txt | 259 ++++++++++++ pom.xml | 372 ++++++++++++++++++ src/assembly/python/allocate_ip.xml | 25 ++ src/assembly/python/allocate_ip_range.xml | 25 ++ src/assembly/python/deallocate_ip.xml | 25 ++ src/assembly/python/deallocate_ip_range.xml | 25 ++ src/assembly/python/get_ip_blocks.xml | 25 ++ src/assembly/python/get_ip_ranges.xml | 25 ++ src/assembly/python/update_record.xml | 25 ++ src/assembly/python/validate_endpoint.xml | 25 ++ src/assembly/zip-actions.xml | 28 ++ src/assembly/zip-provider.xml | 29 ++ src/main/python/.DS_Store | Bin 0 -> 8196 bytes src/main/python/allocate_ip/__init__.py | 0 src/main/python/allocate_ip/requirements.txt | 2 + src/main/python/allocate_ip/source.py | 144 +++++++ src/main/python/allocate_ip_range/__init__.py | 0 .../python/allocate_ip_range/requirements.txt | 1 + src/main/python/allocate_ip_range/source.py | 139 +++++++ .../python/commons/vra_ipam_utils/__init__.py | 0 .../commons/vra_ipam_utils/exceptions.py | 7 + .../python/commons/vra_ipam_utils/ipam.py | 344 ++++++++++++++++ src/main/python/deallocate_ip/__init__.py | 0 .../python/deallocate_ip/requirements.txt | 1 + src/main/python/deallocate_ip/source.py | 96 +++++ .../python/deallocate_ip_range/__init__.py | 0 .../deallocate_ip_range/requirements.txt | 1 + src/main/python/deallocate_ip_range/source.py | 74 ++++ src/main/python/get_ip_blocks/__init__.py | 0 .../python/get_ip_blocks/requirements.txt | 1 + src/main/python/get_ip_blocks/source.py | 130 ++++++ src/main/python/get_ip_ranges/__init__.py | 0 .../python/get_ip_ranges/requirements.txt | 3 + src/main/python/get_ip_ranges/source.py | 156 ++++++++ src/main/python/update_record/__init__.py | 0 .../python/update_record/requirements.txt | 1 + src/main/python/update_record/source.py | 92 +++++ .../libffi-806b1a9d.so.6.0.4 | Bin 0 -> 46632 bytes .../validate_endpoint/.requirements.txt.swp | Bin 0 -> 12288 bytes src/main/python/validate_endpoint/__init__.py | 0 ...fi_backend.cpython-36m-x86_64-linux-gnu.so | Bin 0 -> 849704 bytes .../python/validate_endpoint/requirements.txt | 12 + src/main/python/validate_endpoint/source.py | 82 ++++ src/main/resources/CHANGELOG.md | 0 src/main/resources/bundle/allocate_ip.abx | 58 +++ .../resources/bundle/allocate_ip_range.abx | 53 +++ src/main/resources/bundle/deallocate_ip.abx | 50 +++ .../resources/bundle/deallocate_ip_range.abx | 38 ++ src/main/resources/bundle/get_ip_blocks.abx | 25 ++ src/main/resources/bundle/get_ip_ranges.abx | 25 ++ src/main/resources/bundle/update_record.abx | 50 +++ .../resources/bundle/validate_endpoint.abx | 20 + .../resources/dependencies.collected.flag | 0 src/main/resources/endpoint-schema.json | 110 ++++++ src/main/resources/logo.png | Bin 0 -> 42559 bytes src/main/resources/registration.yaml | 19 + .../AllocateIP_mock.py | 63 +++ .../DeallocateIP_mock.py | 60 +++ .../GetIPRanges_mock.py | 29 ++ .../mocks_for_manual_testing/Update_mock.py | 53 +++ 63 files changed, 3114 insertions(+) create mode 100644 .gitignore create mode 100755 Dockerfile create mode 100755 README.md create mode 100755 open_source_licenses.txt create mode 100755 pom.xml create mode 100755 src/assembly/python/allocate_ip.xml create mode 100755 src/assembly/python/allocate_ip_range.xml create mode 100755 src/assembly/python/deallocate_ip.xml create mode 100755 src/assembly/python/deallocate_ip_range.xml create mode 100755 src/assembly/python/get_ip_blocks.xml create mode 100755 src/assembly/python/get_ip_ranges.xml create mode 100755 src/assembly/python/update_record.xml create mode 100755 src/assembly/python/validate_endpoint.xml create mode 100755 src/assembly/zip-actions.xml create mode 100755 src/assembly/zip-provider.xml create mode 100755 src/main/python/.DS_Store create mode 100755 src/main/python/allocate_ip/__init__.py create mode 100755 src/main/python/allocate_ip/requirements.txt create mode 100755 src/main/python/allocate_ip/source.py create mode 100755 src/main/python/allocate_ip_range/__init__.py create mode 100755 src/main/python/allocate_ip_range/requirements.txt create mode 100755 src/main/python/allocate_ip_range/source.py create mode 100755 src/main/python/commons/vra_ipam_utils/__init__.py create mode 100755 src/main/python/commons/vra_ipam_utils/exceptions.py create mode 100755 src/main/python/commons/vra_ipam_utils/ipam.py create mode 100755 src/main/python/deallocate_ip/__init__.py create mode 100755 src/main/python/deallocate_ip/requirements.txt create mode 100755 src/main/python/deallocate_ip/source.py create mode 100755 src/main/python/deallocate_ip_range/__init__.py create mode 100755 src/main/python/deallocate_ip_range/requirements.txt create mode 100755 src/main/python/deallocate_ip_range/source.py create mode 100755 src/main/python/get_ip_blocks/__init__.py create mode 100755 src/main/python/get_ip_blocks/requirements.txt create mode 100755 src/main/python/get_ip_blocks/source.py create mode 100755 src/main/python/get_ip_ranges/__init__.py create mode 100755 src/main/python/get_ip_ranges/requirements.txt create mode 100755 src/main/python/get_ip_ranges/source.py create mode 100755 src/main/python/update_record/__init__.py create mode 100755 src/main/python/update_record/requirements.txt create mode 100755 src/main/python/update_record/source.py create mode 100755 src/main/python/validate_endpoint/.libs_cffi_backend/libffi-806b1a9d.so.6.0.4 create mode 100755 src/main/python/validate_endpoint/.requirements.txt.swp create mode 100755 src/main/python/validate_endpoint/__init__.py create mode 100755 src/main/python/validate_endpoint/_cffi_backend.cpython-36m-x86_64-linux-gnu.so create mode 100755 src/main/python/validate_endpoint/requirements.txt create mode 100755 src/main/python/validate_endpoint/source.py create mode 100755 src/main/resources/CHANGELOG.md create mode 100755 src/main/resources/bundle/allocate_ip.abx create mode 100755 src/main/resources/bundle/allocate_ip_range.abx create mode 100755 src/main/resources/bundle/deallocate_ip.abx create mode 100755 src/main/resources/bundle/deallocate_ip_range.abx create mode 100755 src/main/resources/bundle/get_ip_blocks.abx create mode 100755 src/main/resources/bundle/get_ip_ranges.abx create mode 100755 src/main/resources/bundle/update_record.abx create mode 100755 src/main/resources/bundle/validate_endpoint.abx create mode 100755 src/main/resources/dependencies.collected.flag create mode 100755 src/main/resources/endpoint-schema.json create mode 100755 src/main/resources/logo.png create mode 100755 src/main/resources/registration.yaml create mode 100755 src/test/python/mocks_for_manual_testing/AllocateIP_mock.py create mode 100755 src/test/python/mocks_for_manual_testing/DeallocateIP_mock.py create mode 100755 src/test/python/mocks_for_manual_testing/GetIPRanges_mock.py create mode 100755 src/test/python/mocks_for_manual_testing/Update_mock.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2f7896d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +target/ diff --git a/Dockerfile b/Dockerfile new file mode 100755 index 0000000..0dee94d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM photon:3.0-20200609 + +ADD target/python /ipam/python + +RUN tdnf install -y python3-pip.noarch python3-devel gcc glibc-devel binutils linux-api-headers shadow && \ + pip3 install --upgrade pip setuptools && \ + pip3 install certifi && \ + tdnf clean all && \ + rm -fr /var/cache/tdnf/* + +RUN pip3 install -r /ipam/python/allocate_ip/requirements.txt --target=/ipam/python/allocate_ip +RUN pip3 install -r /ipam/python/deallocate_ip/requirements.txt --target=/ipam/python/deallocate_ip +RUN pip3 install -r /ipam/python/get_ip_ranges/requirements.txt --target=/ipam/python/get_ip_ranges +RUN pip3 install -r /ipam/python/validate_endpoint/requirements.txt --target=/ipam/python/validate_endpoint +RUN if [ "@provider.supportsUpdateRecord@" = "true" ] ; then pip3 install -r /ipam/python/update_record/requirements.txt --target=/ipam/python/update_record ; fi +RUN if [ "@provider.supportsOnDemandNetworks@" = "true" ] ; then pip3 install -r /ipam/python/get_ip_blocks/requirements.txt --target=/ipam/python/get_ip_blocks ; fi +RUN if [ "@provider.supportsOnDemandNetworks@" = "true" ] ; then pip3 install -r /ipam/python/allocate_ip_range/requirements.txt --target=/ipam/python/allocate_ip_range ; fi +RUN if [ "@provider.supportsOnDemandNetworks@" = "true" ] ; then pip3 install -r /ipam/python/deallocate_ip_range/requirements.txt --target=/ipam/python/deallocate_ip_range ; fi + +RUN useradd -ms /bin/bash -u @user.id@ -U @user.name@ + +CMD yes | cp -rf -R /ipam/python /ipam/result && \ + echo Collecting-dependencies-complete diff --git a/README.md b/README.md new file mode 100755 index 0000000..c6daef9 --- /dev/null +++ b/README.md @@ -0,0 +1,263 @@ +Sample IPAM Integration +============ + +A reference implementation of an IPAM integration plugin for vRA(C) 8.x + +Use this documentation as a step by step guide for creating your own IPAM plugin. + +For more information about the IPAM integration see: [vRA IPAM plugin reference documentation] + +[vRA IPAM plugin reference documentation]: https://docs.vmware.com/en/VMware-Cloud-services/1.0/ipam_integration_contract_reqs.pdf + +Prerequisites +=============== + +The following software should be installed and configured in order to use this plugin: + +1. **Java 8** + +2. **Maven 3** (Used for packaging the IPAM zip) + +3. **Python 3** (The IPAM plugin is based on Python) + +4. **Docker** (Docker is used to collect Python dependency libs that are needed by the IPAM plugin) + +5. **Internet access** (The IPAM SDK relies on Maven Central, Docker HUB & PIP during packaging time. **Internet access is not required during runtime.** More details below) + +Note: You can use a higher version of the above software as long as it is backward compatible. + +Guide for creating the IPAM package +=============== + +Step 1: Package the scripts +---------------- + +Maven & Docker are used during build time to package the Python scripts into IPAM.zip distribution. +Maven enables the building of the IPAM package to be platform independent. This allows integrators to develop their IPAM integration solution under any Java-enabled OS - Windows, Unix, Mac, etc... + +Docker is used during build time to start up a Photon OS container. All 3rd party libraries that the IPAM plugin depends on are downloaded during build time, using PIP, from within the Photon OS docker container. This guarantees that all Python lib binaries will be compiled exactly for Photon OS which is the OS of the Running Environment that is going to be executing the IPAM Python actions. + +The first thing you can do is build the package by following the instructions below: + +1. Open the `pom.xml` and modify the following properties: + + `SampleIPAM` + `Sample IPAM integration for vRA` + `0.1` + + Replace these property values with the name, description & version of your choice. + The provider.name will be used as a display name in vRA(C) when you deploy the plugin zip, along with the description & version. + + Note: + Use the src/main/resources/CHANGELOG.md file to document any bug fixes, features and additions to the plugin over the course of time when a new plugin version is released. The file is included in the final plugin zip distribution so that vRA end-customers would know what is new in the plugin. + +2. Update the logo.png file with the logo icon of your company (advisable) + + The vRA(C) UI uses the logo.png file located in ./src/main/resources when displaying the IPAM endpoints you create using this package. + +3. (Optional) Change the IPAM Integration endpoint custom form. + + This is done by modifying the endpoint-schema.json file located in ./src/main/resources. It contains the custom form definition that renders the IPAM provider's specific fields +during IPAM endpoint registration. You can change it however you like except that **it is required that this file contains entries for privateKey and privateKeyId fields.** + + Note: In ./src/main/resources you can also see the registration.yaml file. It contains meta information about the contents of the package. +**Don't change anything in this file.** + +4. Run `mvn package -PcollectDependencies` + + **This produces a SampleIPAM.zip file under ./target.** + **The zip should be ready for deployment into vRA(C).** + + Notice that the first time you run this command, it could take up to several minutes to complete packaging the IPAM zip. + The reason for that is because the first time the script runs it attempts to collect any 3rd party Python libs that + the plugin depends on - such as **requests**, **pyopenssh** & others. + + Next consecutive runs of `mvn package` **will not** trigger another collection of 3rd party libs because this is time consuming and most often unnecessary. + In order to re-trigger collection of dependencies (could be needed in case you introduced a new 3rd party Python lib) you must provide the `-PcollectDependencies` option again. + + Note: + If you are building the package on Linux you must add one additional parameter to the build: `-Duser.id=${UID}` + (`mvn package -PcollectDependencies -Duser.id=${UID}`) + +Now the IPAM package is ready to use. +We advise you to test whether it works by uploading it in vRA(C) and then checking that the actions are triggered when they should be and executed successfully. +For example, create a new IPAM endpoint and choose the package you uploaded in the **Provider** dropdown, enter an arbitrary username and password, enter **httpbin.org** as a **Hostname** and click on `Validate`. +You should see the **Validate Endpoint** action is triggered in the **Extensibility** tab. It should complete successfully. + +Step 2: Get familiar with the IPAM operations and their skeleton implementations +---------------- + +After checking that the packaging of the sample IPAM scripts works, you can start exploring the code. +Under ./src/main/python you'd find separate directory for each IPAM specific operation that the plugin supports. + +| Operation name | Description | Script | Required | +| ----------------------------|:------------------------------------------------------------------------------------------------------------------------------------------|:------------------------------------------------|:---------| +| Allocate IP | Allocates the next available IP for a VM | ./src/main/python/allocate_ip/source.py | Yes | +| Deallocate IP | Deallocates an already allocated IP | ./src/main/python/deallocate_ip/source.py | Yes | +| Get IP Ranges | Data collects IP ranges & networks from the IPAM provider | ./src/main/python/get_ip_ranges/source.py | Yes | +| Update Record | Updates the created host record. Could be used to update MAC address of VM after it has been provisioned | ./src/main/python/update_record/source.py | No | +| Validate Endpoint | Validates that the IPAM endpoint credentials are valid and that a connection to the external IPAM system can be established successfully | ./src/main/python/validate_endpoint/source.py | Yes | +| Allocate IP Range | Creates network inside some of the specified IP blocks | ./src/main/python/allocate_ip_range/source.py | No | +| Deallocate IP Range | Deletes an already allocated network | ./src/main/python/deallocate_ip_range/source.py | No | +| Get IP Blocks | Data collects IP blocks | ./src/main/python/get_ip_blocks/source.py | No | + +The ./src/main/python/\*\*/source.py scripts contain the Python source code that would be used by vRA(C) to perform the respective IPAM operation. + +Each script defines a `def handler(context, inputs):` function that is the entry point into the IPAM operation. vRA(C)'s IPAM framework calls the respective operation's `handler` function, passing request specific inputs in the form of Python dictionary along with the context object that can be used to securely connect to vRA(C) and call its services. + +Step 3: Implement the IPAM operations +---------------- + +Integrators can choose to implement the `def handler(context, inputs):` function of each IPAM operation's source.py script from scratch, as long as they conform to the contract defined in the [vRA IPAM plugin reference documentation] + +--- +**We advise against implementing the operations from scratch.** +Instead, integrators can utilize the `vra_ipam_utils` library located in ./src/main/python/commons/vra_ipam_utils which contains utility functions and classes that will help with the `def handler(context, inputs):` implementation. + +The source.py code already makes use of the `vra_ipam_utils` lib so you can look at it as reference: + +```python +def handler(context, inputs): + + ipam = IPAM(context, inputs) + IPAM.do_validate_endpoint = do_validate_endpoint + + return ipam.validate_endpoint() + +def do_validate_endpoint(self, auth_credentials, cert): + # Your implemention goes here + ... +``` +All you need to do in order to implement an operation is add your specific logic in the places indicated by the comments in the corresponding source.py file. +**Tip: It is a good idea to build the package, upload it in vRA(C) and test it after implementing each operation.** + +We advise integrators to implement the IPAM operations one by one in the following order: + + 1. Validate Endpoint + 2. Get IP Ranges + 3. Get IP Blocks (Optionally) + 4. Allocate IP + 5. Allocate IP Range (Optionally) + 6. Deallocate IP + 7. Deallocate IP Range (Optionally) + 8. Update Record (Optionally) + +---- + +**Tip: How to call vRA(C) REST endpoints from within the IPAM operation**\ +You can execute REST calls against vRA from within the Python scripts. +This is done by using the ```context``` object in your ```handler``` + +```python +context.request(link='/iaas/api/machines', operation='GET', body='') +``` +The ```context``` is configured to handle authentication, authorization and proxying of your requests. + +Step 4: Define 3rd party libraries (in case you use some) +---------------- + +In order to use 3rd party Python libs in the source.py scripts, you need to define them in the `requirements.txt` file that is located next to each IPAM operation's source.py. + +The plugin build script takes care of downloading the dependency libs defined in `requirements.txt` and package them in the correct format within the IPAM zip. + +The only important thing to remember here is to always re-run `mvn package -PcollectDependencies` every time you add or remove new dependency from the `requirements.txt` + +The `requirements.txt` format is defined [here](https://pip.readthedocs.io/en/1.1/requirements.html) + +Step 5: Change specific properties in the `pom.xml` (if needed) +---------------- + +**Implementing the optional Update Record operation**\ +Integrators can choose to optionally implement the Update Record operation. +This operation is used by the vRA(C) IPAM service to notify the external IPAM system that a VM has been successfully provisioned and to propagate the VM's MAC address to the IPAM system. + +Support of this optional operation is controlled by the following property in the `pom.xml`: +`true` + +Changing this to `false` will force the build to exclude the Update Operation from the IPAM.zip package. + +**Note**: If you ever change the property value from `false` to `true`, you'd have to re-run the build with `mvn package -PcollectDependencies` since the dependencies for the Update Operation would need to be re-collected. + +---- +**Implementing the optional 'Get IP Blocks', 'Allocate IP Range' and 'Deallocate IP Range' operations**\ +The three operations are part of the extended IPAM plugin specification for vRA 8.X. They enable the plugin to support provisioning of on-demand networks from vRA. +Every time a vRA user requests to provision an on-demand network on i.e. NSX-T, a CIDR for that network will be allocated from the plugin along with other network settings such as default gateway. + +The support for this operations is controlled by the following property in the `pom.xml`: +`false` + +Changing this to `true` will force the build to include the `get_ip_blocks`, `allocate_ip_range` and `deallocate_ip_range` operations inside the IPAM.zip package. + +**Note**: The same as with the Update operation, changing the `provider.supportsOnDemandNetworks` property from `false` to `true` must be followed by re-run of the `mvn package -PcollectDependencies` command in order to collect the required dependencies. + +---- +**Supporting address spaces**\ +External IPAM networks & ranges can be organized into logical groups with overlapping address spaces, serving a single routing domain. +By default, the **SampleIPAM.zip** that this SDK produces is configured to not support address spaces. If your IPAM system does have the notion of an address space, you can choose to enable support for address spaces. This is done by changing the following property in the `pom.xml`: +`true` + +Step 6: Build the package with the implemented IPAM operations (actually, it is advisable to do so after implementing each operation) +---------------- +It is a good idea to deploy the package to vRA(C) and test the operations after implementing each IPAM operation. +When you're ready with your implementation, you can build the package by running `mvn package` (or `mvn package -PcollectDependencies` if needed) again. +After you implement all of the required operations (and some optional ones, if you choose to do so), the IPAM package is ready to be distributed and used. + +Troubleshooting +=============== + +The following list contains the most common errors that might occur during build time: +1. `mvn package` build fails with: + + > [ERROR] Plugin org.apache.maven.plugins:maven-resources-plugin:3.1.0 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:3.1.0: Could not transfer artifact org.apache.maven.plugins:maven-resources-plugin:pom:3.1.0 from/to central (https://repo.maven.apache.org/maven2): repo.maven.apache.org: Unknown host repo.maven.apache.org -> [Help 1] + + **Resolution**: + Sometimes establishing connections to Maven Central fails. Retry again after couple of minutes. If the issue persists - check your internet connection. + +2. `mvn package -PcollectDependencies` build fail with: + >[ERROR] DOCKER> Unable to pull 'vmware/photon2:20180424' : error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/12/1204ad97f071063bea855f351348e15e9cc03610cbfc8df46ab96b42d7cafa9f/data?verify=1578042999-Nu9yKJgKQcuFU0Y9hAQe%2BKEOKGo%3D: dial tcp: lookup production.cloudflare.docker.com on XXX:53: read udp XXX:57798->XXX:53: i/o timeout + + **Resolution**: + Sometimes establishing connections to the Docker Registry times out. Retry again after couple of minutes. If the issue persists - check your internet connection + +3. `mvn package -PcollectDependencies` build on `Windows` fails with: + > [ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.31.0:start (start-container) on project sample-ipam: I/O Error: Unable to create container for [ipam-dependency-collector:latest] : Drive has not been shared (Internal Server Error: 500) + + **Resolution**: + The build script uses Docker to collect the Python dependencies that are needed by the plugin. In order for Docker to operate correctly, it needs to have access to the Windows Drive that the build script resides in. + You need to allow Docker access to the respective drive: [Configure shared volume on Docker for Windows](https://blogs.msdn.microsoft.com/stevelasker/2016/06/14/configuring-docker-for-windows-volumes/) +4. `mvn package -PcollectDependencies` build fails with: + > [INFO] --- docker-maven-plugin:0.31.0:start (start-container) @ sample-ipam --- +[ERROR] DOCKER> Error occurred during container startup, shutting down... +[ERROR] DOCKER> I/O Error [Unable to create container for [ipam-dependency-collector:latest] : {"message":"Conflict. The container name \"/ipam-dependency-collector-1\" is already in use by container \"2bfb215381514cd6496ecd5d0103da0a4d94034c5691b25bdf27b16bd2236022\". You have to remove (or rename) that container to be able to reuse that name."} (Conflict: 409)] + + **Resolution**: + Run `docker ps -a ` +The output should look similar to this: + | CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES + | ------------ | ----- | ------- | ------- | ------ | ----- | ---- | + | 2bfb21538151 | d886e9bba96e | "/bin/sh -c 'yes \| c…" | 3 minutes ago | Exited (0) 3 minutes ago | | ipam-dependency-collector-1 + + Locate the container with name `ipam-dependency-collector-*` and purge it: + Run `docker rm -f 2bfb21538151` +5. `mvn package -PcollectDependencies` build fails with: + > [INFO] --- docker-maven-plugin:0.31.0:build (build-image) @ sample-ipam --- + > [INFO] Building tar: ...\sample-abx-integration\target\docker\ipam-dependency-collector\latest\tmp\docker-build.tar + > [INFO] DOCKER> [ipam-dependency-collector:latest]: Created docker-build.tar in 214 milliseconds + > [ERROR] DOCKER> Unable to build image [ipam-dependency-collector:latest] : "The command '/bin/sh -c tdnf install -y python3-3.6.5-1.ph2 python3-pip-3.6.5-1.ph2 shadow && pip3 install --upgrade pip setuptools && pip3 install certifi' returned a non-zero code: 127" ["The command '/bin/sh -c tdnf install -y python3-3.6.5-1.ph2 python3-pip-3.6.5-1.ph2 shadow && pip3 install --upgrade pip setuptools && pip3 install certifi' returned a non-zero code: 127" ] + + **Resolution**: + Sometimes the **tdnf** Photon OS package manager fails to install Python3 due to connectivity errors. + In case this happens, please wait for 1 min and retrigger the build. + If the issue persists, check your internet connectivity. + +Changelog +============ + +## IPAM SDK 1.1.0: +**Features:** +- IPAM actions are now packaged for Python 3.7.5 runtime. User's 3rd party libraries that contain binaries (defined in requirements.txt and gathered during build time when -PcollectDependencies is supplied) are now compiled against Python 3.7.5 runtime (as opposed to Python 3.6). +If you upgrade from SDK 1.0.0, you'd have to recompile with -PcollectDependencies so that new libs for Python 3.7.5 are gathered. +- This version adds a new CHANGELOG.md file in src/main/resources to allow IPAM SDK users to keep track of bug fixes, features and additions to the plugin over the course of time when a new plugin version is released. + +**Bug fixes:** +- As part of this release, a known permission issue for Linux users is fixed by adding the `-Duser.id` parameter. diff --git a/open_source_licenses.txt b/open_source_licenses.txt new file mode 100755 index 0000000..8c34588 --- /dev/null +++ b/open_source_licenses.txt @@ -0,0 +1,259 @@ +open_source_license.txt + +VMware vRealize® Automation Third-Party IP Address Management™ SDK 1.0.0 GA + +====================================================================== + +The following copyright statements and licenses apply to various open +source software packages (or portions thereof) that are distributed with +this VMware Product. + +The VMware Product may also include other VMware components, which may +contain additional open source software packages. One or more such +open_source_licenses.txt files may therefore accompany this VMware +Product. + +The VMware Product that includes this file does not necessarily use all +the open source software packages referred to below and may also only +use portions of a given package. + +=============== TABLE OF CONTENTS ============================= + +The following is a listing of the open source components detailed in +this document. This list is provided for your convenience; please read +further if you wish to review the copyright notice(s) and the full text +of the license associated with each component. + + +SECTION 1: Apache License, V2.0 + + >>> python-requests-2.21.0 + + +APPENDIX. Standard License Files + + >>> Apache License, V2.0 + + + +--------------- SECTION 1: Apache License, V2.0 ---------- + +Apache License, V2.0 is applicable to the following component(s). + + +>>> python-requests-2.21.0 + +Copyright 2018 Kenneth Reitz + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +=============== APPENDIX. Standard License Files ============== + + + +--------------- SECTION 1: Apache License, V2.0 ----------- + +Apache License + +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the +copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other +entities that control, are controlled by, or are under common control +with that entity. For the purposes of this definition, "control" means +(i) the power, direct or indirect, to cause the direction or management +of such entity, whether by contract or otherwise, or (ii) ownership +of fifty percent (50%) or more of the outstanding shares, or (iii) +beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation source, +and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation +or translation of a Source form, including but not limited to compiled +object code, generated documentation, and conversions to other media +types. + +"Work" shall mean the work of authorship, whether in Source or +Object form, made available under the License, as indicated by a copyright +notice that is included in or attached to the work (an example is provided +in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, +that is based on (or derived from) the Work and for which the editorial +revisions, annotations, elaborations, or other modifications represent, +as a whole, an original work of authorship. For the purposes of this +License, Derivative Works shall not include works that remain separable +from, or merely link (or bind by name) to the interfaces of, the Work +and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the +original version of the Work and any modifications or additions to +that Work or Derivative Works thereof, that is intentionally submitted +to Licensor for inclusion in the Work by the copyright owner or by an +individual or Legal Entity authorized to submit on behalf of the copyright +owner. For the purposes of this definition, "submitted" means any form of +electronic, verbal, or written communication sent to the Licensor or its +representatives, including but not limited to communication on electronic +mailing lists, source code control systems, and issue tracking systems +that are managed by, or on behalf of, the Licensor for the purpose of +discussing and improving the Work, but excluding communication that is +conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +2. Grant of Copyright License. +Subject to the terms and conditions of this License, each Contributor +hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, +royalty-free, irrevocable copyright license to reproduce, prepare +Derivative Works of, publicly display, publicly perform, sublicense, and +distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. +Subject to the terms and conditions of this License, each Contributor +hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, +royalty- free, irrevocable (except as stated in this section) patent +license to make, have made, use, offer to sell, sell, import, and +otherwise transfer the Work, where such license applies only to those +patent claims licensable by such Contributor that are necessarily +infringed by their Contribution(s) alone or by combination of +their Contribution(s) with the Work to which such Contribution(s) +was submitted. If You institute patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Work or a Contribution incorporated within the Work constitutes direct +or contributory patent infringement, then any patent licenses granted +to You under this License for that Work shall terminate as of the date +such litigation is filed. + +4. Redistribution. +You may reproduce and distribute copies of the Work or Derivative Works +thereof in any medium, with or without modifications, and in Source or +Object form, provided that You meet the following conditions: + + a. You must give any other recipients of the Work or Derivative Works + a copy of this License; and + + b. You must cause any modified files to carry prominent notices stating + that You changed the files; and + + c. You must retain, in the Source form of any Derivative Works that + You distribute, all copyright, patent, trademark, and attribution + notices from the Source form of the Work, excluding those notices + that do not pertain to any part of the Derivative Works; and + + d. If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one of + the following places: within a NOTICE text file distributed as part + of the Derivative Works; within the Source form or documentation, + if provided along with the Derivative Works; or, within a display + generated by the Derivative Works, if and wherever such third-party + notices normally appear. The contents of the NOTICE file are for + informational purposes only and do not modify the License. You + may add Your own attribution notices within Derivative Works that + You distribute, alongside or as an addendum to the NOTICE text + from the Work, provided that such additional attribution notices + cannot be construed as modifying the License. You may add Your own + copyright statement to Your modifications and may provide additional + or different license terms and conditions for use, reproduction, or + distribution of Your modifications, or for any such Derivative Works + as a whole, provided Your use, reproduction, and distribution of the + Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. +Unless You explicitly state otherwise, any Contribution intentionally +submitted for inclusion in the Work by You to the Licensor shall be +under the terms and conditions of this License, without any additional +terms or conditions. Notwithstanding the above, nothing herein shall +supersede or modify the terms of any separate license agreement you may +have executed with Licensor regarding such Contributions. + +6. Trademarks. +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. +Unless required by applicable law or agreed to in writing, Licensor +provides the Work (and each Contributor provides its Contributions) on +an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either +express or implied, including, without limitation, any warranties or +conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR +A PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any risks +associated with Your exercise of permissions under this License. + +8. Limitation of Liability. +In no event and under no legal theory, whether in tort (including +negligence), contract, or otherwise, unless required by applicable law +(such as deliberate and grossly negligent acts) or agreed to in writing, +shall any Contributor be liable to You for damages, including any direct, +indirect, special, incidental, or consequential damages of any character +arising as a result of this License or out of the use or inability to +use the Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all other +commercial damages or losses), even if such Contributor has been advised +of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. +While redistributing the Work or Derivative Works thereof, You may +choose to offer, and charge a fee for, acceptance of support, warranty, +indemnity, or other liability obligations and/or rights consistent with +this License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf of +any other Contributor, and only if You agree to indemnify, defend, and +hold each Contributor harmless for any liability incurred by, or claims +asserted against, such Contributor by reason of your accepting any such +warranty or additional liability. + +END OF TERMS AND CONDITIONS + + +====================================================================== + +To the extent any open source components are licensed under the GPL +and/or LGPL, or other similar licenses that require the source code +and/or modifications to source code to be made available (as would be +noted above), you may obtain a copy of the source code corresponding to +the binaries for such open source components and modifications thereto, +if any, (the "Source Files"), by downloading the Source Files from +VMware's website at http://www.vmware.com/download/open_source.html, or +by sending a request, with your name and address to: VMware, Inc., 3401 +Hillview Avenue, Palo Alto, CA 94304, United States of America. All such +requests should clearly specify: OPEN SOURCE FILES REQUEST, Attention +General Counsel. VMware shall mail a copy of the Source Files to you on +a CD or equivalent physical medium. This offer to obtain a copy of the +Source Files is valid for three years from the date you acquired this +Software product. Alternatively, the Source Files may accompany the +VMware product. +[vraipamsdk100GARZ022520] \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100755 index 0000000..4b167c5 --- /dev/null +++ b/pom.xml @@ -0,0 +1,372 @@ + + + + + 4.0.0 + + com.vmware.cas.ipam.adapter + sample-ipam + 0.0.1-SNAPSHOT + pom + + + Solarwinds IPAM + Solarwinds IPAM integration for vRA + 0.1 + + false + true + false + + 1000 + + + + collectDependencies + + + ${basedir}/target/dependencies.collected.flag + + + + + + io.fabric8 + docker-maven-plugin + 0.31.0 + + + build-image + prepare-package + + build + + + ipam-dependency-collector:latest + + + ipam-dependency-collector:latest + + ${project.basedir}/Dockerfile + @ + + + + + + + start-container + prepare-package + + start + + + + + ipam-dependency-collector:latest + + + ${basedir}/target:/ipam/result + + + Collecting-dependencies-complete + + + ${user.name} + + + + + + + stop-container + prepare-package + + stop + + + + + + maven-resources-plugin + 3.1.0 + + + package + copy-dependencies-collected-flag + + copy-resources + + + ${basedir}/target + + + src/main/resources + + dependencies.collected.flag + + + + + + + + + + + + + + + ${basedir}/src/main/resources + true + + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.12 + + + dynamic-set-props + initialize + + bsh-property + + + skipUpdateRecord = + !${provider.supportsUpdateRecord}; + excludeUpdateRecordFromAssemblyFilePattern + = skipUpdateRecord ? "update_record.abx" + : "dont-exclude"; skipOnDemandNetworks = + !${provider.supportsOnDemandNetworks}; + excludeGetIpBlocksFromAssemblyFilePattern + = skipOnDemandNetworks ? + "get_ip_blocks.abx" : "dont-exclude"; + excludeAllocateIpRangeFromAssemblyFilePattern + = skipOnDemandNetworks ? + "allocate_ip_range.abx" : "dont-exclude"; + excludeDeallocateIpRangeFromAssemblyFilePattern + = skipOnDemandNetworks ? + "deallocate_ip_range.abx" : "dont-exclude"; + supportsAddressSpaces + = ${provider.supportsAddressSpaces} ? + "supportsAddressSpaces: true" : ""; + + + skipUpdateRecord + excludeUpdateRecordFromAssemblyFilePattern + skipOnDemandNetworks + excludeGetIpBlocksFromAssemblyFilePattern + excludeAllocateIpRangeFromAssemblyFilePattern + excludeDeallocateIpRangeFromAssemblyFilePattern + supportsAddressSpaces + + + + + + + + maven-resources-plugin + 3.1.0 + + + copy-scripts + validate + + copy-resources + + + ${basedir}/target/python + + + src/main/python + + + + + + + resources + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 2.2-beta-5 + + + allocate_ip + prepare-package + + single + + + src/assembly/python/allocate_ip.xml + allocate_ip + ${project.build.directory}/actions + + + + deallocate_ip + prepare-package + + single + + + src/assembly/python/deallocate_ip.xml + deallocate_ip + ${project.build.directory}/actions + + + + get_ip_ranges + prepare-package + + single + + + src/assembly/python/get_ip_ranges.xml + get_ip_ranges + ${project.build.directory}/actions + + + + update_record + prepare-package + + single + + + src/assembly/python/update_record.xml + update_record + ${project.build.directory}/actions + ${skipUpdateRecord} + + + + validate_endpoint + prepare-package + + single + + + src/assembly/python/validate_endpoint.xml + validate_endpoint + ${project.build.directory}/actions + + + + get_ip_blocks + prepare-package + + single + + + src/assembly/python/get_ip_blocks.xml + get_ip_blocks + ${project.build.directory}/actions + ${skipOnDemandNetworks} + + + + allocate_ip_range + prepare-package + + single + + + src/assembly/python/allocate_ip_range.xml + allocate_ip_range + ${project.build.directory}/actions + ${skipOnDemandNetworks} + + + + deallocate_ip_range + prepare-package + + single + + + src/assembly/python/deallocate_ip_range.xml + deallocate_ip_range + ${project.build.directory}/actions + ${skipOnDemandNetworks} + + + + zip-actions + prepare-package + + single + + + src/assembly/zip-actions.xml + bundle + + + + zip-provider + package + + single + + + src/assembly/zip-provider.xml + ${provider.name} + + + + + + + net.nicoulaj.maven.plugins + checksum-maven-plugin + 1.8 + + + build-ipam-package-signature + prepare-package + + files + + + + + + + ${basedir}/target/ + + bundle.zip + + + + + SHA-256 + + false + true + signature + false + + + + + diff --git a/src/assembly/python/allocate_ip.xml b/src/assembly/python/allocate_ip.xml new file mode 100755 index 0000000..d9cf213 --- /dev/null +++ b/src/assembly/python/allocate_ip.xml @@ -0,0 +1,25 @@ + + + zip + + false + + + target/python/allocate_ip + + ** + + + + + target/python/commons + + ** + + + + + \ No newline at end of file diff --git a/src/assembly/python/allocate_ip_range.xml b/src/assembly/python/allocate_ip_range.xml new file mode 100755 index 0000000..1f36684 --- /dev/null +++ b/src/assembly/python/allocate_ip_range.xml @@ -0,0 +1,25 @@ + + + zip + + false + + + target/python/allocate_ip_range + + ** + + + + + target/python/commons + + ** + + + + + \ No newline at end of file diff --git a/src/assembly/python/deallocate_ip.xml b/src/assembly/python/deallocate_ip.xml new file mode 100755 index 0000000..094108b --- /dev/null +++ b/src/assembly/python/deallocate_ip.xml @@ -0,0 +1,25 @@ + + + zip + + false + + + target/python/deallocate_ip + + ** + + + + + target/python/commons + + ** + + + + + \ No newline at end of file diff --git a/src/assembly/python/deallocate_ip_range.xml b/src/assembly/python/deallocate_ip_range.xml new file mode 100755 index 0000000..4bb464a --- /dev/null +++ b/src/assembly/python/deallocate_ip_range.xml @@ -0,0 +1,25 @@ + + + zip + + false + + + target/python/deallocate_ip_range + + ** + + + + + target/python/commons + + ** + + + + + \ No newline at end of file diff --git a/src/assembly/python/get_ip_blocks.xml b/src/assembly/python/get_ip_blocks.xml new file mode 100755 index 0000000..bb3b0cd --- /dev/null +++ b/src/assembly/python/get_ip_blocks.xml @@ -0,0 +1,25 @@ + + + zip + + false + + + target/python/get_ip_blocks + + ** + + + + + target/python/commons + + ** + + + + + \ No newline at end of file diff --git a/src/assembly/python/get_ip_ranges.xml b/src/assembly/python/get_ip_ranges.xml new file mode 100755 index 0000000..c101997 --- /dev/null +++ b/src/assembly/python/get_ip_ranges.xml @@ -0,0 +1,25 @@ + + + zip + + false + + + target/python/get_ip_ranges + + ** + + + + + target/python/commons + + ** + + + + + \ No newline at end of file diff --git a/src/assembly/python/update_record.xml b/src/assembly/python/update_record.xml new file mode 100755 index 0000000..1869b63 --- /dev/null +++ b/src/assembly/python/update_record.xml @@ -0,0 +1,25 @@ + + + zip + + false + + + target/python/update_record + + ** + + + + + target/python/commons + + ** + + + + + \ No newline at end of file diff --git a/src/assembly/python/validate_endpoint.xml b/src/assembly/python/validate_endpoint.xml new file mode 100755 index 0000000..4641ee4 --- /dev/null +++ b/src/assembly/python/validate_endpoint.xml @@ -0,0 +1,25 @@ + + + zip + + false + + + target/python/validate_endpoint + + ** + + + + + target/python/commons + + ** + + + + + \ No newline at end of file diff --git a/src/assembly/zip-actions.xml b/src/assembly/zip-actions.xml new file mode 100755 index 0000000..8dcff9b --- /dev/null +++ b/src/assembly/zip-actions.xml @@ -0,0 +1,28 @@ + + + zip + + false + + + target/classes/bundle + + + ${excludeUpdateRecordFromAssemblyFilePattern} + ${excludeGetIpBlocksFromAssemblyFilePattern} + ${excludeAllocateIpRangeFromAssemblyFilePattern} + ${excludeDeallocateIpRangeFromAssemblyFilePattern} + + + + target/actions + + *.zip + + + + + \ No newline at end of file diff --git a/src/assembly/zip-provider.xml b/src/assembly/zip-provider.xml new file mode 100755 index 0000000..181b705 --- /dev/null +++ b/src/assembly/zip-provider.xml @@ -0,0 +1,29 @@ + + + zip + + false + + + target/classes + + + registration.yaml + endpoint-schema.json + logo.png + CHANGELOG.md + + + + target + + + bundle.zip + signature + + + + \ No newline at end of file diff --git a/src/main/python/.DS_Store b/src/main/python/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..6797a025f3ca7395bedebea56985e737a5b0639b GIT binary patch literal 8196 zcmeHMUu+ab82`RfV0R1cmcL!X;X+aVct9x>CKyL9=m&2 z5F4veNsIxNH&J5@YLpn`i~n9s!03aRNYWU^#0P!x(P%L7Nxzxdf(4pX9+ZTgWagXs z{><$B_BT8E?f?MOC38JM9RNsFnN+K&xkF)gR&Og6k*1O)QapeO283Wij%r+D1Y!hY z1Y!hY1Y!j4MFi;1W<{Fh-WS%mjS+|uxGxc4-v^y4lc`9K3duhm)bJF5BufE!p+4mS zJVuXXDw3l@@=%&nWDgjHVw7T_2q(MF+)1V)IVz+G2NdCe(aIQQD9Bf*IGwu#ri6^! z7=ajp+Yw;LrxwbTw>w}@$lqNW6~QB|3t@gZDCQk6Pu|z_MaK@phKBF3Vp`?&88anW zsgkRztK`GkL2o!48eu6&8-7k*oV86WZ}>g784h+?ZmVOJEw|I}Fha{e#GJc4&mjlV zH}VH;YdELQ%Xn^R*skUC`NSOkJ+^Cl!)dSNngREZCg=TqMmR|GNcE}w5xz%Rl5=X^ zsZ*QRHzxJQrsk2PeyVvxLsD&sWUI1zwqW;Z(q91qX46?3qdlm zd``nDz~ltwjDV@)+?`<3+IK&qR3H?&TKtk)NKewg8oy*9-%T~1X?fwkYF0K06pP*|X% zd~w$N#IlDTZfM%NGcz{3x<;*4<|=&zt{d7%ZOcDs1O>}AZTDFBFneD;WjnC*j@9KF zLzY~NIeBcs!n)boB5m=wNjTmNl+=2ux0JV!m+bK5m|9&kTha8TvZQ{{Z_-oj^-Q*s z$t{|uKPX9um_FlM)C#qtty)b1Mpr-^5mP8@*U7RPbUjK05TVM3jgqXI-HwsBoJh5$ znN)jv$^y+uxqXL3PoC^8ctb<9&p@a(JuOKCY~>Ck2s?|GON;Zp=~|m49b}eWrfHc( zr)U z$7k?aJdMxcIeZ0Q#n~F31NEjx;^?eb^xcWX ziI|B1xk&*IFTGk4znCG{(k>o;vn-FUgTywQJBi?d14h0|!9Cj7NdlP@=j-4_)cq;I9C75*e1%2U0 ztn@L!5|;4^9K|Q`Y2xNtd;wp?m+(Bkj_=&U#rAO)3W@Jdjf>^1?>e4)jJ(HLJ#nIV zboU5M6QOl1|8JfA_y4Z3A=EGz nrswH6$s2zdQeTg3sYs3rNfs*q`40hfvB&p+eE)Ou-N((}c2gh` literal 0 HcmV?d00001 diff --git a/src/main/python/allocate_ip/__init__.py b/src/main/python/allocate_ip/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/src/main/python/allocate_ip/requirements.txt b/src/main/python/allocate_ip/requirements.txt new file mode 100755 index 0000000..f700642 --- /dev/null +++ b/src/main/python/allocate_ip/requirements.txt @@ -0,0 +1,2 @@ +requests==2.21.0 +OrionSDK diff --git a/src/main/python/allocate_ip/source.py b/src/main/python/allocate_ip/source.py new file mode 100755 index 0000000..3050cb3 --- /dev/null +++ b/src/main/python/allocate_ip/source.py @@ -0,0 +1,144 @@ +""" +Copyright (c) 2020 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 (the "License"). +You may not use this product except in compliance with the License. + +This product may include a number of subcomponents with separate copyright notices +and license terms. Your use of these subcomponents is subject to the terms and +conditions of the subcomponent's license, as noted in the LICENSE file. +""" + +import requests +from vra_ipam_utils.ipam import IPAM +import logging +from OrionSDK import SWisClient + +""" +Example payload + +"inputs": { + "resourceInfo": { + "id": "11f912e71454a075574a728848458", + "name": "external-ipam-it-mcm-323412", + "description": "test", + "type": "VM", + "owner": "mdzhigarov@vmware.com", + "orgId": "ce811934-ea1a-4f53-b6ec-465e6ca7d126", + "properties": { + "osType": "WINDOWS", + "vcUuid": "ff257ed9-070b-45eb-b2e7-d63926d5bdd7", + "__moref": "VirtualMachine:vm-288560", + "memoryGB": "4", + "datacenter": "Datacenter:datacenter-2", + "provisionGB": "1", + "__dcSelfLink": "/resources/groups/b28c7b8de065f07558b1612fce028", + "softwareName": "Microsoft Windows XP Professional (32-bit)", + "__computeType": "VirtualMachine", + "__hasSnapshot": "false", + "__placementLink": "/resources/compute/9bdc98681fb8b27557252188607b8", + "__computeHostLink": "/resources/compute/9bdc98681fb8b27557252188607b8" + } + }, + "ipAllocations": [ + { + "id": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "ipRangeIds": [ + "network/ZG5zLm5ldHdvcmskMTAuMjMuMTE3LjAvMjQvMA:10.23.117.0/24/default" + ], + "nicIndex": "0", + "isPrimary": "true", + "size": "1", + "properties": { + "__moref": "DistributedVirtualPortgroup:dvportgroup-307087", + "__dvsUuid": "0c 8c 0b 50 46 b6 1c f2-e8 63 f4 24 24 d7 24 6c", + "__dcSelfLink": "/resources/groups/abe46b8cfa663a7558b28a6ffe088", + "__computeType": "DistributedVirtualPortgroup", + "__portgroupKey": "dvportgroup-307087" + } + } + ], + "endpoint": { + "id": "f097759d8736675585c4c5d272cd", + "endpointProperties": { + "hostName": "sampleipam.sof-mbu.eng.vmware.com", + "projectId": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "providerId": "d8a5e3f2-d839-4365-af5b-f48de588fdc1", + "certificate": "-----BEGIN CERTIFICATE-----\nMIID0jCCArqgAwIBAgIQQaJF55UCb58f9KgQLD/QgTANBgkqhkiG9w0BAQUFADCB\niTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1\nbm55dmFsZTERMA8GA1UEChMISW5mb2Jsb3gxFDASBgNVBAsTC0VuZ2luZWVyaW5n\nMSgwJgYDVQQDEx9pbmZvYmxveC5zb2YtbWJ1LmVuZy52bXdhcmUuY29tMB4XDTE5\nMDEyOTEzMDExMloXDTIwMDEyOTEzMDExMlowgYkxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxETAPBgNVBAoTCElu\nZm9ibG94MRQwEgYDVQQLEwtFbmdpbmVlcmluZzEoMCYGA1UEAxMfaW5mb2Jsb3gu\nc29mLW1idS5lbmcudm13YXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAMMLNTqbAri6rt/H8iC4UgRdN0qj+wk0R2blmD9h1BiZJTeQk1r9i2rz\nzUOZHvE8Bld8m8xJ+nysWHaoFFGTX8bOd/p20oJBGbCLqXtoLMMBGAlP7nzWGBXH\nBYUS7kMv/CG+PSX0uuB0pRbhwOFq8Y69m4HRnn2X0WJGuu+v0FmRK/1m/kCacHga\nMBKaIgbwN72rW1t/MK0ijogmLR1ASY4FlMn7OBHIEUzO+dWFBh+gPDjoBECTTH8W\n5AK9TnYdxwAtJRYWmnVqtLoT3bImtSfI4YLUtpr9r13Kv5FkYVbXov1KBrQPbYyp\n72uT2ZgDJT4YUuWyKpMppgw1VcG3MosCAwEAAaM0MDIwMAYDVR0RBCkwJ4cEChda\nCoIfaW5mb2Jsb3guc29mLW1idS5lbmcudm13YXJlLmNvbTANBgkqhkiG9w0BAQUF\nAAOCAQEAXFPIh00VI55Sdfx+czbBb4rJz3c1xgN7pbV46K0nGI8S6ufAQPgLvZJ6\ng2T/mpo0FTuWCz1IE9PC28276vwv+xJZQwQyoUq4lhT6At84NWN+ZdLEe+aBAq+Y\nxUcIWzcKv8WdnlS5DRQxnw6pQCBdisnaFoEIzngQV8oYeIemW4Hcmb//yeykbZKJ\n0GTtK5Pud+kCkYmMHpmhH21q+3aRIcdzOYIoXhdzmIKG0Och97HthqpvRfOeWQ/A\nPDbxqQ2R/3D0gt9jWPCG7c0lB8Ynl24jLBB0RhY6mBrYpFbtXBQSEciUDRJVB2zL\nV8nJiMdhj+Q+ZmtSwhNRvi2qvWAUJQ==\n-----END CERTIFICATE-----\n" + }, + "authCredentialsLink": "/core/auth/credentials/13c9cbade08950755898c4b89c4a0" + } + } +""" +def handler(context, inputs): + + ipam = IPAM(context, inputs) + IPAM.do_allocate_ip = do_allocate_ip + + return ipam.allocate_ip() + +def do_allocate_ip(self, auth_credentials, cert): + # Your implemention goes here + + username = auth_credentials["privateKeyId"] + password = auth_credentials["privateKey"] + allocation_result = [] + try: + resource = self.inputs["resourceInfo"] + for allocation in self.inputs["ipAllocations"]: + allocation_result.append(allocate(resource, allocation, self.context, self.inputs["endpoint"])) + except Exception as e: + try: + rollback(allocation_result) + except Exception as rollback_e: + logging.error(f"Error during rollback of allocation result {str(allocation_result)}") + logging.error(rollback_e) + raise e + + assert len(allocation_result) > 0 + return { + "ipAllocations": allocation_result + } + +def allocate(resource, allocation, context, endpoint): + + last_error = None + for range_id in allocation["ipRangeIds"]: + + logging.info(f"Allocating from range {range_id}") + try: + return allocate_in_range(range_id, resource, allocation, context, endpoint) + except Exception as e: + last_error = e + logging.error(f"Failed to allocate from range {range_id}: {str(e)}") + + logging.error("No more ranges. Raising last error") + raise last_error + + +def allocate_in_range(range_id, resource, allocation, context, endpoint): + + ## Plug your implementation here to allocate an ip address + ## ... + ## Allocation successful + + result = { + "ipAllocationId": allocation["id"], + "ipRangeId": range_id, + "ipVersion": "IPv4" + } + + result["ipAddresses"] = ["10.23.117.5"] + result["properties"] = {"customPropertyKey1": "customPropertyValue1"} + + return result + +## Rollback any previously allocated addresses in case this allocation request contains multiple ones and failed in the middle +def rollback(allocation_result): + for allocation in reversed(allocation_result): + logging.info(f"Rolling back allocation {str(allocation)}") + ipAddresses = allocation.get("ipAddresses", None) + + ## release the address + + return diff --git a/src/main/python/allocate_ip_range/__init__.py b/src/main/python/allocate_ip_range/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/src/main/python/allocate_ip_range/requirements.txt b/src/main/python/allocate_ip_range/requirements.txt new file mode 100755 index 0000000..8024749 --- /dev/null +++ b/src/main/python/allocate_ip_range/requirements.txt @@ -0,0 +1 @@ +requests==2.21.0 \ No newline at end of file diff --git a/src/main/python/allocate_ip_range/source.py b/src/main/python/allocate_ip_range/source.py new file mode 100755 index 0000000..c58bf4a --- /dev/null +++ b/src/main/python/allocate_ip_range/source.py @@ -0,0 +1,139 @@ +""" +Copyright (c) 2020 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 (the "License"). +You may not use this product except in compliance with the License. + +This product may include a number of subcomponents with separate copyright notices +and license terms. Your use of these subcomponents is subject to the terms and +conditions of the subcomponent's license, as noted in the LICENSE file. +""" + +import requests +from vra_ipam_utils.ipam import IPAM +import logging + +""" +Example payload + +"inputs": { + "resourceInfo": { + "id": "/resources/sub-networks/255ac10c-0198-4a92-9414-b8e0c23c0204", + "name": "net1-mcm223-126361015194", + "type": "SUBNET", + "orgId": "e0d6ea3a-519a-4308-afba-c973a8903250", + "owner": "jason@csp.local", + "properties": { + "networkType": "PRIVATE", + "datacenterId": "Datacenter:datacenter-21", + "__networkCidr": "192.168.197.0/28", + "__deploymentLink": "/resources/deployments/f77fbe4d-9e78-4b1b-93b0-024d342d0872", + "__infrastructureUse": "true", + "__composition_context_id": "f77fbe4d-9e78-4b1b-93b0-024d342d0872", + "__isInfrastructureShareable": "true" + } + }, + "ipRangeAllocation": { + "name": "net1-mcm223-126361015194", + "ipBlockIds": [ + "block1", + "block2" + ], + "properties": { + "networkType": "PRIVATE", + "datacenterId": "Datacenter:datacenter-21", + "__networkCidr": "192.168.197.0/28", + "__deploymentLink": "/resources/deployments/f77fbe4d-9e78-4b1b-93b0-024d342d0872", + "__infrastructureUse": "true", + "__composition_context_id": "f77fbe4d-9e78-4b1b-93b0-024d342d0872", + "__isInfrastructureShareable": "true" + }, + "subnetCidr": "192.168.197.0/28", + "addressSpaceId": "default" + }, + "endpoint": { + "id": "f097759d8736675585c4c5d272cd", + "endpointProperties": { + "hostName": "sampleipam.sof-mbu.eng.vmware.com", + "projectId": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "providerId": "d8a5e3f2-d839-4365-af5b-f48de588fdc1", + "certificate": "-----BEGIN CERTIFICATE-----\nMIID0jCCArqgAwIBAgIQQaJF55UCb58f9KgQLD/QgTANBgkqhkiG9w0BAQUFADCB\niTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1\nbm55dmFsZTERMA8GA1UEChMISW5mb2Jsb3gxFDASBgNVBAsTC0VuZ2luZWVyaW5n\nMSgwJgYDVQQDEx9pbmZvYmxveC5zb2YtbWJ1LmVuZy52bXdhcmUuY29tMB4XDTE5\nMDEyOTEzMDExMloXDTIwMDEyOTEzMDExMlowgYkxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxETAPBgNVBAoTCElu\nZm9ibG94MRQwEgYDVQQLEwtFbmdpbmVlcmluZzEoMCYGA1UEAxMfaW5mb2Jsb3gu\nc29mLW1idS5lbmcudm13YXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAMMLNTqbAri6rt/H8iC4UgRdN0qj+wk0R2blmD9h1BiZJTeQk1r9i2rz\nzUOZHvE8Bld8m8xJ+nysWHaoFFGTX8bOd/p20oJBGbCLqXtoLMMBGAlP7nzWGBXH\nBYUS7kMv/CG+PSX0uuB0pRbhwOFq8Y69m4HRnn2X0WJGuu+v0FmRK/1m/kCacHga\nMBKaIgbwN72rW1t/MK0ijogmLR1ASY4FlMn7OBHIEUzO+dWFBh+gPDjoBECTTH8W\n5AK9TnYdxwAtJRYWmnVqtLoT3bImtSfI4YLUtpr9r13Kv5FkYVbXov1KBrQPbYyp\n72uT2ZgDJT4YUuWyKpMppgw1VcG3MosCAwEAAaM0MDIwMAYDVR0RBCkwJ4cEChda\nCoIfaW5mb2Jsb3guc29mLW1idS5lbmcudm13YXJlLmNvbTANBgkqhkiG9w0BAQUF\nAAOCAQEAXFPIh00VI55Sdfx+czbBb4rJz3c1xgN7pbV46K0nGI8S6ufAQPgLvZJ6\ng2T/mpo0FTuWCz1IE9PC28276vwv+xJZQwQyoUq4lhT6At84NWN+ZdLEe+aBAq+Y\nxUcIWzcKv8WdnlS5DRQxnw6pQCBdisnaFoEIzngQV8oYeIemW4Hcmb//yeykbZKJ\n0GTtK5Pud+kCkYmMHpmhH21q+3aRIcdzOYIoXhdzmIKG0Och97HthqpvRfOeWQ/A\nPDbxqQ2R/3D0gt9jWPCG7c0lB8Ynl24jLBB0RhY6mBrYpFbtXBQSEciUDRJVB2zL\nV8nJiMdhj+Q+ZmtSwhNRvi2qvWAUJQ==\n-----END CERTIFICATE-----\n" + }, + "authCredentialsLink": "/core/auth/credentials/13c9cbade08950755898c4b89c4a0" + } + } +""" +def handler(context, inputs): + + ipam = IPAM(context, inputs) + IPAM.do_allocate_ip_range = do_allocate_ip_range + + return ipam.allocate_ip_range() + +def do_allocate_ip_range(self, auth_credentials, cert): + # Your implemention goes here + + username = auth_credentials["privateKeyId"] + password = auth_credentials["privateKey"] + + resource = self.inputs["resourceInfo"] + allocation = self.inputs["ipRangeAllocation"] + ipRange = allocate(resource, allocation, self.context, self.inputs["endpoint"]) + + return { + "ipRange": ipRange + } + +def allocate(resource, allocation, context, endpoint): + + last_error = None + for ip_block_id in allocation["ipBlockIds"]: + + logging.info(f"Allocating from ip block {ip_block_id}") + try: + return allocate_in_ip_block(ip_block_id, resource, allocation, context, endpoint) + except Exception as e: + last_error = e + logging.error(f"Failed to allocate from ip block {ip_block_id}: {str(e)}") + + logging.error("No more ip blocks. Raising last error") + raise last_error + + +def allocate_in_ip_block(ip_block_id, resource, allocation, context, endpoint): + + ## Plug your implementation here to allocate an ip range + ## ... + ## Allocation successful + + result = { + "id": "range-new", + + "name": "sample range new", + + "startIPAddress": "10.10.40.1", + + "endIPAddress": "10.10.40.10", + + "description": "sampleDescription", + + "ipVersion": "IPv4", + + "addressSpaceId": "default", + + "subnetPrefixLength": "24", + + "gatewayAddress": "10.10.13.1", + + "domain": "test.local", + + "tags": [{ + "key": "Building", + "value": "VMware main facility" + }], + + "properties": { + } + } + + return result diff --git a/src/main/python/commons/vra_ipam_utils/__init__.py b/src/main/python/commons/vra_ipam_utils/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/src/main/python/commons/vra_ipam_utils/exceptions.py b/src/main/python/commons/vra_ipam_utils/exceptions.py new file mode 100755 index 0000000..0355892 --- /dev/null +++ b/src/main/python/commons/vra_ipam_utils/exceptions.py @@ -0,0 +1,7 @@ +class InvalidCertificateException(Exception): + def __init__(self, message, host, port): + # Call the base class constructor with the parameters it needs + super().__init__(message) + + self.host = host + self.port = port \ No newline at end of file diff --git a/src/main/python/commons/vra_ipam_utils/ipam.py b/src/main/python/commons/vra_ipam_utils/ipam.py new file mode 100755 index 0000000..8354a97 --- /dev/null +++ b/src/main/python/commons/vra_ipam_utils/ipam.py @@ -0,0 +1,344 @@ +""" +Copyright (c) 2020 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 (the "License"). +You may not use this product except in compliance with the License. + +This product may include a number of subcomponents with separate copyright notices +and license terms. Your use of these subcomponents is subject to the terms and +conditions of the subcomponent's license, as noted in the LICENSE file. +""" + +import json +import tempfile +import os +import logging +from vra_ipam_utils.exceptions import InvalidCertificateException + +class IPAM(object): + """ IPAM holds util methods for interacting with vRA's IPAM service. + + Defines methods for the following ipam operations: + 1] Validate endpoint + 2] Get IP Ranges + 3] Allocate IP + 4] Deallocate IP + 5] Update record + """ + + def __init__(self, context, inputs): + + self.context = context + self.inputs = inputs + + # Setup the logging globally + self._setup_logger() + + def validate_endpoint(self): + + cert = None + try: + auth_credentials = self._get_auth_credentials() + cert = self._get_cert() + + return self.do_validate_endpoint(auth_credentials, cert) + except InvalidCertificateException as e: + return { + "certificateInfo": { + "certificate": self._fetch_server_certificate(e.host, e.port) + }, + "error": self._build_error_response("3002", str(e))["error"] ## Return special status code "3002" on invalid certificate + } + finally: + if cert is not None and type(cert) is str: + os.unlink(cert) + + + def get_ip_ranges(self): + + cert = None + try: + auth_credentials = self._get_auth_credentials() + cert = self._get_cert() + + result = self.do_get_ip_ranges(auth_credentials, cert) + + # Validation of returned result + err_msg = "{} is mandatory part of the response schema and must be present in the response" + assert result.get("ipRanges") is not None, err_msg.format("ipRanges") + assert isinstance(result["ipRanges"], list), "ipRanges must be a list type" + for i in range(len(result["ipRanges"])): + assert result["ipRanges"][i].get("id") is not None, err_msg.format(f"ipRanges[{i}]['id']") + assert result["ipRanges"][i].get("name") is not None, err_msg.format(f"ipRanges[{i}]['name']") + assert result["ipRanges"][i].get("startIPAddress") is not None, err_msg.format(f"ipRanges[{i}]['startIPAddress']") + assert result["ipRanges"][i].get("endIPAddress") is not None, err_msg.format(f"ipRanges[{i}]['endIPAddress']") + assert result["ipRanges"][i].get("ipVersion") is not None, err_msg.format(f"ipRanges[{i}]['ipVersion']") + assert result["ipRanges"][i].get("subnetPrefixLength") is not None, err_msg.format(f"ipRanges[{i}]['subnetPrefixLength']") + + return result + finally: + if cert is not None and type(cert) is str: + os.unlink(cert) + + + def allocate_ip(self): + + cert = None + try: + auth_credentials = self._get_auth_credentials() + cert = self._get_cert() + + result = self.do_allocate_ip(auth_credentials, cert) + + # Validation of returned result + err_msg = "{} is mandatory part of the response schema and must be present in the response" + assert result.get("ipAllocations") is not None, err_msg.format("ipAllocations") + assert isinstance(result["ipAllocations"], list), "ipAllocations must be a list type" + assert len(result["ipAllocations"]) == len(self.inputs["ipAllocations"]), "Size of ipAllocations in the inputs is different than the one in the outputs" + for i in range(len(result["ipAllocations"])): + assert result["ipAllocations"][i].get("ipAllocationId") is not None, err_msg.format(f"ipAllocations[{i}]['ipAllocationId']") + assert result["ipAllocations"][i].get("ipRangeId") is not None, err_msg.format(f"ipAllocations[{i}]['ipRangeId']") + assert result["ipAllocations"][i].get("ipVersion") is not None, err_msg.format(f"ipAllocations[{i}]['ipVersion']") + assert result["ipAllocations"][i].get("ipAddresses") is not None, err_msg.format(f"ipAllocations[{i}]['ipAddresses']") + assert isinstance(result["ipAllocations"][i]["ipAddresses"], list), f"ipAllocations[{i}]['ipAddresses'] must be a list type" + assert len(result["ipAllocations"][i]["ipAddresses"]) > 0, f"ipAllocations[{i}]['ipAddresses'] must not be empty" + + for allocation in self.inputs["ipAllocations"]: + found = False + if allocation["id"] == result["ipAllocations"][i]["ipAllocationId"]: + found = True + break + + assert found, f"Allocation result with id {result['ipAllocations'][i]['ipAllocationId']} not found" + + return result + finally: + if cert is not None and type(cert) is str: + os.unlink(cert) + + def deallocate_ip(self): + + cert = None + try: + auth_credentials = self._get_auth_credentials() + cert = self._get_cert() + + result = self.do_deallocate_ip(auth_credentials, cert) + + # Validation of returned result + err_msg = "{} is mandatory part of the response schema and must be present in the response" + assert result.get("ipDeallocations") is not None, err_msg.format("ipDeallocations") + assert isinstance(result["ipDeallocations"], list), "ipDeallocations must be a list type" + assert len(result["ipDeallocations"]) == len(self.inputs["ipDeallocations"]), "Size of ipDeallocations in the inputs is different than the one in the outputs" + for i in range(len(result["ipDeallocations"])): + assert result["ipDeallocations"][i].get("ipDeallocationId") is not None, err_msg.format(f"ipDeallocations[{i}]['ipDeallocationId']") + + for deallocation in self.inputs["ipDeallocations"]: + found = False + if deallocation["id"] == result["ipDeallocations"][i]["ipDeallocationId"]: + found = True + break + + assert found, f"Deallocation result with id {result['ipDeallocations'][i]['ipDeallocationId']} not found" + + return result + finally: + if cert is not None and type(cert) is str: + os.unlink(cert) + + def update_record(self): + + cert = None + try: + auth_credentials = self._get_auth_credentials(); + cert = self._get_cert() + + return self.do_update_record(auth_credentials, cert) + finally: + if cert is not None and type(cert) is str: + os.unlink(cert) + + def get_ip_blocks(self): + + cert = None + try: + auth_credentials = self._get_auth_credentials() + cert = self._get_cert() + + result = self.do_get_ip_blocks(auth_credentials, cert) + + # Validation of returned result + err_msg = "{} is mandatory part of the response schema and must be present in the response" + assert result.get("ipBlocks") is not None, err_msg.format("ipBlocks") + assert isinstance(result["ipBlocks"], list), "ipRanges must be a list type" + for i in range(len(result["ipBlocks"])): + assert result["ipBlocks"][i].get("id") is not None, err_msg.format(f"ipBlocks[{i}]['id']") + assert result["ipBlocks"][i].get("name") is not None, err_msg.format(f"ipBlocks[{i}]['name']") + assert result["ipBlocks"][i].get("ipBlockCIDR") is not None, err_msg.format(f"ipBlocks[{i}]['ipBlockCIDR']") + assert result["ipBlocks"][i].get("ipVersion") is not None, err_msg.format(f"ipBlocks[{i}]['ipVersion']") + + return result + finally: + if cert is not None and type(cert) is str: + os.unlink(cert) + + def allocate_ip_range(self): + + cert = None + try: + auth_credentials = self._get_auth_credentials() + cert = self._get_cert() + + result = self.do_allocate_ip_range(auth_credentials, cert) + + # Validation of returned result + err_msg = "{} is mandatory part of the response schema and must be present in the response" + assert result.get("ipRange") is not None, err_msg.format("ipRange") + assert result["ipRange"].get("id") is not None, err_msg.format(f"ipRange['id']") + assert result["ipRange"].get("name") is not None, err_msg.format(f"ipRange['name']") + assert result["ipRange"].get("startIPAddress") is not None, err_msg.format(f"ipRange['startIPAddress']") + assert result["ipRange"].get("endIPAddress") is not None, err_msg.format(f"ipRange['endIPAddress']") + assert result["ipRange"].get("ipVersion") is not None, err_msg.format(f"ipRange['ipVersion']") + assert result["ipRange"].get("subnetPrefixLength") is not None, err_msg.format(f"ipRange['subnetPrefixLength']") + + return result + finally: + if cert is not None and type(cert) is str: + os.unlink(cert) + + def deallocate_ip_range(self): + + cert = None + try: + auth_credentials = self._get_auth_credentials() + cert = self._get_cert() + + return self.do_deallocate_ip_range(auth_credentials, cert) + finally: + if cert is not None and type(cert) is str: + os.unlink(cert) + + def do_validate_endpoint(self, auth_credentials, cert): + raise Exception("Method do_validate_endpoint(self, auth_credentials, cert) not implemented") + + def do_get_ip_ranges(self, auth_credentials, cert): + raise Exception("Method do_get_ip_ranges(self, auth_credentials, cert) not implemented") + + def do_allocate_ip(self, auth_credentials, cert): + raise Exception("Method do_allocate_ip(self, auth_credentials, cert) not implemented") + + def do_deallocate_ip(self, auth_credentials, cert): + raise Exception("Method do_deallocate_ip(self, auth_credentials, cert) not implemented") + + def do_update_record(self, auth_credentials, cert): + raise Exception("Method do_update_record(self, auth_credentials, cert) not implemented") + + def do_get_ip_blocks(self, auth_credentials, cert): + raise Exception("Method do_get_ip_blocks(self, auth_credentials, cert) not implemented") + + def do_allocate_ip_range(self, auth_credentials, cert): + raise Exception("Method do_allocate_ip_range(self, auth_credentials, cert) not implemented") + + def do_deallocate_ip_range(self, auth_credentials, cert): + raise Exception("Method do_deallocate_ip_range(self, auth_credentials, cert) not implemented") + + + def _get_cert(self): + inputs = self.inputs.get("endpoint", self.inputs) + certificate = inputs["endpointProperties"].get("certificate", None) + if certificate is not None: + cert = tempfile.NamedTemporaryFile(mode='w', delete=False) + cert.write(certificate) + cert.close() + return cert.name + else: + return True + + """ Fetches the server certificate of the host. + Used in case the certificate is not automatically trusted + """ + def _fetch_server_certificate(self, hostname, port): + + logging.info(f"Fetching certificate of {hostname}") + import ssl + import socket + from OpenSSL import SSL + from OpenSSL import crypto + import os + import idna + + hostname_idna = idna.encode(hostname) + proxy = os.environ.get("http_proxy", None) + if proxy is not None: + from urllib.parse import urlparse + o = urlparse(proxy) + PROXY_ADDR = (o.hostname, o.port) + CONNECT = "CONNECT %s:%s HTTP/1.0\r\nConnection: close\r\n\r\n" % (hostname, port) + logging.info(f"HTTP Proxy is configured. Sending CONNECT command to {proxy}: {CONNECT}") + CONNECT = bytes(CONNECT, "utf-8") + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.connect(PROXY_ADDR) + sock.send(CONNECT) + logging.info(sock.recv(4096)) + else: + sock = socket.socket() + sock.connect((hostname, port)) + + ctx = SSL.Context(SSL.SSLv23_METHOD) # most compatible + ctx.check_hostname = False + ctx.verify_mode = SSL.VERIFY_NONE + + sock_ssl = SSL.Connection(ctx, sock) + sock_ssl.set_connect_state() + sock_ssl.set_tlsext_host_name(hostname_idna) + sock_ssl.do_handshake() + certs = sock_ssl.get_peer_cert_chain() + sb = "" + for cert in certs: + cert = crypto.dump_certificate(crypto.FILETYPE_PEM, cert) + cert = cert.decode() + sb += cert + + sock_ssl.shutdown() + sock_ssl.close() + sock.close() + + return sb + + def _build_error_response(self, error_code, error_message): + return { + "error": { + "errorCode": error_code, + "errorMessage": error_message + } + } + + """ Fetches the auth credentials from vRA """ + def _get_auth_credentials(self): + + if self._is_mock_request(): # Used for testing purposes within VMware + return {"privateKeyId": "admin", "privateKey":"VMware"} + + logging.info("Querying for auth credentials") + inputs = self.inputs.get("endpoint", self.inputs) + auth_credentials_link = inputs["authCredentialsLink"] + auth_credentials_response = self.context.request(auth_credentials_link, 'GET', '') ## Integrators can use context.request() to call CAS/Prelude REST endpoints + if auth_credentials_response["status"] == 200: + logging.info("Credentials obtained successfully!") + return json.loads(auth_credentials_response["content"]) + + raise Exception('Failed to obtain auth credentials from {}: {}'.format(auth_credentials_link, str(auth_credentials_response))) + + + def _setup_logger(self): + logger = logging.getLogger() + if logger.handlers: + for handler in logger.handlers: + logger.removeHandler(handler) + + logging.basicConfig(format="[%(asctime)s] [%(levelname)s] - %(message)s", level=logging.INFO) + logging.StreamHandler.emit = lambda self, record: print(logging.StreamHandler.format(self, record)) + + def _is_mock_request(self): + endpoint = self.inputs.get("endpoint", self.inputs) + return endpoint["endpointProperties"].get("isMockRequest", False) diff --git a/src/main/python/deallocate_ip/__init__.py b/src/main/python/deallocate_ip/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/src/main/python/deallocate_ip/requirements.txt b/src/main/python/deallocate_ip/requirements.txt new file mode 100755 index 0000000..8024749 --- /dev/null +++ b/src/main/python/deallocate_ip/requirements.txt @@ -0,0 +1 @@ +requests==2.21.0 \ No newline at end of file diff --git a/src/main/python/deallocate_ip/source.py b/src/main/python/deallocate_ip/source.py new file mode 100755 index 0000000..268be82 --- /dev/null +++ b/src/main/python/deallocate_ip/source.py @@ -0,0 +1,96 @@ +""" +Copyright (c) 2020 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 (the "License"). +You may not use this product except in compliance with the License. + +This product may include a number of subcomponents with separate copyright notices +and license terms. Your use of these subcomponents is subject to the terms and +conditions of the subcomponent's license, as noted in the LICENSE file. +""" + +import requests +from vra_ipam_utils.ipam import IPAM +import logging + +""" +Example payload: + +"inputs": { + "resourceInfo": { + "id": "11f912e71454a075574a728848458", + "name": "external-ipam-it-mcm-323412", + "description": "test", + "type": "VM", + "owner": "mdzhigarov@vmware.com", + "orgId": "ce811934-ea1a-4f53-b6ec-465e6ca7d126", + "properties": { + "osType": "WINDOWS", + "vcUuid": "ff257ed9-070b-45eb-b2e7-d63926d5bdd7", + "__moref": "VirtualMachine:vm-288560", + "memoryGB": "4", + "datacenter": "Datacenter:datacenter-2", + "provisionGB": "1", + "__dcSelfLink": "/resources/groups/b28c7b8de065f07558b1612fce028", + "softwareName": "Microsoft Windows XP Professional (32-bit)", + "__computeType": "VirtualMachine", + "__hasSnapshot": "false", + "__placementLink": "/resources/compute/9bdc98681fb8b27557252188607b8", + "__computeHostLink": "/resources/compute/9bdc98681fb8b27557252188607b8" + } + }, + "ipDeallocations": [ + { + "id": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "ipRangeId": "network/ZG5zLm5ldHdvcmskMTAuMjMuMTE3LjAvMjQvMA:10.23.117.0/24/default", + "ipAddress": "10.23.117.5" + } + ], + "endpoint": { + "id": "f097759d8736675585c4c5d272cd", + "endpointProperties": { + "hostName": "sampleipam.sof-mbu.eng.vmware.com", + "projectId": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "providerId": "d8a5e3f2-d839-4365-af5b-f48de588fdc1", + "certificate": "-----BEGIN CERTIFICATE-----\nMIID0jCCArqgAwIBAgIQQaJF55UCb58f9KgQLD/QgTANBgkqhkiG9w0BAQUFADCB\niTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1\nbm55dmFsZTERMA8GA1UEChMISW5mb2Jsb3gxFDASBgNVBAsTC0VuZ2luZWVyaW5n\nMSgwJgYDVQQDEx9pbmZvYmxveC5zb2YtbWJ1LmVuZy52bXdhcmUuY29tMB4XDTE5\nMDEyOTEzMDExMloXDTIwMDEyOTEzMDExMlowgYkxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxETAPBgNVBAoTCElu\nZm9ibG94MRQwEgYDVQQLEwtFbmdpbmVlcmluZzEoMCYGA1UEAxMfaW5mb2Jsb3gu\nc29mLW1idS5lbmcudm13YXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAMMLNTqbAri6rt/H8iC4UgRdN0qj+wk0R2blmD9h1BiZJTeQk1r9i2rz\nzUOZHvE8Bld8m8xJ+nysWHaoFFGTX8bOd/p20oJBGbCLqXtoLMMBGAlP7nzWGBXH\nBYUS7kMv/CG+PSX0uuB0pRbhwOFq8Y69m4HRnn2X0WJGuu+v0FmRK/1m/kCacHga\nMBKaIgbwN72rW1t/MK0ijogmLR1ASY4FlMn7OBHIEUzO+dWFBh+gPDjoBECTTH8W\n5AK9TnYdxwAtJRYWmnVqtLoT3bImtSfI4YLUtpr9r13Kv5FkYVbXov1KBrQPbYyp\n72uT2ZgDJT4YUuWyKpMppgw1VcG3MosCAwEAAaM0MDIwMAYDVR0RBCkwJ4cEChda\nCoIfaW5mb2Jsb3guc29mLW1idS5lbmcudm13YXJlLmNvbTANBgkqhkiG9w0BAQUF\nAAOCAQEAXFPIh00VI55Sdfx+czbBb4rJz3c1xgN7pbV46K0nGI8S6ufAQPgLvZJ6\ng2T/mpo0FTuWCz1IE9PC28276vwv+xJZQwQyoUq4lhT6At84NWN+ZdLEe+aBAq+Y\nxUcIWzcKv8WdnlS5DRQxnw6pQCBdisnaFoEIzngQV8oYeIemW4Hcmb//yeykbZKJ\n0GTtK5Pud+kCkYmMHpmhH21q+3aRIcdzOYIoXhdzmIKG0Och97HthqpvRfOeWQ/A\nPDbxqQ2R/3D0gt9jWPCG7c0lB8Ynl24jLBB0RhY6mBrYpFbtXBQSEciUDRJVB2zL\nV8nJiMdhj+Q+ZmtSwhNRvi2qvWAUJQ==\n-----END CERTIFICATE-----\n" + }, + "authCredentialsLink": "/core/auth/credentials/13c9cbade08950755898c4b89c4a0" + } + } +""" +def handler(context, inputs): + + ipam = IPAM(context, inputs) + IPAM.do_deallocate_ip = do_deallocate_ip + + return ipam.deallocate_ip() + +def do_deallocate_ip(self, auth_credentials, cert): + # Your implemention goes here + + username = auth_credentials["privateKeyId"] + password = auth_credentials["privateKey"] + deallocation_result = [] + for deallocation in self.inputs["ipDeallocations"]: + deallocation_result.append(deallocate(self.inputs["resourceInfo"], deallocation)) + + assert len(deallocation_result) > 0 + return { + "ipDeallocations": deallocation_result + } + +def deallocate(resource, deallocation): + ip_range_id = deallocation["ipRangeId"] + ip = deallocation["ipAddress"] + resource_id = resource["id"] + + logging.info(f"Deallocating ip {ip} from range {ip_range_id}") + + ## Plug your implementation here to deallocate an already allocated ip address + ## ... + ## Deallocation successful + + return { + "ipDeallocationId": deallocation["id"], + "message": "Success" + } diff --git a/src/main/python/deallocate_ip_range/__init__.py b/src/main/python/deallocate_ip_range/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/src/main/python/deallocate_ip_range/requirements.txt b/src/main/python/deallocate_ip_range/requirements.txt new file mode 100755 index 0000000..8024749 --- /dev/null +++ b/src/main/python/deallocate_ip_range/requirements.txt @@ -0,0 +1 @@ +requests==2.21.0 \ No newline at end of file diff --git a/src/main/python/deallocate_ip_range/source.py b/src/main/python/deallocate_ip_range/source.py new file mode 100755 index 0000000..252ea58 --- /dev/null +++ b/src/main/python/deallocate_ip_range/source.py @@ -0,0 +1,74 @@ +""" +Copyright (c) 2020 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 (the "License"). +You may not use this product except in compliance with the License. + +This product may include a number of subcomponents with separate copyright notices +and license terms. Your use of these subcomponents is subject to the terms and +conditions of the subcomponent's license, as noted in the LICENSE file. +""" + +import requests +from vra_ipam_utils.ipam import IPAM +import logging + +""" +Example payload: + +"inputs": { + "resourceInfo": { + "id": "/resources/sub-networks/255ac10c-0198-4a92-9414-b8e0c23c0204", + "name": "net1-mcm223-126361015194", + "type": "SUBNET", + "owner": "mdzhigarov@vmware.com", + "orgId": "ce811934-ea1a-4f53-b6ec-465e6ca7d126", + }, + "ipDeallocations": [ + { + "id": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "ipRangeId": "network/ZG5zLm5ldHdvcmskMTAuMjMuMTE3LjAvMjQvMA:10.23.117.0/24/default", + "ipAddress": "10.23.117.5" + } + ], + "endpoint": { + "id": "f097759d8736675585c4c5d272cd", + "endpointProperties": { + "hostName": "sampleipam.sof-mbu.eng.vmware.com", + "projectId": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "providerId": "d8a5e3f2-d839-4365-af5b-f48de588fdc1", + "certificate": "-----BEGIN CERTIFICATE-----\nMIID0jCCArqgAwIBAgIQQaJF55UCb58f9KgQLD/QgTANBgkqhkiG9w0BAQUFADCB\niTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1\nbm55dmFsZTERMA8GA1UEChMISW5mb2Jsb3gxFDASBgNVBAsTC0VuZ2luZWVyaW5n\nMSgwJgYDVQQDEx9pbmZvYmxveC5zb2YtbWJ1LmVuZy52bXdhcmUuY29tMB4XDTE5\nMDEyOTEzMDExMloXDTIwMDEyOTEzMDExMlowgYkxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxETAPBgNVBAoTCElu\nZm9ibG94MRQwEgYDVQQLEwtFbmdpbmVlcmluZzEoMCYGA1UEAxMfaW5mb2Jsb3gu\nc29mLW1idS5lbmcudm13YXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAMMLNTqbAri6rt/H8iC4UgRdN0qj+wk0R2blmD9h1BiZJTeQk1r9i2rz\nzUOZHvE8Bld8m8xJ+nysWHaoFFGTX8bOd/p20oJBGbCLqXtoLMMBGAlP7nzWGBXH\nBYUS7kMv/CG+PSX0uuB0pRbhwOFq8Y69m4HRnn2X0WJGuu+v0FmRK/1m/kCacHga\nMBKaIgbwN72rW1t/MK0ijogmLR1ASY4FlMn7OBHIEUzO+dWFBh+gPDjoBECTTH8W\n5AK9TnYdxwAtJRYWmnVqtLoT3bImtSfI4YLUtpr9r13Kv5FkYVbXov1KBrQPbYyp\n72uT2ZgDJT4YUuWyKpMppgw1VcG3MosCAwEAAaM0MDIwMAYDVR0RBCkwJ4cEChda\nCoIfaW5mb2Jsb3guc29mLW1idS5lbmcudm13YXJlLmNvbTANBgkqhkiG9w0BAQUF\nAAOCAQEAXFPIh00VI55Sdfx+czbBb4rJz3c1xgN7pbV46K0nGI8S6ufAQPgLvZJ6\ng2T/mpo0FTuWCz1IE9PC28276vwv+xJZQwQyoUq4lhT6At84NWN+ZdLEe+aBAq+Y\nxUcIWzcKv8WdnlS5DRQxnw6pQCBdisnaFoEIzngQV8oYeIemW4Hcmb//yeykbZKJ\n0GTtK5Pud+kCkYmMHpmhH21q+3aRIcdzOYIoXhdzmIKG0Och97HthqpvRfOeWQ/A\nPDbxqQ2R/3D0gt9jWPCG7c0lB8Ynl24jLBB0RhY6mBrYpFbtXBQSEciUDRJVB2zL\nV8nJiMdhj+Q+ZmtSwhNRvi2qvWAUJQ==\n-----END CERTIFICATE-----\n" + }, + "authCredentialsLink": "/core/auth/credentials/13c9cbade08950755898c4b89c4a0" + } + } +""" +def handler(context, inputs): + + ipam = IPAM(context, inputs) + IPAM.do_deallocate_ip_range = do_deallocate_ip_range + + return ipam.deallocate_ip_range() + +def do_deallocate_ip_range(self, auth_credentials, cert): + # Your implemention goes here + + username = auth_credentials["privateKeyId"] + password = auth_credentials["privateKey"] + deallocation_result = deallocate(self.inputs["resourceInfo"], self.inputs["ipRangeDeallocation"]) + + return { + "message": f"Successfully deallocated {str(deallocation_result)}" + } + +def deallocate(resource, deallocation): + ip_range_id = deallocation["ipRangeId"] + resource_id = resource["id"] + + logging.info(f"Deallocating ip range {ip_range_id}") + + ## Plug your implementation here to deallocate an already allocated ip address + ## ... + ## Deallocation successful + + return "Deallocated!" diff --git a/src/main/python/get_ip_blocks/__init__.py b/src/main/python/get_ip_blocks/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/src/main/python/get_ip_blocks/requirements.txt b/src/main/python/get_ip_blocks/requirements.txt new file mode 100755 index 0000000..8024749 --- /dev/null +++ b/src/main/python/get_ip_blocks/requirements.txt @@ -0,0 +1 @@ +requests==2.21.0 \ No newline at end of file diff --git a/src/main/python/get_ip_blocks/source.py b/src/main/python/get_ip_blocks/source.py new file mode 100755 index 0000000..282e471 --- /dev/null +++ b/src/main/python/get_ip_blocks/source.py @@ -0,0 +1,130 @@ +""" +Copyright (c) 2020 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 (the "License"). +You may not use this product except in compliance with the License. + +This product may include a number of subcomponents with separate copyright notices +and license terms. Your use of these subcomponents is subject to the terms and +conditions of the subcomponent's license, as noted in the LICENSE file. +""" + +import requests +from vra_ipam_utils.ipam import IPAM +import logging + +''' +Example payload: + +"inputs": { + "endpoint": { + "id": "f097759d8736675585c4c5d272cd", + "authCredentialsLink": "/core/auth/credentials/13c9cbade08950755898c4b89c4a0", + "endpointProperties": { + "hostName": "sampleipam.sof-mbu.eng.vmware.com", + "certificate": "-----BEGIN CERTIFICATE-----\nMIID0jCCArqgAwIBAgIQQaJF55UCb58f9KgQLD/QgTANBgkqhkiG9w0BAQUFADCB\niTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1\nbm55dmFsZTERMA8GA1UEChMISW5mb2Jsb3gxFDASBgNVBAsTC0VuZ2luZWVyaW5n\nMSgwJgYDVQQDEx9pbmZvYmxveC5zb2YtbWJ1LmVuZy52bXdhcmUuY29tMB4XDTE5\nMDEyOTEzMDExMloXDTIwMDEyOTEzMDExMlowgYkxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxETAPBgNVBAoTCElu\nZm9ibG94MRQwEgYDVQQLEwtFbmdpbmVlcmluZzEoMCYGA1UEAxMfaW5mb2Jsb3gu\nc29mLW1idS5lbmcudm13YXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAMMLNTqbAri6rt/H8iC4UgRdN0qj+wk0R2blmD9h1BiZJTeQk1r9i2rz\nzUOZHvE8Bld8m8xJ+nysWHaoFFGTX8bOd/p20oJBGbCLqXtoLMMBGAlP7nzWGBXH\nBYUS7kMv/CG+PSX0uuB0pRbhwOFq8Y69m4HRnn2X0WJGuu+v0FmRK/1m/kCacHga\nMBKaIgbwN72rW1t/MK0ijogmLR1ASY4FlMn7OBHIEUzO+dWFBh+gPDjoBECTTH8W\n5AK9TnYdxwAtJRYWmnVqtLoT3bImtSfI4YLUtpr9r13Kv5FkYVbXov1KBrQPbYyp\n72uT2ZgDJT4YUuWyKpMppgw1VcG3MosCAwEAAaM0MDIwMAYDVR0RBCkwJ4cEChda\nCoIfaW5mb2Jsb3guc29mLW1idS5lbmcudm13YXJlLmNvbTANBgkqhkiG9w0BAQUF\nAAOCAQEAXFPIh00VI55Sdfx+czbBb4rJz3c1xgN7pbV46K0nGI8S6ufAQPgLvZJ6\ng2T/mpo0FTuWCz1IE9PC28276vwv+xJZQwQyoUq4lhT6At84NWN+ZdLEe+aBAq+Y\nxUcIWzcKv8WdnlS5DRQxnw6pQCBdisnaFoEIzngQV8oYeIemW4Hcmb//yeykbZKJ\n0GTtK5Pud+kCkYmMHpmhH21q+3aRIcdzOYIoXhdzmIKG0Och97HthqpvRfOeWQ/A\nPDbxqQ2R/3D0gt9jWPCG7c0lB8Ynl24jLBB0RhY6mBrYpFbtXBQSEciUDRJVB2zL\nV8nJiMdhj+Q+ZmtSwhNRvi2qvWAUJQ==\n-----END CERTIFICATE-----\n" + } + }, + "pagingAndSorting": { + "maxResults": 1000, + "pageToken": "87811419dec2112cda2aa29685685d650ac1f61f" + } + } +''' +def handler(context, inputs): + + ipam = IPAM(context, inputs) + IPAM.do_get_ip_blocks = do_get_ip_blocks + + return ipam.get_ip_blocks() + +def do_get_ip_blocks(self, auth_credentials, cert): + # Your implemention goes here + username = auth_credentials["privateKeyId"] + password = auth_credentials["privateKey"] + + ## If many IP blocks are expected on the IPAM server, it is considered a best practice + ## to return them page by page instead of all at once. + ## The vRA IPAM Service will propagate a pageToken string with each consecutive request + ## until all pages are exhausted + pageToken = self.inputs['pagingAndSorting'].get('pageToken', None) ## The first request that vRA sends is with 'None' pageToken + + ## Plug your implementation here to collect all the ip blocks from the external IPAM system + result_ip_blocks, next_page_token = collect_ip_blocks(pageToken) + + result = { + "ipBlocks": result_ip_blocks + } + + ## Return the next page token so that vRA can process the first page and then fetch the second page or ip blocks with the next request + if next_page_token is not None: + result["nextPageToken"] = next_page_token + + return result + +def collect_ip_blocks(pageToken): + logging.info("Collecting ip blocks") + + ip_block1 = { + "id": "block1", + + "name": "sample name 1", + + "ipBlockCIDR": "10.10.0.0/16", + + "description": "sampleDescription", + + "ipVersion": "IPv4", + + "addressSpaceId": "default", + + "gatewayAddress": "10.10.13.1", + + "domain": "test.local", + + "tags": [{ + "key": "Building", + "value": "VMware main facility" + }], + + "properties": { + } + } + + ip_block2 = { + "id": "block2", + + "name": "sample name 2", + + "ipBlockCIDR": "10.10.40.0/24", + + "description": "sampleDescription", + + "ipVersion": "IPv4", + + "addressSpaceId": "default", + + "dnsServerAddresses": ["10.10.17.3", "10.10.22.1"], + + "dnsSearchDomains": ["com", "net", "test.local"], + + "domain": "test.local", + + "tags": [{ + "key": "Building", + "value": "VMware main facility" + }], + + "properties": { + } + } + + result = [] + next_page_token = None + if pageToken is None: + result = [ip_block1] + next_page_token = "87811419dec2112cda2aa29685685d650ac1f61f" + else: + result = [ip_block2] + + return result, next_page_token diff --git a/src/main/python/get_ip_ranges/__init__.py b/src/main/python/get_ip_ranges/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/src/main/python/get_ip_ranges/requirements.txt b/src/main/python/get_ip_ranges/requirements.txt new file mode 100755 index 0000000..c9e0a82 --- /dev/null +++ b/src/main/python/get_ip_ranges/requirements.txt @@ -0,0 +1,3 @@ +requests==2.21.0 +orionsdk +json diff --git a/src/main/python/get_ip_ranges/source.py b/src/main/python/get_ip_ranges/source.py new file mode 100755 index 0000000..fb3d05a --- /dev/null +++ b/src/main/python/get_ip_ranges/source.py @@ -0,0 +1,156 @@ +""" +Copyright (c) 2020 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 (the "License"). +You may not use this product except in compliance with the License. + +This product may include a number of subcomponents with separate copyright notices +and license terms. Your use of these subcomponents is subject to the terms and +conditions of the subcomponent's license, as noted in the LICENSE file. +""" + +import requests +from vra_ipam_utils.ipam import IPAM +import logging +from orionsdk import SwisClient +import json + +''' +Example payload: + +"inputs": { + "endpoint": { + "id": "f097759d8736675585c4c5d272cd", + "authCredentialsLink": "/core/auth/credentials/13c9cbade08950755898c4b89c4a0", + "endpointProperties": { + "hostName": "sampleipam.sof-mbu.eng.vmware.com", + "certificate": "-----BEGIN CERTIFICATE-----\nMIID0jCCArqgAwIBAgIQQaJF55UCb58f9KgQLD/QgTANBgkqhkiG9w0BAQUFADCB\niTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1\nbm55dmFsZTERMA8GA1UEChMISW5mb2Jsb3gxFDASBgNVBAsTC0VuZ2luZWVyaW5n\nMSgwJgYDVQQDEx9pbmZvYmxveC5zb2YtbWJ1LmVuZy52bXdhcmUuY29tMB4XDTE5\nMDEyOTEzMDExMloXDTIwMDEyOTEzMDExMlowgYkxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxETAPBgNVBAoTCElu\nZm9ibG94MRQwEgYDVQQLEwtFbmdpbmVlcmluZzEoMCYGA1UEAxMfaW5mb2Jsb3gu\nc29mLW1idS5lbmcudm13YXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAMMLNTqbAri6rt/H8iC4UgRdN0qj+wk0R2blmD9h1BiZJTeQk1r9i2rz\nzUOZHvE8Bld8m8xJ+nysWHaoFFGTX8bOd/p20oJBGbCLqXtoLMMBGAlP7nzWGBXH\nBYUS7kMv/CG+PSX0uuB0pRbhwOFq8Y69m4HRnn2X0WJGuu+v0FmRK/1m/kCacHga\nMBKaIgbwN72rW1t/MK0ijogmLR1ASY4FlMn7OBHIEUzO+dWFBh+gPDjoBECTTH8W\n5AK9TnYdxwAtJRYWmnVqtLoT3bImtSfI4YLUtpr9r13Kv5FkYVbXov1KBrQPbYyp\n72uT2ZgDJT4YUuWyKpMppgw1VcG3MosCAwEAAaM0MDIwMAYDVR0RBCkwJ4cEChda\nCoIfaW5mb2Jsb3guc29mLW1idS5lbmcudm13YXJlLmNvbTANBgkqhkiG9w0BAQUF\nAAOCAQEAXFPIh00VI55Sdfx+czbBb4rJz3c1xgN7pbV46K0nGI8S6ufAQPgLvZJ6\ng2T/mpo0FTuWCz1IE9PC28276vwv+xJZQwQyoUq4lhT6At84NWN+ZdLEe+aBAq+Y\nxUcIWzcKv8WdnlS5DRQxnw6pQCBdisnaFoEIzngQV8oYeIemW4Hcmb//yeykbZKJ\n0GTtK5Pud+kCkYmMHpmhH21q+3aRIcdzOYIoXhdzmIKG0Och97HthqpvRfOeWQ/A\nPDbxqQ2R/3D0gt9jWPCG7c0lB8Ynl24jLBB0RhY6mBrYpFbtXBQSEciUDRJVB2zL\nV8nJiMdhj+Q+ZmtSwhNRvi2qvWAUJQ==\n-----END CERTIFICATE-----\n" + } + }, + "pagingAndSorting": { + "maxResults": 1000, + "pageToken": "789c55905d6e02310c84df7d91452a456481168ec04b55950344f9db55dadd384abc056e5f3b42adfa12299f279ec9ac7c5670e9b0045a4ad2430c93af7a465f3bc83d4f9e3aa8976e6681ce660c827770de2aa1a68c72dfc3cae74393999b2e4df302e72691373aa60199bd827398efac18810f87a952591c61817c849513999df0b6c11436d6d400effcfacc14f2099cd6768913c5a435a0fd0c8e20ab2dbcd147564a2228c93b60b99ae2d94efde6ac640a09d9331130c539367078c41c915067ac9122268dc350439bf3379e9bc01b32025e9bd111aa65c829e89e83f0135ba740572c5f525c73f95faa608e39e55e62c6fcbd37de9775b891212a758d59bceb7a0eb30d7c7f6cd35c1399984291053b30f29fc5feed6cedf7adfe21962ab17b8ebde5089b1fec0d97d7-e5c4e5a1d726f600c22ebfd9f186148a1449755fd79a69ceabfe2aa" + } + } +''' +def handler(context, inputs): + + ipam = IPAM(context, inputs) + IPAM.do_get_ip_ranges = do_get_ip_ranges + + return ipam.get_ip_ranges() + +def do_get_ip_ranges(self, auth_credentials, cert): + # Your implemention goes here + username = auth_credentials["privateKeyId"] + password = auth_credentials["privateKey"] + hostname = self.inputs["endpoint"]["endpointProperties"]["hostName"] + + swis = SwisClient(hostname, username, password) + + dResults = swis.query("SELECT DISTINCT GroupID, FriendlyName, Address, CIDR, Comments, Location, i.CustomProperties.Site_ID FROM IPAM.GroupNode i WHERE GroupTypeText LIKE 'Subnet' AND Address LIKE '10.28.248.%'") + jResults = json.dumps(dResults) + + + + ## If many IP ranges are expected on the IPAM server, it is considered a best practice + ## to return them page by page instead of all at once. + ## The vRA IPAM Service will propagate a pageToken string with each consecutive request + ## until all pages are exhausted + # pageToken = self.inputs['pagingAndSorting'].get('pageToken', None) ## The first request that vRA sends is with 'None' pageToken + + + + ## Plug your implementation here to collect all the ranges from the external IPAM system + result_ranges, next_page_token = collect_ranges(pageToken) + + result = { + "ipRanges": result_ranges + } + + ## Return the next page token so that vRA can process the first page and then fetch the second page or ranges with the next request + if next_page_token is not None: + result["nextPageToken"] = next_page_token + + return result + +def collect_ranges(pageToken): + logging.info("Collecting ranges") + + range1 = { + "id": "us1lab-servers-10.28.248.128_26", + + "name": "US1-Lab Servers 10.28.248.128/26", + + "startIPAddress": "10.28.248.129", + + "endIPAddress": "10.28.248.189", + + "description": "labNet", + + "ipVersion": "IPv4", + + "addressSpaceId": "default", + + "subnetPrefixLength": "26", + + "gatewayAddress": "10.28.248.190", + + "dnsServerAddresses": ["140.165.150.35", "140.165.235.36"], + + "dnsSearchDomains": ["tdy.teledyne.com"], + + "domain": "tdy.teledyne.com", + + "tags": [{ + "key": "Building", + "value": "7" + }], + + "properties": { + } + } + + + # range2 = { + # "id": "range2", + + # "name": "sample name 2", + + # "startIPAddress": "10.23.117.1", + + # "endIPAddress": "10.23.117.254", + + # "description": "sampleDescription", + + # "ipVersion": "IPv4", + + # "addressSpaceId": "default", + + # "subnetPrefixLength": "24", + + # "dnsServerAddresses": ["10.10.17.3", "10.10.22.1"], + + # "dnsSearchDomains": ["com", "net", "test.local"], + + # "domain": "test.local", + + # "tags": [{ + # "key": "Building", + # "value": "VMware main facility" + # }], + + # "properties": { + # } + # } + + result = [] + # next_page_token = None + # if pageToken is None: + # result = [range1] + # next_page_token = "87811419dec2112cda2aa29685685d650ac1f61f" + # else: + # result = [range2] + result = [range1] + + return result, next_page_token diff --git a/src/main/python/update_record/__init__.py b/src/main/python/update_record/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/src/main/python/update_record/requirements.txt b/src/main/python/update_record/requirements.txt new file mode 100755 index 0000000..8024749 --- /dev/null +++ b/src/main/python/update_record/requirements.txt @@ -0,0 +1 @@ +requests==2.21.0 \ No newline at end of file diff --git a/src/main/python/update_record/source.py b/src/main/python/update_record/source.py new file mode 100755 index 0000000..be76fba --- /dev/null +++ b/src/main/python/update_record/source.py @@ -0,0 +1,92 @@ +""" +Copyright (c) 2020 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 (the "License"). +You may not use this product except in compliance with the License. + +This product may include a number of subcomponents with separate copyright notices +and license terms. Your use of these subcomponents is subject to the terms and +conditions of the subcomponent's license, as noted in the LICENSE file. +""" + +import requests +from vra_ipam_utils.ipam import IPAM +import logging + +""" +Example payload: + +"inputs": { + "resourceInfo": { + "id": "11f912e71454a075574a728848458", + "name": "external-ipam-it-mcm-323412", + "description": "test", + "type": "VM", + "owner": "mdzhigarov@vmware.com", + "orgId": "ce811934-ea1a-4f53-b6ec-465e6ca7d126", + "properties": { + "osType": "WINDOWS", + "vcUuid": "ff257ed9-070b-45eb-b2e7-d63926d5bdd7", + "__moref": "VirtualMachine:vm-288560", + "memoryGB": "4", + "datacenter": "Datacenter:datacenter-2", + "provisionGB": "1", + "__dcSelfLink": "/resources/groups/b28c7b8de065f07558b1612fce028", + "softwareName": "Microsoft Windows XP Professional (32-bit)", + "__computeType": "VirtualMachine", + "__hasSnapshot": "false", + "__placementLink": "/resources/compute/9bdc98681fb8b27557252188607b8", + "__computeHostLink": "/resources/compute/9bdc98681fb8b27557252188607b8" + } + }, + "addressInfos": [ + { + "nicIndex": 0, + "address": "10.23.117.5", + "macAddress": "00:30:26:a7:23:26" + } + ], + "endpoint": { + "id": "f097759d8736675585c4c5d272cd", + "endpointProperties": { + "hostName": "sampleipam.sof-mbu.eng.vmware.com", + "projectId": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "providerId": "d8a5e3f2-d839-4365-af5b-f48de588fdc1", + "certificate": "-----BEGIN CERTIFICATE-----\nMIID0jCCArqgAwIBAgIQQaJF55UCb58f9KgQLD/QgTANBgkqhkiG9w0BAQUFADCB\niTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1\nbm55dmFsZTERMA8GA1UEChMISW5mb2Jsb3gxFDASBgNVBAsTC0VuZ2luZWVyaW5n\nMSgwJgYDVQQDEx9pbmZvYmxveC5zb2YtbWJ1LmVuZy52bXdhcmUuY29tMB4XDTE5\nMDEyOTEzMDExMloXDTIwMDEyOTEzMDExMlowgYkxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxETAPBgNVBAoTCElu\nZm9ibG94MRQwEgYDVQQLEwtFbmdpbmVlcmluZzEoMCYGA1UEAxMfaW5mb2Jsb3gu\nc29mLW1idS5lbmcudm13YXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAMMLNTqbAri6rt/H8iC4UgRdN0qj+wk0R2blmD9h1BiZJTeQk1r9i2rz\nzUOZHvE8Bld8m8xJ+nysWHaoFFGTX8bOd/p20oJBGbCLqXtoLMMBGAlP7nzWGBXH\nBYUS7kMv/CG+PSX0uuB0pRbhwOFq8Y69m4HRnn2X0WJGuu+v0FmRK/1m/kCacHga\nMBKaIgbwN72rW1t/MK0ijogmLR1ASY4FlMn7OBHIEUzO+dWFBh+gPDjoBECTTH8W\n5AK9TnYdxwAtJRYWmnVqtLoT3bImtSfI4YLUtpr9r13Kv5FkYVbXov1KBrQPbYyp\n72uT2ZgDJT4YUuWyKpMppgw1VcG3MosCAwEAAaM0MDIwMAYDVR0RBCkwJ4cEChda\nCoIfaW5mb2Jsb3guc29mLW1idS5lbmcudm13YXJlLmNvbTANBgkqhkiG9w0BAQUF\nAAOCAQEAXFPIh00VI55Sdfx+czbBb4rJz3c1xgN7pbV46K0nGI8S6ufAQPgLvZJ6\ng2T/mpo0FTuWCz1IE9PC28276vwv+xJZQwQyoUq4lhT6At84NWN+ZdLEe+aBAq+Y\nxUcIWzcKv8WdnlS5DRQxnw6pQCBdisnaFoEIzngQV8oYeIemW4Hcmb//yeykbZKJ\n0GTtK5Pud+kCkYmMHpmhH21q+3aRIcdzOYIoXhdzmIKG0Och97HthqpvRfOeWQ/A\nPDbxqQ2R/3D0gt9jWPCG7c0lB8Ynl24jLBB0RhY6mBrYpFbtXBQSEciUDRJVB2zL\nV8nJiMdhj+Q+ZmtSwhNRvi2qvWAUJQ==\n-----END CERTIFICATE-----\n" + }, + "authCredentialsLink": "/core/auth/credentials/13c9cbade08950755898c4b89c4a0" + } + } +""" +def handler(context, inputs): + + ipam = IPAM(context, inputs) + IPAM.do_update_record = do_update_record + + return ipam.update_record() + +def do_update_record(self, auth_credentials, cert): + # Your implemention goes here + + username = auth_credentials["privateKeyId"] + password = auth_credentials["privateKey"] + update_result = [] + resource = self.inputs["resourceInfo"] + for update_record in self.inputs["addressInfos"]: + update_result.append(update(resource, self.inputs, update_record)) + + assert len(update_result) > 0 + return { + "updateResults": update_result + } + +def update(resource, inputs, update_record): + try: + ## Plug your implementation here to update the MAC address of an already allocate ip record + ## Search the record and update its MAC + mac = update_record["macAddress"] + + return "Success" + except Exception as e: + logging.error(f"Failed to update record {update_record}: {e}") + raise e diff --git a/src/main/python/validate_endpoint/.libs_cffi_backend/libffi-806b1a9d.so.6.0.4 b/src/main/python/validate_endpoint/.libs_cffi_backend/libffi-806b1a9d.so.6.0.4 new file mode 100755 index 0000000000000000000000000000000000000000..13bc481195e17946b05ce0ed920d656815083e93 GIT binary patch literal 46632 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 literal 0 HcmV?d00001 diff --git a/src/main/python/validate_endpoint/__init__.py b/src/main/python/validate_endpoint/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/src/main/python/validate_endpoint/_cffi_backend.cpython-36m-x86_64-linux-gnu.so b/src/main/python/validate_endpoint/_cffi_backend.cpython-36m-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..9560f0aa1aac39fa5b686e4c2a39d7d89a03439b GIT binary patch literal 849704 zcmeFad3;nw_BP(xq(SgDLNqQjwiq=aYT_78lxPPMxD6d?_6UNlD8@Z%w+7i7I~jAm z)0)8zopFqgOWek|VMN6aTO#8UP?SZbLDAa;G=heRNPf?$s@tiQ6IS9Gua>gTW)cgC3D~H45C~)+}-%}lbVresy zcYc3y@cC3m+P{#@@PwVgtB&}6@;_u;;!Zk#>3^-F$m(ylNN4|2TKeZlestY%EiaGy zo9$%D9QLpM9A(4G*~p)BG!Eej#c$&*4)weFuU)@BfK0|8JZGo2^Rerf%r7SN?Ky=f z6~FZwhxV^SJV>QuPF6VTfpZ#m+SAO{4VGSJCz+nv> z*1%y69M-^L4II|MVGSJCz+nv>*1%y69M-^L4II|MVGSJCz+nv>*1%y69M-^L4II|M zVGSJCz+nv>*1%y69M-^L4II|MVGSJCz+nyiKcE4A0!saBAE@GdntiZJO4d7tbmI>% zdq2UE&Dp5~Hg$3?1x^5b&pcF&cam@_@4 z`roPS)cp7NQhMM2BN;u<(doogoO6@^&%w~y;s- zMu)A3e8J}^{NSm)ULJ+_3;E>=KThzK3a<-uYT@J-jM-x5BR!e1XC@3*N8r>jht-@NI$*D|}q=OBH^b;2RZwkKkJs zez)M`3jeF%yA=L_;9alx)<&+x|*d zc-w#a72ft^r!~zzd4rmw)3QaQ+V6IxfI^^Z&?a&`!~13+x{&_;cfqxtMImeD^Pgbzj+ki_HVkv z+y2e3@V0*|S9sgM1r*-)Zxsq}`?pGkxBXR>!rT5TtnkV4UE%HVy-wlnaeS%5+v9k> z!q-mV{<%TnV}fr~cuVk23ZFBP%ZVxct(SAYP2qP6zZzHg?*-qX@CO9%c(b>CX3XaD zT?#))@NR`aN$?(pw{iW>-tq?oxcml%A0+sg!rSRv6~1H|mlId`a#{CvU372cL(DST9< zcYN2o9d}LU^>QlwqawXq;cflrD!iRlMCP@C^$8q2L=8{$A04n-u;tkv^vI+XUaL@ZSr*P2qnQ{3eBWi1@Zc;qCt3 zrSNwD(yiX@dza`J0fmo$&(qZ@e1Uk+Z>hqU3BF$8M+iUJpzwhY*|gLVSNL+FPfOur zpYZe@3h)1%^IZxbf1j7%ljvRF%S1ob6~1ykx2tl64}Zd+4=DU3QLhSx_dmu)5hfl6#g7xhZPE+yOGPOQh4`=TuxZw z%SF9v6+Zk|UazGJAK1X<)GPdAQLhGt_dL(b)1>k%xty57n?g>j!q<0mIhzzdzLv|0 zEBqruj-~LG|KM`E6y7c5ING^9+kT!Ba-0h9K8NckOW_@>`SWgtKR7FuWt^k%jcJ@O zP$h?_0fm22)T=__JA|LCQux4nE+?$;U(V#^uT^-@ zyTX1{ej}Gtukde*@-!%XIL_gMPJzM)KI7%6Quq%= zdFm9t{$E1R3h!Ua`3{A5eI)dt@O67cz4r9hL&sZOj;`>@@m|CWw%%MWF2|+tj&vbk z;X4L!-mUN+C+Bk%zU@fP=PJDW2+kKMe4roaJqqtn<-D%&o<+RAeua08;OWa1zH&R~ z0}AhcfXk^+_{RG=U#akQg0E8eSd^y^E4-(G=Uc1r^;0=tr|=HpAC@Y7_#l^GukdYQ z&NryM!TCmo&pn#w+obT7w{kwF@bT+7->ULgaK269JKA}^n-tz-$CC=bM~t(U!pDE$ zavVSOw)0EHyx6JmZTon7x5EEjq|Z@!&jFs^qwvp&^t!@_Mf!lkpE)~~393-|wn1D! zVTFIno`))Y$Je|(^$LH#NZ+9F_1k&+n8IHu%G0Xwf#-O6;tF3N#urQBV^8z+j*i~? zPZ#lwQ{mf!JiS}tPZjZMj>6YDxZXSpZ^yT~!g~hu^Z|vp>r>%9B0h{OyuChSDZFEu@DD%r*3XARzEj~FKjrmxEBt1WK1bm_BE3i9 zzZU6rg?GKn<%bo%L&Ryd3h(#u^4BSRhltbaRbI$xQ26>WTu!6H+j3$GU%88yvsK|6 zw{qV3b8meHc5vRK@Eu;BuV3Yt@bqzopD*S+&d%QQcME;yD*Qgdmn-~1!G{$-U979e z6+US{3SapsFQjALi)`6y8p+D}1Tw*M5cf2sr_T*F?UR3V(|jAFC8T zSB$5%3V)1{vsB^j{girzkFDbMYE<~Mgq)bdPZE5q!Z*If?O~I`j}qxEgMu6+OP0;3poLWe_6<> zQ24kQud5XPQ6Z;R;a?Pdox;aOz3LVIS&_a`;g^f@G%0+YkkhL0ZwNV#UwZ35_fD=) zr^0)-aNecxx#w|va4US{gFL-Q;cfZl3STMgGobKsFng6_ zddmq{v*eDYhkEmyMfygC?|6o%FX--_J}lNxDiq!$*1@Y3-rg5!PZc})Nuro(`Z~1P)yA(eDHE*XZh4+a5=vMfE;Byq-wVIc6slvN0 z&Sz!xF3;erQ`wDNg|8Fq8|5nhFqhM$@E&3RF@>)ae!y`=?|kik(WLNai}JK7eB&OT zZzjD`fWmhOzFy%yPX2tk__gg;7v-r`c$bK;mMVPxXFT6Vg}38H zkMIY!d|MA)3V*rC*VV6gy#m4x3l!cj?AfF6c3kLJcsuSaSNPayuFrtNH-5|cN`()I z_`FKtJzIJD28EA}NN+f8`Qy+Z^2sNW3`m&K{|d_<^<%{8mc*V2Q7i_+unKEb+%me67U)S>o#? z{&b07D)DDYe7(evQhb2B& z;ulMNfyDn+;yn^yEAhI-i=}^d*Dvw+Na@QZUUXe{Hz4tkNa-si{@)T`De+>9l-;e8 zc(Fyz_^`ykD#@vp`1d5fPU2${zf|H^NqoJ;w@Q42#EUI_cDGUD#ZeW;H%a^!Nlr}S z;}YL0@!KW7QpBs|-GvKgcU>YrRQW~`@2R|B#AzzuA>u2QcL_hQ@{Pg|t9(o)5|7uVlK*lgULL~=B>w1RYKOxk z@q;8@m-tMH_e*@1#FtC_aS|Vp_~RwMLgG)5_)3XCQR1s4{!bDgmiUt-zE?7v1z@09qv zCEg|Rro?AS{NE(rE%8x_&yo0hB|cZ;@00ifiLaA*kHr67;&q8%BJqBSzhC0ZCH?`4 z4@mrj5?>+l4@rEb#6K+YRTBTG#D^vR9}-_H@&AOMIKeKO^y*B>q{6k4t=m#9I>og2Z=7{EHIbCGjsw zyyLwd`~Q!`J0<>QiFZkSqr_)P{3{agmiX5sK1bqTm-t+Xe?#I6B;JyEkHjyNcwOS( zlz6|yH%WZC#J?r+0f}EO@f8yPw!~LT{5uj~CGqb{d|2XFNPMltH%ok-#IKb2r4qkd z;_D@Tjl?%d{91``l=v2jZ<6@;B|awc>m1#BY-L4<$Y>@gGUNCGj6i ze22uhNqm>Yua|g-ILF-w+y;qvO8h4h?~?dWB|b~yKa+U3#BY-L9Esm7@wpPeMdAx2 zeyhZLB>oGD*CqZ-iT6wVR}xbcRK|Eh0@qx;m?@mD*^ zgDb);0!zfZ@$b~<38&zRL>t3T5>6!?WB5_RX@naYUP3sXa6QBK5Y8Z6$M9W*k02ao z_)fyqY>7&SZzb#`9ANl5!hH$*8NQNmKf)e{rxQlS9En_pClc;Y*v;@*!UG7q7#>OZ zD8degFCeTD?l=VE)N=^C2*(*7MtC6MHim}~KALch;o}JpBHYOE(S!#Ru4lL(;Y`AH z45t!4hH#kS1LJ^?C0xnyUcy;~0}SsXd>mmv!#fBcPuRoo7Q!bG&SiK5;S&kF8D2;D zPlR0zuO$3u!VZR)6F!M>$8S{sR|&fb#~FT}@X3VR7=Ds44K|4w!;ca^g>WOoO9*EZ zu4nij!lx3hWB4w@rx6Y_d?(@430E?FE8!f%0fw(5Je07X;VTIbBkW;#I^i=2=Q2Ez z@NmLzhQ|^|po;!edZR;W~y>37XLWOy&(0>S}?cM&cm>}Plf;R^_R7~Vqo zLc+NWZy-E^u$$p^go_Bf7+y*EBEk-amlM92aL2E#{Rw*r#~FT}a53RFhMy!nl5mXS zM+uK2+{o|}!XbDd9SX?;<>!aG2pc36CLM$?&a&b;1FLuOsXw>}U8&!ea@0 z7@kge9N}DsCldA%b~8Mda2a72!y^e_LfFCZ1%$^F?l{2OpRk{BoZ(@FClGF9cnIN% zgkuaJPk0jHMuv|jJehDk!~F!dDP( zWB5tJR}zjf{3zksgc})NLij4e^$g!b_-ev+4Btg~4&gAvcM`saa3#aH5~cwt5n%W_ z!q*b^GkhiC>j--oo=*6B!nq7jBzyy5H^XBI-$>ZS@JPZp5q2dp73pi8yP;DaFB34!~F<{2-h*3O89odVTKRrz;_U?WOy&( zD#8JVcM+aT*w63|!gmt(FuaBEJi@sQZy-FMu$$p^gclHYF}#xSLc$J)mlIw@xMM$S zf5KtHafY8KyqIts!%q^vi*StLM+rv=H!{40a5dq2hVLOvtfu%F>83ExB5!|-&%CgEI$CldY}VK>8L2}cRL7#>OZUcwHBFCcs$ z;f_w${)FoY#~B_*`0s?<7#>1+3E>#S#}mGva3jM<6MlejJ;VJ7KS;Qa;Z(v85e_qa zU<~lXgew`|OL!^a0K>ZoKSJ2g@D9R{6812>h44QJ=Q6y3@IMK=8D2;DF~Tl}R}%gg zVF$y@2|rG_<7d|XgzE{%8GfGd6NK9sevXJlN``MG+(00ZehRZf0Z@4{_)YgL`Lo$0>eB`a+)m94UQsSDJ3D)SGu*tf#c;>$^hi;mkfP*A2nF zGj(Ha_YQhKT+|oOIYOuFk)r*OjVz6w!T!kq)}kQ}YY##;s{+k5b8SZafgz5ReXHis zzq69%jTB{_hsT1ap>TJL!W};a&!>WhtnRj%iD?j^ofM|}CC1^p=kYq-9Fql+J@U*& zZr$k6Yr0Vg<1?xxdoC}wN;|0p`Z342NpZ*Orc-Yj<0hGUbV9dYvq3jpL1!`@)3e{H z8!g=vbMslj)Q`GV2NxJc?ZZ68AocdBu8*5^rlXY{R8;QXkGeb8lpYiR? z;>)_@J>{DLESFanbCljPDvK2;a&}7aRFXxKGC}ilf)4dT4V>M66ln%(MD-!mzCqLz zI9E4*)Xgdx*1a9+?0Tu?FZf;gsj~m~<&UOcL@nB*|JmJoH2r)O&9+AX>Ap5N zrcICS)ykWBd-UKrxSWG~B(6uE+2>3v&EYUIK3PImo$&#FWO*KKSxa-bE2V1{x&YeO zI6#c{^5@MvTz%VC)foqjE+D;mhg&DSR~yzMKaczKvn`}BCTH)~%@TIKswe+_N_xWD z%iVhOckX@Kz>@5r@W@Yk-!9Z9Oif4k_i3&Huj4%vmcY`cHIrBlbaQgHWyC~rbc5Yk zh`;jlC~;2fKJ8NcZ=f&RV$awWfb22p`?TS)v_5#mec4WE*TSvgxHWl>cA#~Rw#b*w|2A>WPtI;*Nwah_nBByl_2|YlXEOCB(nDM~ z&S%dy;U1FuvYWVijPWio?p0*E{j?Q*u8on|tZMoU?n17=ZccORvq$FYsFI#G64%pQ z&}};TIn!l&&|!|1(-%+k8r{WHi>H+4?J1sIW~`oKY@7rqoK;-7M>o#R)(zBd0qP|5 zIWk&uCOTy>+vziQ7^|AwPfA&}{#SkWDqVXyJ-f_2w~x=*Z*~6A-3@nf^r-NN(;UGw ziVMG7Fwpq2edV0Gx%*0@*QY@E{5RlovYJr*Zt@w$GmB>xU%sl2NMn=4P;ZgimyZu) zoSk7BVw}M~dSsC+B^c17nTzj14=QX6=Hhx|Ex*pj_0YTdbr!A{)bMLK@XS}{vFp%q z=*-nQ(w`n2qDSuZq=Zg@lgZMS@ueAI_u8^C?)LBJz#se3EE$;>;Mr*YpPxyAG79oy z)?~zPtTKGKO4_54?G7HJns|Q9O=x3-2bbT_<+=uvRKEk4?{%(D!SzQQnbZ$)m!!5gB<+Dr zWqAsk!WaQt`Sv{&#bNbf1NmwUTy^A+f5LEg6GostG#F_2(uw`N?z|ZDXWEV7a!s=c{)@%N4|9FE0@*sYvmqpf)HcDmLh%_+r;<8)cvyuDv(-`3*A zG5WAEA9ryVZIfPNj5+8n{9w_2d?2jTqgAj+U61VWKy$w&u0dn6xWxDh9q7GOl$BB@ zKHX>Y>&ayF$bl5ChN3_+JY!{K$BE$s>A{o32b{qX4enqrwbnE}6fjebBQW+Q+XMGT z@O!}mq{wYQhu0rM_4W;O>ZJSWbYFXu3$Xh)rPG$#oX5drJlf-5nVfYJj^?lU7*;`M zY z$n33OccU`qD8xyz;EAj_#z<7ij|z=)u?pEik2xxb67|trh=z$4b-#+bEdLP#jBPU# z#ou>#*NJ!u73rf#{XA?tmV%;bPQ+;}-El~lY;TbsO8CR{i9P=-J%wOH5Q0Hjl$ndVS|J9ARIg@qgB(yN;f^ozZ|vOs#QlAk^lP3P-;yl;!tCoH4P=E zst+UY&KegAFZ%a~DGuwzz3i55WZZ=(f)xn7+dqI`wDxs~8*75Ff&8mT9zu3V8%mFu zWe_34+9{4;798tv1f=bciE`$}+Ly3?W=?S;3PG&=1N4WnzJL3t#9ODJOnI@yb?A?B z`*MFg+KKTYuNqm3@ucQ1eof=a<}kme@#M@!{F=s-D?;o#G(tD0Vmz7Pg1wrfnPFV3 zM+zJZ7a-9;*~5Nks1jPs(IXCc4Qv1;+Y|Qq)?Xken*Z1but&4NI=-C>Dh2>B8ISP$ z=hVyg`YEgkb$%81C-D2z={}y{vWwkW3XR_Z%GyQdlN_Ilr+AGI`M~cpKBUIY(GfAi zf`i!@GT7DRY^Z}lTv^X2Nc{)^(7ampr>wc>XS=K&-+_-7IZ$ltAy^O^TsKw){cys; z)6uLx;|FUNbr$k`-{ozvQV2wgKKn1qX?$gkBv`X2cq9N?%Q}a3EXo_1!M;!wYXunv zT~Qcx1X*ryG-3308)Kd|pUT!99MIdcBdc?GSYeO9Y+kWm*o&BF)U`L-{xbi$bI=Y@ zgHw+jk&-x;Ic`VsR5ZqOTNNp~wm{(e>E{9{F>6dMvF0FbBQPKQ; z>!_|jSZhgFTtBlwKZB3%U?OInjp})g)w-EReIH{Sb76ymN2B#!c1(ogmyrBPh`_Ew z;f!tM7+~2bXRlOYG>yZ$5avT!4q_o$v9VgKZK5`d=HDs`Q=LP<9Ax_FH> z!38D8ch=7q1$4#6TCMg8B=H&FBazEaw3>JOyiR&_ERyPxGg7o_S~P;m(^>(tYesiR z!&_UpGa%cT3p)Nj)g2xC2g`wiz^51oF{w`aA4m%IgM(!irDLJ8MGyk!Gl}f9o5B31J^C(%XPUZMQ zUIVRqFK^xJD@FPpgiU_{Hmg-X!7_N2mhG6Es3Ba4T!u3#1M*oez$bEC!*T)c&+*2& zBo+7|%Vj_Y%LRBhVVL}9upc(w%%ca)d3N1HnW%6ObEWUC#c&`rL={pBj2r7=AG-M$ zV~rl2ir$CykU=4M3)?Q*kEd~Ajy5fp7h@keo1>jI%B4LT(@HFAeZ#`Y1$(>AWlr^X zu5@bEN5PO5quS{Xt%eqO;q5)>msydn^x)-@E~i#wf!(XQ`t_FD%7wN+NA_cE%iCk! z{tXq?qdmBWa++aS6aa&Oz@-RDl0iC4mOz1h9f5X}o$GeaW{S;Wwp)iSlA|Ip~%F`VE4|EIM zz6ZBifR}g~3T00vz97{`i&`Fq@4pA#uP49asa~VAc#1E2=8_phu(~uQ53>Mx%QEw- zJ!-M3jU5M?(%u^bFqnUH5M?~|_LAPb`IiiH~&_RVf z%y(Ge=c%2Kr~(6If2&{zib(yE+S44L1s_$@scYV~df_@VsGEb3>j}secPB5Uy9rES$bO-m3bGFL_nPjiLDqRNQsP+b z%F1hfvJJyZJLY%!qnY4elCm#_fc7Wten|n9nK@+`HPe1Q>Z7PC|1><37xNl%YdD$_ z%~o!vXE!)$kzg`QurY&FvZS6gW1Q3A3Sm7rBa4J^GpDr!Ru0lOBxVNL17ZGvs~uqt zwLB);F_b%}$G#D+pcI)8(wG#@e{m(11FO)*)AVRrqc2(-qqU&o$z*;7)_pK4V`W~9 zJUZ>L_{^&ty@&+MNr(}uw=RlfC^bt_6NGmyKBKh3Is?=t(Gj`c*;oqG%}_mJ2yb-! zNqS^^hd%TJJ$hNTrboW+Admbp`ha(~FMBd%H292NK4Yz(vKjM8>kZr)8y%73on3;v z#$M!_Uak*aY5fy7e8wSqI*;O(=+&EM*sDh~vEE>ZV~85Zcxdu%9ghN`sDN(MlyNU7ramejv{ItSz5EFDo9VkS6YKe64p>I zLdB?lw(G;98=oh!d0sCGp%pznzx`FaA0uaL8TAJQZDz)Z)0rVv#@OJ1?lTU>%iG%i zh;5(nmo$YpNBUvkS0ENlcZ4wS9O(heM#_AQl%eY}N~TiD68}KIVt$mOoi8uTcH$2C z7P_~H-3wDIVfc&UgO5TTM$D=6nx()$unn2^PqA#bwcY5|A0~5$QbOG; zntvC@#=ICSz1tTh*JNzBbQm+b+hw{rJiD`WqC0pclzl&68uq#p$4<2e{MKgzfzn~F509L4$pp%G#inCFY| zAL!GF0ffEq&^gx{gl6K(=(XNcY+yZZJTqZzyOol&g!5@hJoP2DnFrpYi;_e$@8%x9 zxCzmw<1K1n%y|X%ETtlX!YaOeXdtF@^Ki=P0BenU~|B{jF`*rcHoivrL)P z^5}JjZiYR`w>ysYqsSsRvi>!gVb$~Ju$U;X@TiaUwpZ>y*+QL8lj!k!baJ+vPygYM zeuMSW%va3OkK)!8yrtK4H;CYZjO#Bnnz_aFeMGk9pz_pgMRcxA>d=@v8(N`H*c-(W z*z#-Ue#xHSF`1zk+rQ-Pi(+AcGnk!AF<6du6$(b#6;O8I24ucNO^#codGC9TO>F*~ zxT>2shtwYCG)$fml9>}R8>%da?+ni9^!QP15a!sdU_K@_P{jtUBSwoJt0VhP%)z#c z?GLA6E>~2;`Ad5EXwh@vbYmTopAXvhhtZ-3@rgx{Lnv*X9=!twTJ$f@9YtJkdol0G z!hMt9|9<1|?sNNfTc=P{U{@LmVR+<GF=I@>@CgI1+ru_U2Y?_+Gn11FgV=O6c%=7*?z^^N=l&ox(~7Z?x&{;M`eW`K<5AABJzcZn;`;P*HE&gf5CXf z6Ya&9x+tHqJkc(QW8+-LrTqRGLdYKP3}IO{dKpC1I^OHlywNik0JpsoxhHaTCrm(SPMj6$-WTjb4mR9`| z=jYq}TE56pn%9j5&PB&1=)@6g&$6tsM*1(_NJ~mt;lYKAd`1`cV$=1sNEj)|0Dj>X z75Wr20P`51c>|U+BfC=IV!XyNT6I5UREBlXOs_c;O)?4AhZ|EITJ5KIT8Kv9!FtY<#_gd`M(ot{7jd z)>CnBDjB#(3s`$gDf28caEBn zf+I8Lyd3K$>K5vNEBp`NS9v{Y_YBvyH{0Wiz)$ub511L7i`atq0P8>0o9%rjGh_b= zC^#mFY?G^}zBtCi(q~u;DLuLNpFhS0Z907b200|-6Q-YO)XL_(T&iP+<`=piI^ec>T7h^?R>(eQ4sD5qb@tEjl2KlX!A(g=H=Jypk z&QVn2xQ}jBXNRdNq7P(uu;1!z2NL}0mg;O4#Zwws9VV@lvvqnZPK=rH z<8jo?)$AcyA@spQiU+dW=ss>V;+Ou>b&Or{Yr0SWNUERyc<4_q{c+PD%<%ZbBoWcU z1MF#%5@*kGDINATosEbs>xd)0Mwu)0G)jBO4eMs}8#8}c)({7V zc!VSdO{w-v0KvfuT0O(vRaFcVrq_q zQ2%de2c+uV6a!gHG-M%Nf312K%-`Em>>^baw-jfI-xI~J8!dwI79HXlT=ZExYqnw0ll5nR+~{q;D5d-QxEUXeX}qrMgkvr5h8lUC`|I7It9& zH?kHhuaoy@QPt>~lkqr75s#iCeuwBS#n}5p0l6sO?5+_5eMVs@Oy(xe0JYb{ua1vi zb|MDrl}>M@Ij5{}7vgY?Zq(obpK)7-@dAZ4XnKs>+}*HF^$}Ig47kQchhL>P@5JHP zAFLsE$c9I?>Zg9ArqgLCZLzL_$swxYKEj6%9B0p?^FhFOZ2a zlYP;O9P~(PHTZ*dpiW_bhcJIoY)tJy%52c5;y$$+B{`k_J*~{R$+DCEWPSTz+7u|s zNbwq@yS#-zgb*j9m?g%)$q}J?Ra8ClpsadyTAZp^X6&@RLJ1986!9RWYdy%#lGV-p zfYoiG-v_rw60pp;6F-i;_bJZwnv?so*3y>U%KQ4atgm+fclV{gnEp>Lb2NYJ?Au|K zlwpmg*{K))5?ZSpFN7fmW#nffxFbgyf;eDS<+4V8#7d-9k3n&CbO!SCdL$K5)BTNj zP&XoMV-^*y(AkQ83C24-jw4XCeowR!iBU>iVD1!Uen^qITWnK{u}5G#}yd z%;pvpBeKQ`cMr#AzRi@6%tZcllpic>i)4%kdwaWqZX}thU}C+PbHPxP{J!8QkQ33C zSfxRbo=eV}&TbM%uI@*@6kFe(xG+mVOvjR^-T-Az`>N?th zBK6M@P~3}eL}K02gVtX&5UX(5l&}};*ovJ9W3Y+Ji6^>!+(dn6#t%JYJ=9 z4ZJmtKz*EFOfy8gIS}P6|UCVHd9Z3`GflN<*^bRJ;eEw0dJ0= zdb86fY(8K&>=P6zMs}m_c8gj*cv6ZOkAxb0=4>~)_3FD>7Ym}*F^Vs5WvyoK*;lxI z=9w#~th8U@E2PtT?OHYKB+>lOo+AzZVAa4J(A3!X(W>cuhgAYyvVBo3<5F<*4QT{x zmzS+3&4{eV^Q?mXNUT=vX2qb>JJI|N`0t>=gl5uX%!I@`6zv0({xOIF-&x19hO8Pz8DCHB$Ce*&L=)snI~}kw4{Aj#legq;{r$}_vT(3v@ld~>WpB1t zIZ*UqtSX3piLCOrT8H2i`D7e(TYKU1_ma_W;&$FvTG@>Bw6}F6m6tS$HMTkE)EL~{ ziObP@?Rg*$HR6~gdwClE!Wu_eih=DsN*~SaLb;*B3mT|xTCBNfa$AS1=$4uPp8@0n zR*LOx>l)~b>V?rUcsm7X)w_|Q=+&7sUWJ@!em83oFTLdPopm*}oU(;H8JTF+ud*jG zfwA8)(Q4krP$SOeu&&G&Cup+&FWgA_HT&E}VjgOd9KZh8W^(&OWO7fUT8W{g7tUT0kQ>6F1`#J3n9;0BzFI{^v$`4m^4qt0UWMr;Uoo(I?>$#_1*v zE9IE~Zl%{$s%RS`m#o7oW1b9m$(vWWtutZX*i9LV{(WbE>N6Oru_D#8PfUn)aZwKI z1?u<459lUVB~xnABXm|B=l$sHw}FFDo6!$4P!+6tzDE0*@Y>j)mG@<*QKus1mtqcp zf@0{y|5v$uCVFc$!lr#jS%W?G(~+v!EXBE``~?>eaYW)N*d1?*lW82c0Vk8Y^u;UN z2rd3KB?muRS(|k(I^ug3ROJKQ;I!(28I&2swy+uMil5VfTRcuAqF)#Lh2~p4S%PwN zO3$(Nhu;FUHr6aW9+5^DzkcysE`9^_Yu(7)NNFP+4Q6gy^<>I3T6Erc?4;$bWLkhG zwdxVztr#^9sig`P#)1+?w%J%*&mZ1M>&Z~#q;kH@G%0{z3|f;a@C*MosS>|%CX=f0 zi@4(cF!IJFyvO~u{IUR-b^OwU%ccBMM-6Xu!ozpU^pb-^XJIbHJXZUF;RtB?Ft+oVy5s^)U z^%So=X2DwZ*&wagY)@K>Q&SI7vS`t^3o&kVT3y_HbfdH$-3_;|q1%QZ3#kF}#mlhP ziLGhoci1lPf<~OsPBx-di@c!b+7{-&OY6(bt35Pj$JhdyO^9$I5ATy;monQCbn*ED z_Mpc_M(lQkex^x#{wkXLq8BiQS*HQQw3;x13LuIiB_fK_s?Vn!s6|i41@4sYRToYA6q z538R}CO%TyiiKF@T#Y;|jf%y$SMPwFZ=e@)u+9~%w5_z{V6qC7)pYx!-qcHs`K>q? z*2c2PzxhQ{;}1TgEM{$d7xgvEXu!ls&;)G-E-`|wm_A`R(rPY3pXeEK5@!S2e#^|b z)QO^+{SmX4Za%4y3ew^UptPh;X1U-R z)iV{W{YvvX6C+V9>%YxRCur!#(ED(EZ})+sQ6yh9<0qW@Lm}V4oz%3MmvIEj*#2D4 zc&A5(vGbgGGs*ZIW1*L(0W}L){l{Qgq#In~CaM0>qNgC%DzURgXCIH-J{UbxTkk-z z7(4Z-=M*eh)6zpEj&mj;e00tPXHIaM)(NFC<85}1asTUREemiFEVb;*mqPO7C+duEYLkYL^;P){swZGYe zpCkNi55AW0!#&tb`0gHj9B_j66j;0!EqWjMvz=FgA0a%s=l)#6B|X?n_}m^mlyG(r z?n`)Z4^E(GC(?T`dpG+h(LS)y2^nOe1&QsT>Y$J3DE+7Q{bECbVXAMQx@k7{ZleX>P4t3YoWdmZ zyOQiyAFdE_`La7OcWH1^*96nF(Cal;t{_PB8f@+6yT`dTs?BsCS zxqe*SOKT&0b!}M2UAVPZyEJ11g@3Ib!Pz^ zpXkl)88lqH0!i9~u@Nc7Y+2#0A;8CN!1jDzcVtI;WM!JQ4V{^`p|Qh)$m=3(#r(F2 zL^S7hw)YqP$N1Q1H1iA#ebM4vy>MS>7hdd|!QOI=mbjqSjJ5Qbm}b+Pg+2Y{y+0#Y z>$CTe5e3m1e?v;`z7t?QdP~MU0EY|9s`Mvu1W4FR{^d01!F2X9{Lq9F0@#I{E_`&p zkd`A{)&%kdEHW=%f$`cAIypgOizqkd%`Qm!?VmI#{0KL+@0s8PoH$(GkE9siQ#9~QEoMi9pe8L#Kc`5|r#C68_6siCY zPEfdPKmZ1XAf2tDAf4+A`2@dD3UBe`u*^`7&1}o*6XA#LXOinpI9Vn}7W-E3@+j|z zzt=!@fY{_K?xUpLK?B!A$t&VEx^^s3( zkYdevovaauLiNH=5OQGjoC}7XdP4K{9KRO%TK^^Mjh^`p4*28c6YC3tg=g*o#NK*n zLVK0nKc>6Ub}l+{gU(N{>LD1!q0Et@zm3cy3(%_1WsytKY6!3vp?*|?hpFG-_hJ%m z7B%1=e>rc~8$@I-0-+b~3O$OOCOtSB51K_Dx}5hGlCWMI3|b$(#sFK^c#_&XTGWn3 z9_uv9fD$44piiBkn~i#ey4gwuP@;f**5fm0Jw~pPi3tkW;>l+!X40J_OtPok0&l@$dxp z4iLVB@w-D5e??V1HzAN}hZm9ThbGS0_pX|zUwB8>f(g`p>{qK##M{uWlu)L&Y$BRw zjH`AqfBS~N_rl+U9`M`Aq>S?*na6uRXo|Ua-k0mp+voB$yKZD@tg&P+s7QDFYqb8! z`~%)uj}AB)AL7FCINiL%g@g0KQcxd_p@v%*yaLy$G-WSb7rGkmra(6&KOE^qWSlTaxZ~xz+FDq+n;of!Djz39J<3{y+NpKiO3wCEX)dLX57+4c|?6P zqFnaChq+G9W3su*RQdi~1nt;up(?GydMVlq?``nsPkNj`--&|%Z-0k(QlQ(+t4X)w zUB+cHhv%R9E7Q#{_w)R3 z|HJ&T{x7~If|ov^Wcxjx;8}DgWSdq!1Ez1?{t6GkXHn;dG2;#ybK>4cJ8rJ IV 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 z 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 -7iR7bWPKa+_q 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

xVY3Svx$9_KE@SqfS^v2obSy$j_}fXh4XgvOcB ze00>sI<8#?UIpF<`sFjeo9ip;pRdo4hhKghCqw@K>MHgB5-_?((?14%dp9EY0@#Y& z?*j6F4d|`+@?AsvHSor3)eqnPrVEwd8XO3|3Ys6wt8Xs(jsZ^vF9mM|9|V1W9)l0r z_vNj86_l?EYy>X`L*)Zqu4e!b*WY;MvkMTBe0b8?>it&)UXYp5)5E{}?m)rqR6^15WAx>E95N@QoJQkpMO-qch+ zU-Q}fLn}nsDR9VQ?IlEcUk$r++GC@8_Bn|U|;#)pR_@xyjfZPo4)ED^orrAVVXAkmVYCqqk6&Y z{Ot$p1;grsO#XiI*3UmrI9Eh>&As|Ng;}_kCeweNt?XAy6506+$!{19$d-;G+)3jx ze*XC?UkG+wM+Kn9@|)J!n-d(@5 z%bT@beu)0$@4smI>@Sggu7)jt0r?A-GyfA_{zCE>l7IVEaSSNTO-64@I@|uJKWO|$ z{XzX_?;@Sc;%E4-m%sB)&EI*a=5Jdioi%=A`3&7}sAStO>(KmV9h$#%uiX5Fxyi`= zCWX^w@#|P?>sVsZTFRWXeQt)r++^f_qae43set7_*^~EWR}sSJT$a&mtNr3$@~;=j zUqk+6yT-xP__hiI`JcQ|1HZaA0QmWf0{NFN*8Eed&9b7Oe`oUh<=kdV9Z~m4)S7q{GVsdzoVvY9UC0=l;$sqQ&F@H zX!c1)KbALch_EuuBmX?|TRxNb^S>w;Tur6RP^$K$PPK1}VbkTed8CBAWfmmd(>yq?Ri8AUelW?kqTNgd|p*NSYO%@P+s z*N$xd%;gIrn-_EWt)j@+E@NM{f!=fDEuOiZxw!}C=-7hH_wRqp6%y$^mKcA9*E_8w!_zj z&ld-`o^gH_A1QC-WwV$2ttiKrz+1#u6~`Q32ES{ZOV*k2?eG)ew}J15pA0`7zT_w+ zO#hyyAKvsF48I88*16U29q=|@x-;$0&rWzN*D>&2@OHc7&Q3Y`ZuoWa(>-f)e8Df2 zu%6)dyj*>Cvwkyw+#ZpWFGhZK^xOBENcH)zb;T zIs6vz-S9t^`gX5T@P)@|`YDBIrpd#*b&7jc!51&k^zjPO;ljJPb*!{?%viZvk?%l0 zf&4kK{CZKrNR_wta24`}DBceFKfsrI{1W(9cx$(>z<0p^89ko}@A_%`u&rap?7I7B z7ytGXRPY_-e+1w5Dg68fJCNTD`KRE!;0M7kg)cZ= ziESzGyRm+W=ZM^ReujLBo3P|{wL;Wi1}+!>MV|bRgpb=l@`N?o3_dzX6%?XpAbjW9 zN~rZH+8MsJP5D=mp8#KWrV=yY4}|Z4-+^*f3Gd?EIv_W0O~`kJ516TajkC2V|q#q_{$gZ#Vj?eMeVKZP%#0Y0-T7X+Q3 z?SEB2Cqb_*eB8gTRN@!-|6};Zh06a4`GM#uc}MjW!jFb8^!TypDWRi(jrK;;SY!33BDWN$~6_f zt3w61pu7jcM-M1pj-De-Km0%7Pc{BQB__b11>XTb8UAwkf`^p&8oRd`|FH7ELH<7Y zMesj`e+9k^-qx$j;ENwo!5PT^1HKJ@D*T#qL*&|7Aox~zmJ89( z;0qpA!9yw6M3euM@>};&JPdx(SsiFWvE_-^W^B8<@LeA% zKOWv~i^uDzDA)fNkuRnK&!c`nh~*2?`=4F(qpy(f{6zH^;m=xYYW$;5mDsc|2w(Vx zrp?b$@aUjZTxA4@BUVK&bCG8!nd=)JQ@90 z2p`9Xdbj(#Taho8tM2u87UE517Ehf^471ngzp@n{6^?6hVNc8m){M(pdgo@3SUftIIA8VV*1xrd0WTU!<{BH2=@Y7e< z3)A7d7)VZ(TLky2gKv9T^}LGzC&5SM%0I2*(L&P$@Ag65>kq=a_S}B^R&ly8{u@OP zB40d5^(>^k&%!r0DL<1q|2@_t&ndk9oW4KOICM6v{5bTi3tz|p?A96XRb=vf$c}1` zc7^ZYLo^#x-u;Ak>z@wRKhV+PCT{~R7Z$*mEl__hRI||q@X_(gA5FO~hi~OW&kuKDiCP41OBz>LK_=e^B|u6rw-F7v81B zrs#hYzJ!6Q0>0by+^6yjh{M{l6n1egc}V$hk>A940{O>&TCkzQ$L-{stzyE~Y2%SE zcvAK3i~ptYjZZ7@_O0CO5csa=m7j(DJou8AlrL3?PBcBQEAb0e6I}q`4SyfyS_r@B z9hEP@?k&Q*_S5RMpAO_Z-dFif^gjdN_JQ&i|5xFokCcB7yPwDU*Nuw3_3bJ$mAW{0 zeWLQa5$7%83qMzW6ZoIPmwc)GAK^y}@8aJ||FZk3N$_P}zuOx<1>6u@y&MML_?_zC z82t<2+r(S<+K_rVCDy-MRK__%8y_x2ei0ivZXe&hE{88+JLKtzu>e_`&cc??vgYYGt%CCm}^YDdFD1RLM z8}Mb%D8Cl`C#L5C3LJ-ljynF_@&C%_R$MBn11U0 z*T~;v@_$kJZ?OBg$$z4JJMz!NcX|BV@U5S!y!F$s;M+ZZ^$j)t9q@(N-2}etGu6|L z-5reoT=^3CUEoW;Qr`N@p70U8`LjQKA$$RPs!Tueybyl|%JqEbI$C1+0nwM&^g)Bd zf|$>L?kJz0Gh+FIsN@dy-;`Y#^IJueJpPK9UpHFBIAiiR#eC26NRJ3_Wi(lbFAFbA zpdPPf0r}4Y@~cQ-^XXqVz;7$OED3tNh6Lny56JHykWU8q+5mrifd5T^zc#@CQTTl2 zdNaU(DSTm%C`8eE8|RPbb^(4^fFBd!rv><`0DoM7KU?^G<-Ix}f3NWQ+S?NW`K1B= z!vMe1Ci&yGZh+q@z?TI00|NZv0sgoE-yYy^5AY8M_^tr|MSx%V$1XlS$Bh9o-?JfZ z8{mfp`0)XLMu4vi@TUa$bA`{>-mVSscL(%57vPr#_*FN}->xr=_@H++gal+?|e`P?vCBXkGz@HP~uMO~b37^lO#{=>&1o*!N^bFWMf82Hm@S_9# z7~%8zIWr(%5#Wy$K3{t{Il!MMd_KF^2J}A=(DO_{zAGT#Eqp$^{kF&-&&>n;kN`g} zz|RWsH39wz;q&=GXXvC2jo{N%pbS)0{nIXesqAJ65tcU=ZjA& zApgsN{J8=7s{-_$M$iEVhUl!oM3h=9LnZJK+Bz(R&3=%%y`g~X6#YB(Slz^V{ zfS$Sle?oviH^5&T;O`VZ-+1z;0RLh@&pQGB^8mk!+>Ygo+XexCn*hIafZsE~R|oj{ z!sn~s(*pbr0X=T}D4(8J0`l%QJYO7E-a0?OX@DOjd_KElV)^x=Nt~Oq201aHXGVap z4)DJW@TUd%vjhC%0RLowe?|Cw<^4F8mwiR={{7p4o(;FjALq@4&!>Oafc&HYzkh&F z2KXZa{K*0SY~l0yc}+n6fdKz(K+ns<=Nlio1A4v*@CDoEkMpL&ujBU5dH&1ezG#Pl z{Kx>mXMisY@P`NZ1p)q|0DnV(zhC%#_3{_t3#}7o;j)09Zvy;)pX86{)&YK0fZr#; z9}?he1N@Nz{^S7vy8wT6fWI@qFA4C^1^8tF{tMyr)z=!^<&X200e)0~pBmt6gwNL= z76jza4e$#C{9OTliSRP@^mx4`{5tX}I{RJ@6Id3|^JRb^AP=ze&1)M4_@4@&Fa8q( z@_P%PZ(NFYYDqQiR9iE9r=lVUBZlo%(bQa1)DTsa*VZQH)HT#6QqAQ}&5_Wl=9a3e zqKYVy*kjy2i7At(&qySq%4Ab=PED#g*_3FmOH|Z0)XVqCv{*Ff5lXl($gwi8maJ65 zeYZ}IXriL3swOeJyyCEAeWmzbH#AE_5L(nqvVlU;9#y=|_R5LG5B%InLU<|is8T<)usVpooo_EnQiNcu2U z;PPjQ)Ff*w(@EE{5~-HPMhR=0Ot`{H%#%%x(ubRqiOQOa=BT{6xhdfSP&9b>$l;@- z*;?r8^7_i!Bn6w$)Rfq_Nes@cZz``zmCu$drSm7&NQuUz97woo8&XN>ny!%Ljj5KH zb0Ks!DPBvZRW`J^j2f$Hvky&HG)wle4GpzoGAuG6L5SP&048ad^V)5JIz zvhi`}bnkMjEN(s0k5jcZ70JkzyrsV8@Rnq(JmP&tc|~2WK&apL!zO+cD~lTBP*2^Pg62f=E$T+lHuwClG=P-vE^&IS|rf5 z!D3^#*E4vTmhoawm2%A4k7kG+*OIVzl#{EJ-ks+GCM8jNceI#`=q zVn-XM7>Xoeyt8ZXMN7l%L*uC;IxIPVZbMULO8UZxk%MCcSz?lk9%&p)K<1+@kj}wlPn%NI+l#*r-piIp;?xPjFbVTswtV&>C0W# zZtu!lSsNE9nj$5L8_;Z(ipPk-iDLYdS+%aA()GglLUNuP2~v@?Yt0o815#ZHX%vku z%~H{$hmEk-?&he>06#jab8W6d{zQq!a`|338NwsVmrT^R)F~S!>sn-ztZS56*^LmD zGA~ORTm@;1Xo$z|ITe{1F>ZfpS{qM1?(#zSLM`CRGAshTOP0RJBSX6wHWP=O>@vuL|4Q^vnGx5qL-G6D*OlH!hr5&V`4Kl+?ho4*2C=02g zp)wDEICNi~%h4IAeAnmT5-GYgfbnu=<-R4SJ;%Md4i#iK@4B|}iP&8|nt zlqF+MlbRVZJX47B*)^Gjj43VhHH7IB%9jQv-FE?I6}l%Q{Zp=2);2UI>l3k6*PLB9 zlD3~|8*^)#t1~^JNaB%dZft63EE+wOs?qr_Ro&8DDeb_UM>7*_c2?;eaXq^M#^&as zLk5qK`8n>^GFH?}CzXju)_5|D=z@Y_P-Y`-ZwYZ$CZM<%x{4)$QW38AGCs~p$jEs_ zLrrC)H4is?@?O`f^W3mo(U{eLhmIaKQbn*74{)xEGZmH7aMBG%#=`QsuF8_Bl(a5s z0I8PQvi7WLqzAdQ)|3u&&Q&*GHZ;1yP391pVWjUiyRV*f1FNiIWi=a*`EL4SYQ_Kh zhWaCu@yzAaSbU@fx+W!ETs&}2Yb6Wk=0I6-xC+h;RzpV@4~eGAFg8}N&T#p&x^;S# z)p8G4ceeT%qL)KjY<5tU)chjM*)6lxlB?2UXRLzMfP@1I;*7 zW@*4K;M$2rmm4r-p(cxDN2iIb=no$MlJ2`c#kZpFQrYmiQ}Z z^{qcvNP}^$Kb|#ZE~trD?XzVZXq3C(?81+dxk0*obCcY(JyE~9& zi*)-$LsLA&Ch8mJrf(edQk1^Et+3HlgyUg1bEzp=(Gq_(unb#ANUL`p!iMaBW>41$ zu|sY!kP$GRu(PUb_+VKxxNBKscN{+2eWtY!A3S1o6i;pLCMm9$NcLH*pta>k&Zhtp z4C|0RiWJ}KY1PTK6WH^;fjK?;%67Sp?xB*^nCFaz}RV4k= zy=OkM_uA;=I|JADTu9ultn5^|C^-%B&6ex_j%cW=lIa&6>4aM_=(tj$4Job+ol8ay zjl-##^)>=??Eoh+b_&uEpi9%d#6$@$jLMbr|bH zqQ9yk(cB^%7_LEB$8v2goyclkLyBeX>TYs|6w9`flgivS$y>RPh;NJHE0#Zt*E>|% zN31HBb!lex7{^kakI~&-$G!;2J|HD`jiOUCEY8SGHK!tF+g2Iy)GMWTKEJ z>Sqf%lcwkhGlCyt>alH8P8Mcq;}7AQfId~DSg3eM!Sop;yuM_bL*uy zCF;r>8{M?0`;7SrnFwaPHNSRRDYB%vH_}D8sg0Kmx|(q}^qMsNnqnw+jYi+bjwTWl z_Zc&FLSn*R<7ER~chl{CWvan$MiS%q-)qd&$>T&~#?)~pz5A4DW5-NMOq)1y`h*#Y z8DqvynUIjZxtUpeloK18>STAxS#{Bh7hobX#qFHzMTd$nut8TkU*R&={=G>l1xyzU9iOfp%6?KidWMcA+sWJxHa|(%XtqdMB*y!AS@|5ZEhUq@s zQOVw?+pyEEl+yV#+|XzV@gcE~?$b%BiR3uP{rVlkxJGBuo%8DW&DnwqSWUFxLUtj#tk zc3hztLSPLx||d0XEg)VPV8|Oey%5AYGqC0%BV{`5&e0j}VjPI+vhswDLW$RZQh{KYQ$WN}9J^y4XuGWOxxYvFyQ>L42C)CSx4K1NImqdBR;Vm_? zc8;Gqq}>(0(kL7AG)l^|kL*v4V}B|=?6gRuboYqyZ(O9Bn`ApHw?t|E?rDznb64GN z2ukR3h=+DAo-!cq(<0Shmy~*wtu>{zK9ottyY#vG)1J8QAvdq-uI2(QDV(34tgVu< zEY_;sL)#EmW~P!&uBB+4$TK-LIlfhwalf&dJuO)*G$v(;tf|O#BU9~CPB;Fl_p{1t zThhfr?bLV%6@l#DD{V@ikdn)dky_%)7H>?mYG)Wt4`LH^uQcJ-=gkc*wQl(+JKE*7 zxo(!uPv?+^Go!jDmF0wUDIWA(n{vCSwk<95qlDhqadb$&}K-3z9c%a)}) z?MYXTYbK*I$@p$N%G3TcbKH1YQ&uLY$XH*mTlVo}=Jd#hMY>w!aWHMgH37Gs;ewDS zayETVjzcrKzO+`R9nodH6nlz3Hl~}7NzIaNjZ*0tS>vS*;5J>jVRpPe1e5r=sdyjR zq@Ev1&?>5%{Gi3%-(`uLr<3t#Egr$`>$WDe#hCTX_f;kP zO!duGxn8*ecVc;MDk)KM$_l!ObNX#Sut}KGjmw(cgc{=>9b|fvEEUF0 zmm5Y|DEqOpkyP45ZzHL*F*UwfOX&0|b8U~7CiNx86Qyp~QJqaswK8$mTQzF150I_# z@ij-(xSw&dfa{`fOo~37O38D2zfHKt7q^S%@>bqp8ITR#oX*WNv#*B;@y>WDs;mdNP&b zMx8z76oeQW@Ama7YuztgS$)X8exf378o9a{H!@S2tTvMKEC_KArun(*a%=0vIJfW> z!|9IDtOJWsaqHg8?U%~X=k{xTV{w~wo@OsgvkD85?lx`04VH zUsYrkKqsH9+^#-d%P3`EIo(m^4odY#srf0{W%3*49!JPbqo=aQ)ygKf%(vRgwF_Gn z#j%iiIv!B6DkUDBglBYeW08AXGrOhPU$N+MkoZuBJhh4k)>!Mf1_@eP&w_ zLsqeABUwWZ!_GK8SHhYp?o^Xg(_3aYyInV}sqrmOLxkiEx>L>;v3Gu?Pj`RyEj($^z8xR ziEsbh>R6kNtI(-(x5tW6mdx|Y(+4tgdycI4;@f(2F1rEiu>-~;4PmJ+#I4Zdr4>TUf+1aqMVHrt_w(Wrv&1e|Y`ZBCy{NuOA}tLj-<^zz-4lAp$={ z;D-qO5P=^e@IwTCh`l>S$wE1z5en0D;A(LNx{FJ5t_?uk*ufOE$tK-*j-njC(*QQ?jKKY(;_p<9xdFdBO z%h&G5FZ(>Jd~JOEvfo#guRGHhzk4cQQx(7ZgYtD>n&!HEy^^NE&%XP1Jc+<^}LoMzf;hT;K1?moHOx6XR>m3gYs zGba58R~U<0)PRr|su#jJrcZ|MaMlobs?O z^Q@=j?CZxSo$J{TvA7mH7&|Mz<$ZFQ=_O8u`e#oV(iN6IL_#z<)n^r<4LoziL7TK5 zmU4m4dPJ`Abf$O$>YuceN8s6~4J3Z)Lxx#Jw__2R)|Ng9gNs=QfO;G->v{5kOmW9c zpRv<+p-=A8p>VC*9;8Sv9!0y3mpQR#adE{=k6m#!We!!ueNv7`W*2a~;+Veg5&3fu1&nBfK#RtK%&n2X7^gQT6x%|e*Sv#lN z#>@EOzV=GjDsmqj>d+=Ou{*S@5_=M_k1gYGfv^YhwBhWtJ{)1qoRr9%Y1N8#HR=W$@9}^B zBNXY;z|PR<<1^9WA}oVke1b~PO4y@bJ7)@^r1`pYX?98=>(qveL44dnEy)bxf*XIOh@6G64AOM%n1?H{w4ojknFGxg@!az< zGK6OqC3?(Jf*3!Mrpw8ADLJjb$2~6HRk9BBxpo*hS807WX~!0%2dYs#b>K>GM`KuA zXxq|9;^}L8Y(|e-==6|`COC8tq6@tTGDCjada@} zsvLw$r#S+WPCGl<*PXWPgH-N%mUhlr^*lx?wZBq&z5FV>C=0;A6UqoPRMAL zF)4kZGwz-7$s=a&_;^q{wmnYkxll-l)Xi99GRfbTm2ZV;eS% zXHJKS*Df@&Xh@F)LQ%5xDQo$Fns`x^YA71vK68Z{mo9ec3a(TRs;#MSnKx+Os1buk z40EJ>;EiIoiPQI`E{crX=EdLnU*vR*NUSG%tOTO>nIzu*;^2u*48y@-O ze;klsM>Z_->DfSB%=dj^(`4f!pZs;=e?Iv!0lV&ZRrBeokbR|m{3YT~KK@zRC&|aZ z6wu!w{^awsMJgg6@Ajh#t&+0v6sebdb~g*e=l($b4h`_11mgBn*>K8dcauPQ9}++F zmFol9ILoK!GtrZ;{Y(kSpBwP!@3OI$PyaOmJvRp8))|O{`(5XJ`VR=$T^eXVMFD?K zkbaa;|LcMNa(KZ1Cj$Od2inhj0Y6&;ex?HQHwD_&oq_(+M>aO|mG@_Xa;+kKzINq) z*E1hKBM`Tp1MRjVz<(fpFrS~>1oU?Y+W)dZ{SFO`pOXURy*JQ4-OuUe^Yf{IpNplP zF@qgn$`?)G0f06L{%DY3L-ggR&V}}Idb3s7QK>>bNpkGW2j1LzF#=Tal_k87A zJ21}A3bcn-@iU*E^#lE7bRhoj_s;UQ^Vb7$xF-(fAd_6_JcFwify z3&j76(0CPy=j_0^v2K8WEYL6B5BM`LV7DPqUnd5})vE&XHwEN32-v+PFz&q_sFwwS z_V0d&G+)145@?^#2jW&7(DOTqe?I+d1oW&L@bkJrz5F&1&n*J{_W^%q1>~O$#J_LA zpT`63|0an~zVYNn=~(&V^FW|IxZi!xr^o$HeLg*N0{-t9Xg_NN#?QKdKjQ-Z`WA_E zK0ikW?6wEmPv1a!?+DD-(*piX6Zw4cSv?S+*8=r&Kww)ysi?dPN`(g9Cc{2kQO4 zfIkBRC7zWO>mVE5xddCv~i<41vVjS{`PNY%#^vq# zJB};K`LhB!A?N>&&S$ZF&)=JIWzF|H3i5Nk!uR~$!7=f8*z8MeWvykKA;Zdn0l@0Ll2%)%t z*GRxmE^}^Xg8xWtHPw{yu5f<~Kb3-?+`>~=Rx}FA+nNo|%QJpAZ5Hv$2Hq}wQp5q3`NsGVOmL@J_5MH0;_Q2jTr&&o&$6p3SH1g`NV6v1Fz>FIvF z__Y4RH3>E}>Mfh+m+y3t=qE=8O*@9a!{)0WJhD4*$v=A~_}%~4Tqt$I|Bru=&rG-Q zU@!y4=Vx~@cULCK9T}um3Cx#MdLd*fpCPH@ED+)pB2_|j!jIbbYH26SX>JD+4pm*{ z98#**o;X%SJ;xJmiFS-~^o}j?q@hgAZaQEMYB|A*W5`o@z1gtAltBc`WIp$LS@Nw( z^X-#lxET;d!l)xcx}RM4g!7d z-A8wf_Hm}H?rPOadfO!>*rz2?)1vk0*zePXj$$t1XBl>Zd6v<$(U$yB*Nk5R1Xp-$ z53jm{pOCQGP(}WyeyLc&XmvpggN<4V$S5n5Y__&Tm8O^`X&kLm!o814j|Fe->Q8XW#s*0G6s3q!5baiZiV6fpC z+BY$wI0?wm-}q22g;uM0vNcv;K$u$LM9AKYt@mM+SOF^qUtLt2EIlGC0VxO$&4nj+b9k)k zWmHv27KZ5mAc6RSqXX>HW7)VT>0-d{W$f0X6TENB&S+3jh#lg#eWZ?iOmpdMv5kEht^s`;hedH2DCJ}SSf$+T_ZHVacG^;a z!3u#5+1~z8`$`LaV%tUvC;D_Z(da(S;3tTb;R?^&sf${|L}b9m&DI2?c{g@VPTswP z*%WseFI|63X%xcC!e+D;eR)L zz0BAWBDFN5JhzhqRaO2K3$|cx`x>t6lb5h>voJjAtz2x&hB+1Uk{vj<#w~9J%lk0g za#V2W3syu@0+AH^noJ)1oqMvLX7ccm5gSy&fL>ML`V zKlh5DWN@mT@1f>|?Y~>Ujuu@#_4+ZIGV*1r>u zmbuJgU5$GIV@T9I9&zI$uU2jTWVABZJs=+4TwpjNZdlb><6}afjO9v@i1smZ>lTbI z8+9)M8RR%^xZ(nh=z+zE#XooYgSyqB` znE(b__0;`ZLaYU&7TK!Nq7zaI zM%=Dw5pfAmO5P|H|FGOS8^r`;)ZPA4ozF+7Wj4(lNtv=Y{Mq^R{F|hn9#`w7*4+3b z^Ws4OjAh1&>@mJxTGZ79(BlEC>Fp1I`CzD650Tiw^9hL4o<{ z16e7|KA~&#o_NcNI;ZPy_MY+#uJup<)ab5&P%$v{^DNs*OrO|cucN(yK@~sT&<2t33-xz?4hyQ*5^qvWiHn6489E2`Y=eMt{s&n zeE#hyF=>=9oN7j?Q@7%@p0r|W$5u#f;af6PMY;S|Y2!!OZyf{_=6vU?ns~}#RDINT zMf1V-$_tH5S+gF=v$wPI32439c^cZX_woJHbG1qdNH{RG(Odgf(Ygi~wsuNGcm+J3 zPm!CRk6!K~35oMguqYTzk%76>NvD>{mXsDP3PkAkD@(Ix7=Ra$1fZa#cxx^{yoATL zrzZ8kG~Xm1#CIUzw8he*$th+#%a0bRSGIGkT@(5oHgw{Vlt30@`RC|+Gog;0P$0~{ zcicXndxYB--{Wt2Z38f@{jG4JNELf87J~Ur$Y;F;TDp$(srE9(au{7YxEq(;|GJz` zm?@X9LXuOxYdPI}H~YLv6M4(dR%h%rA9m703h+#@z!(|DCj%C$cO*hHMqPWKJFgTl zgsuLarJ*I$!B!}j+vH2tWQ;`*;kWjn#&pvb!t!pMS#I6BIijG54)Ng(MsTc?C(e_w zHg#6tdwNKfvYXz-6#HH%!~5sPb+W42`QEV^Vy^K=o%l7Rz1t0Ekt4rSYrC>?95kbf zyoE{c0jpxpa%mXY4(SUu#YSTd{Ym@j3-5sTz;E>+^nqAt)v=VV2en@s1m_InH9 z@P_Xu|LH#b0s8Hk7;KbX#k!&pL7gaN_!rN~H+#WCA$gWXFczr_Ru_-b%_j$Rpkaq) zr7?sUIGrQywj8H_!L_^7A`b^H75`f4MG8S{F~Pm>ZMO~X5p#RF;7xhhycg7t_Lv77I*7hF)mG-&A)$sb4Ht()aJz$q_pZJCQwEJlZfU! zC8FzqE(eUiXI$Vss!557ycLjs$3Z7KJRY_jJ>Ltg!JHw$M6Ex2$KP#G81BnItlpVc z?F2(p>U|I%WiL6zSaBgv?vgB#g!K8otxACwYgMdG=J(#i>d0;bFpbPVl$;;9&l$hvUpQshmjNU19&AJ)uO-#H~+;vjD)B-De{YI&df8W7JkkD`L?)xh5)r`}7 z?VHm*)P@eZ7tb8#V)n_b{Xs6mOdn8cmsEw%M&8o<7OH|)VF=?n40C$&TjdQ18dDjk z9$XRPCCN+E-6+n@SAEyB_4ZDBsSSF+IX8Y4~s?DtDa)2Zxa79XZPzE#`)~Vm_36mJ)h;#VnuM6$MQG z1FNO+)^x}(pN@Z^XChNz$}PU+ZojF6zkE8WUpyqk?{jBNFuaulT)Y95j#QEK*L<4B z`(>}T+pLFn3(oj_1jZ_JnPybVH4spP4iMK{hw!q?7T!tI_j!8?49Tu-Kai-C2dn8a zMj+=2#_#Z>3B9jL@96&LnvZhk`_#&6D26Fdmy3?be~f?_VwJ|T=Q=taQ{;y>SjR{fw7q-p8JXu+@r$hK#}bJr0m$dcmCo6UXJ7XKlJJMU?{ zDpLhIWt3#K<5@l>e(-k?V7Bx?esK;Bfn!m04D8vmakG}r(btui;zZ2}r5|5)2ZB_o zm<}jA-09?`Hk%vHj)JPhgz(M^f>=t2K<11pbWR<4UF($v7B`-_=k8nf%l_cf7e#zy zWammGfC1fUa3WCVULVeoYC&D>TK>VPO9->EB4imTFq2CCb~%g+asz=vQu$inJUG^> zVI+?r7#xa`?Wl|RY?doMou33%w!a13{X@lq+DM&n1`kRo0SzRg;i74NsUP z1XfC0rY+lvFqI`}yY83zVM3luNKcyU&DtcZIu6NsKk$>V%T-j zDp{!S32mdB(Fp!iCiO7nmgr-%t-B#`yyX^|D*NnI8= zX~ba|U!qlJxmt5p=7fjH zFyZ=eBapjStE$8on=ggdX0%3ayqnHFnhip3cvanKH3q)@*NtiQ^aaLsd{sy7W2Upc z+;)UDNd8_Hy-^yikVsyXv-a8IGst9#PB!gl=R4g5(a1MfR((zmPYd4!gp&-H3c~qK z)0YPiq2Wy;y|WDGGn0zScU8cax)o9xrxPJV9j@X^POyI6>QIWXoSARlEiv!)-3R$Gvkhl*paiMJiBPnF9qYTl@DBL4 z4l}#85Y6Zgdor{{tHOWG?YT8;3P9H^aUK(!XJ+kM?b4Z|J4FlZsZeDiaOW%yA*h(4 zt!JGT8_RZ+UhkfOrIr;8Iy7kYVE(#RTNpTu~pNgMi<=-I-rNedxT< zm1h%~3{|dEM?mR@7~7>>PhXK!Cpro4`To4P`R%|4Cw5&c^Or>o4X6eZ-}gl*7I^vt zSRJD-iI>;&g4$&Bfn&37U)qE;7yP1(pbM6iPB~;&WlChH2k26EED?M*G#4Fnl>$}c zVxbAE=JdQB#T)w`P2IY1jtVHCMf~G0%7j5cq!5d^<`hz1+@FuB=09~bl-8?3cSV`o zfsMJgDp46F#-^N9ETRqudk-5z?6yQRpa7pj9R4_w&s+;*zL?GQV@Wz>H1Uc2#dDVL zamD4id!LY)`{j6N`DmUm1nUX>$yN>RHhfdQ3`IR3YcoUE#tRHW?!^;tscpGf6WxhT z`#F!o=vc8!De!Xv^7+oBmTl|bE~qzsVLva1Cl!k?OEzDYjhA-M-$#dzTu_w>b%{CD ziFa`Bf3gKO8h4S(Gne$g(Z^U6b^D&1rvH%r2>zZ~%6zFu1bQ6G2&FUGP}y?0WqEjA z`R^BLmQ#A-0y=~Svv}#0Fei4zeoe5&e(ERYM5b<})5SN=&O&L4shb-18cVc-$CU#ez`F<0+ESTuXKi7IJS7nvG)8sd5Ocv5fdjpR#+bHGAg#*^S&R-u zgqWtFc-lv=<=sTKNd{ama~F`YUzkbl?sy_b;gkTZwT=w)itCbWMkwILo#0mdwQG5; zz!aIYY!^bIAQ{CJDNel8Cb3ZNbbPz>TiYcriJJL^v|Jv66kY+S2f0*K@#bNR!sM5K zL1xr2sk9S5PF)L>AOTaq`| z;C=E4k8(Li3Eu+~j5KAl2)G;kYmqrK59z{E%^bp_^k=@YPM}>jm>8j>@_@VY;@!&z zcy8c91Tf9Zb+_Z?kyEX(i5HQV*f2e?3wfiW_2I_{Lf)vyRDpM<15=?YE@~li(V0h^ zd$N2!x6|L-al$rE;5zg|0d}Ak+t_O|u&1su-{OOX*JW>mU`P(YL!M!I&U&a?goY5C z*%WU_iar|Ci9gbQ$*zt5^KRifbHXdp2%V+Fn5OfsYM$0uKq~@;n~6#6eL^v9C?lf6 zKQMXGKqKt8Ze>IOjeq@lp}o?~jGTDMjsEEill@lOH4g!C{m_ju7{TO7etn1D9<9Mw z7dgCE0QlGr63e1?H%+v;(_sMeIXLD3 z8QkcXa<813@lF@KI2#MyB}d?i8z4&D724mxuu2^1auv%)&+F~wd^_}GJOM@mzjmq( z^!50@F1Lt2X+^X%9ywQpB9K)M$ZD5ZKpb|{Uy8mgPBoAD-T;)V{lUM@0vi{%F_Hh` z%Ekx6L{D}<;-cH@hnp{f^DYzs2O0&TE$jBF)

#ahdR%lQr2tz#4KrWZ2~JwCa_< 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⁢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 IH*)#sf66Coxc~qF literal 0 HcmV?d00001 diff --git a/src/main/resources/registration.yaml b/src/main/resources/registration.yaml new file mode 100755 index 0000000..37d895f --- /dev/null +++ b/src/main/resources/registration.yaml @@ -0,0 +1,19 @@ +--- +name: "@provider.name@" +description: "@provider.description@" +version: "@provider.version@" + +abxConfig: + allocateIPActionId: "@provider.name@_AllocateIP" + deallocateIPActionId: "@provider.name@_DeallocateIP" + validateEndpointActionId: "@provider.name@_ValidateEndpoint" + updateResourceActionId: "@provider.name@_Update" + getIPRangesActionId: "@provider.name@_GetIPRanges" + allocateNetworkActionId: "@provider.name@_AllocateIPRange" + deallocateNetworkActionId: "@provider.name@_DeallocateIPRange" + getIPBlocksActionId: "@provider.name@_GetIPBlocks" + +properties: + @supportsAddressSpaces@ + supportsUpdateRecord: @provider.supportsUpdateRecord@ + supportsOnDemandNetworks: @provider.supportsOnDemandNetworks@ \ No newline at end of file diff --git a/src/test/python/mocks_for_manual_testing/AllocateIP_mock.py b/src/test/python/mocks_for_manual_testing/AllocateIP_mock.py new file mode 100755 index 0000000..4e5eb32 --- /dev/null +++ b/src/test/python/mocks_for_manual_testing/AllocateIP_mock.py @@ -0,0 +1,63 @@ +input = { + "resourceInfo": { + "id": "11f912e71454a075574a728848458", + "name": "external-ipam-it-mcm-3234139", + "description": "test", + "type": "VM", + "owner": "mdzhigarov@vmware.com", + "orgId": "ce811934-ea1a-4f53-b6ec-465e6ca7d126", + "properties": { + "osType": "WINDOWS", + "vcUuid": "ff257ed9-070b-45eb-b2e7-d63926d5bdd7", + "__moref": "VirtualMachine:vm-288560", + "memoryGB": "4", + "datacenter": "Datacenter:datacenter-2", + "provisionGB": "1", + "__dcSelfLink": "/resources/groups/b28c7b8de065f07558b1612fce028", + "softwareName": "Microsoft Windows XP Professional (32-bit)", + "__computeType": "VirtualMachine", + "__hasSnapshot": "false", + "__placementLink": "/resources/compute/9bdc98681fb8b27557252188607b8", + "__computeHostLink": "/resources/compute/9bdc98681fb8b27557252188607b8" + } + }, + "ipAllocations": [{ + "id": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "ipRangeIds": ["range/ZG5zLmRoY3BfcmFuZ2UkMTAuMTAuMjQuMjEvMTAuMTAuMjQuMjIvLy8xLw:10.10.24.21/10.10.24.22/mdzh-net", "range/ZG5zLmRoY3BfcmFuZ2UkMTAuMTAuMjQuMTAvMTAuMTAuMjQuMjAvLy8xLw:10.10.24.10/10.10.24.20/mdzh-net"], + #"ipRangeIds": ["network/ZG5zLm5ldHdvcmskMTAuMTAuMjMuMTYvMjgvMQ:10.10.23.16/28/mdzh-net"], + "nicIndex": "0", + "isPrimary": "true", + "size": "1", + "properties": { + "__moref": "DistributedVirtualPortgroup:dvportgroup-307087", + "__dvsUuid": "0c 8c 0b 50 46 b6 1c f2-e8 63 f4 24 24 d7 24 6c", + "__dcSelfLink": "/resources/groups/abe46b8cfa663a7558b28a6ffe088", + "__computeType": "DistributedVirtualPortgroup", + "__portgroupKey": "dvportgroup-307087" + } + }], + "endpoint": { + "id": "112bb240-02fd-4983-9432-8ac11768150f", + "endpointProperties": { + "hostName": "infoblox.sof-mbu.eng.vmware.com", + "projectId": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "providerId": "d8a5e3f2-d839-4365-af5b-f48de588fdc1", + "isLocalEnv":"true", + "certificate": """-----BEGIN CERTIFICATE-----\nMIID0jCCArqgAwIBAgIQQaJF55UCb58f9KgQLD/QgTANBgkqhkiG9w0BAQUFADCB\niTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1\nbm55dmFsZTERMA8GA1UEChMISW5mb2Jsb3gxFDASBgNVBAsTC0VuZ2luZWVyaW5n\nMSgwJgYDVQQDEx9pbmZvYmxveC5zb2YtbWJ1LmVuZy52bXdhcmUuY29tMB4XDTE5\nMDEyOTEzMDExMloXDTIwMDEyOTEzMDExMlowgYkxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxETAPBgNVBAoTCElu\nZm9ibG94MRQwEgYDVQQLEwtFbmdpbmVlcmluZzEoMCYGA1UEAxMfaW5mb2Jsb3gu\nc29mLW1idS5lbmcudm13YXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAMMLNTqbAri6rt/H8iC4UgRdN0qj+wk0R2blmD9h1BiZJTeQk1r9i2rz\nzUOZHvE8Bld8m8xJ+nysWHaoFFGTX8bOd/p20oJBGbCLqXtoLMMBGAlP7nzWGBXH\nBYUS7kMv/CG+PSX0uuB0pRbhwOFq8Y69m4HRnn2X0WJGuu+v0FmRK/1m/kCacHga\nMBKaIgbwN72rW1t/MK0ijogmLR1ASY4FlMn7OBHIEUzO+dWFBh+gPDjoBECTTH8W\n5AK9TnYdxwAtJRYWmnVqtLoT3bImtSfI4YLUtpr9r13Kv5FkYVbXov1KBrQPbYyp\n72uT2ZgDJT4YUuWyKpMppgw1VcG3MosCAwEAAaM0MDIwMAYDVR0RBCkwJ4cEChda\nCoIfaW5mb2Jsb3guc29mLW1idS5lbmcudm13YXJlLmNvbTANBgkqhkiG9w0BAQUF\nAAOCAQEAXFPIh00VI55Sdfx+czbBb4rJz3c1xgN7pbV46K0nGI8S6ufAQPgLvZJ6\ng2T/mpo0FTuWCz1IE9PC28276vwv+xJZQwQyoUq4lhT6At84NWN+ZdLEe+aBAq+Y\nxUcIWzcKv8WdnlS5DRQxnw6pQCBdisnaFoEIzngQV8oYeIemW4Hcmb//yeykbZKJ\n0GTtK5Pud+kCkYmMHpmhH21q+3aRIcdzOYIoXhdzmIKG0Och97HthqpvRfOeWQ/A\nPDbxqQ2R/3D0gt9jWPCG7c0lB8Ynl24jLBB0RhY6mBrYpFbtXBQSEciUDRJVB2zL\nV8nJiMdhj+Q+ZmtSwhNRvi2qvWAUJQ==\n-----END CERTIFICATE-----\n""" + }, + "authCredentialsLink": "/core/auth/credentials/13c9cbade08950755898c4b89c4a0" + } +} + +import unittest +from unittest import TestCase +from unittest.mock import MagicMock +from unittest.mock import Mock +from unittest.mock import patch + +context = MagicMock() +auth_credentials = {"status": 200, "content": "{\"privateKeyId\": \"admin\", \"privateKey\": \"VMware1!\"}"} +subnet_ranges = {"status": 200, "content": "{\"totalCount\": 1, \"documents\": {\"/resources/subnet-ranges/c19bd2921af950755777fd33fe060\": {\"domain\": \"test.local\"}}}"} +context.request.side_effect = [auth_credentials, subnet_ranges, subnet_ranges] + +print(handler(context, input)) \ No newline at end of file diff --git a/src/test/python/mocks_for_manual_testing/DeallocateIP_mock.py b/src/test/python/mocks_for_manual_testing/DeallocateIP_mock.py new file mode 100755 index 0000000..2ca2256 --- /dev/null +++ b/src/test/python/mocks_for_manual_testing/DeallocateIP_mock.py @@ -0,0 +1,60 @@ +from src.main.python.deallocate_ip.source import handler + +input = { + "resourceInfo": { + "id": "/resources/compute/226478cf7e3296b7", + "name": "ipantchev-test", + "description": "test", + "type": "VM", + "owner": "ipantchev@vmware.com", + "orgId": "ce811934-ea1a-4f53-b6ec-465e6ca7d126", + "properties": { + "osType": "WINDOWS", + "vcUuid": "ff257ed9-070b-45eb-b2e7-d63926d5bdd7", + "__moref": "VirtualMachine:vm-288560", + "memoryGB": "4", + "datacenter": "Datacenter:datacenter-2", + "provisionGB": "1", + "__dcSelfLink": "/resources/groups/b28c7b8de065f07558b1612fce028", + "softwareName": "Microsoft Windows XP Professional (32-bit)", + "__computeType": "VirtualMachine", + "__hasSnapshot": "false", + "__placementLink": "/resources/compute/9bdc98681fb8b27557252188607b8", + "__computeHostLink": "/resources/compute/9bdc98681fb8b27557252188607b8" + } + }, + "ipDeallocations": [{ + "id": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "ipAddress": "10.10.24.1", + "ipRangeId": "range/ZG5zLmRoY3BfcmFuZ2UkMTAuMTAuMjQuMjEvMTAuMTAuMjQuMjIvLy8xLw:10.10.24.21/10.10.24.22/mdzh-net", + "nicIndex": "0", + "isPrimary": "true", + "size": "1", + "properties": { + "__moref": "DistributedVirtualPortgroup:dvportgroup-307087", + "__dvsUuid": "0c 8c 0b 50 46 b6 1c f2-e8 63 f4 24 24 d7 24 6c", + "__dcSelfLink": "/resources/groups/abe46b8cfa663a7558b28a6ffe088", + "__computeType": "DistributedVirtualPortgroup", + "__portgroupKey": "dvportgroup-307087" + } + }], + "endpoint": { + "endpointProperties": { + "hostName": "infoblox.sof-mbu.eng.vmware.com", + "projectId": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "providerId": "d8a5e3f2-d839-4365-af5b-f48de588fdc1", + "isLocalEnv":"true", + "certificate": """-----BEGIN CERTIFICATE-----\nMIID0jCCArqgAwIBAgIQQaJF55UCb58f9KgQLD/QgTANBgkqhkiG9w0BAQUFADCB\niTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1\nbm55dmFsZTERMA8GA1UEChMISW5mb2Jsb3gxFDASBgNVBAsTC0VuZ2luZWVyaW5n\nMSgwJgYDVQQDEx9pbmZvYmxveC5zb2YtbWJ1LmVuZy52bXdhcmUuY29tMB4XDTE5\nMDEyOTEzMDExMloXDTIwMDEyOTEzMDExMlowgYkxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxETAPBgNVBAoTCElu\nZm9ibG94MRQwEgYDVQQLEwtFbmdpbmVlcmluZzEoMCYGA1UEAxMfaW5mb2Jsb3gu\nc29mLW1idS5lbmcudm13YXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAMMLNTqbAri6rt/H8iC4UgRdN0qj+wk0R2blmD9h1BiZJTeQk1r9i2rz\nzUOZHvE8Bld8m8xJ+nysWHaoFFGTX8bOd/p20oJBGbCLqXtoLMMBGAlP7nzWGBXH\nBYUS7kMv/CG+PSX0uuB0pRbhwOFq8Y69m4HRnn2X0WJGuu+v0FmRK/1m/kCacHga\nMBKaIgbwN72rW1t/MK0ijogmLR1ASY4FlMn7OBHIEUzO+dWFBh+gPDjoBECTTH8W\n5AK9TnYdxwAtJRYWmnVqtLoT3bImtSfI4YLUtpr9r13Kv5FkYVbXov1KBrQPbYyp\n72uT2ZgDJT4YUuWyKpMppgw1VcG3MosCAwEAAaM0MDIwMAYDVR0RBCkwJ4cEChda\nCoIfaW5mb2Jsb3guc29mLW1idS5lbmcudm13YXJlLmNvbTANBgkqhkiG9w0BAQUF\nAAOCAQEAXFPIh00VI55Sdfx+czbBb4rJz3c1xgN7pbV46K0nGI8S6ufAQPgLvZJ6\ng2T/mpo0FTuWCz1IE9PC28276vwv+xJZQwQyoUq4lhT6At84NWN+ZdLEe+aBAq+Y\nxUcIWzcKv8WdnlS5DRQxnw6pQCBdisnaFoEIzngQV8oYeIemW4Hcmb//yeykbZKJ\n0GTtK5Pud+kCkYmMHpmhH21q+3aRIcdzOYIoXhdzmIKG0Och97HthqpvRfOeWQ/A\nPDbxqQ2R/3D0gt9jWPCG7c0lB8Ynl24jLBB0RhY6mBrYpFbtXBQSEciUDRJVB2zL\nV8nJiMdhj+Q+ZmtSwhNRvi2qvWAUJQ==\n-----END CERTIFICATE-----\n""" + }, + "authCredentialsLink": "/core/auth/credentials/13c9cbade08950755898c4b89c4a0" + } +} + +from unittest.mock import MagicMock + +context = MagicMock() +auth_credentials = {"status": 200, "content": "{\"privateKeyId\": \"admin\", \"privateKey\": \"VMware1!\"}"} +subnet_ranges = {"status": 200, "content": "{\"totalCount\": 1, \"documents\": {\"/resources/subnet-ranges/c19bd2921af950755777fd33fe060\": {\"domain\": \"test.local\"}}}"} +context.request.side_effect = [auth_credentials, auth_credentials, subnet_ranges, subnet_ranges] + +print(handler(context, input)) \ No newline at end of file diff --git a/src/test/python/mocks_for_manual_testing/GetIPRanges_mock.py b/src/test/python/mocks_for_manual_testing/GetIPRanges_mock.py new file mode 100755 index 0000000..b301a3b --- /dev/null +++ b/src/test/python/mocks_for_manual_testing/GetIPRanges_mock.py @@ -0,0 +1,29 @@ +input = { + "pagingAndSorting": { + "maxResults": 1000, + }, + "endpoint": { + "id": "112bb240-02fd-4983-9432-8ac11768150f", + "endpointProperties": { + "hostName": "infoblox.sof-mbu.eng.vmware.com", + "projectId": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "providerId": "d8a5e3f2-d839-4365-af5b-f48de588fdc1", + "isLocalEnv":"true", + "certificate": """-----BEGIN CERTIFICATE-----\nMIID0jCCArqgAwIBAgIQQaJF55UCb58f9KgQLD/QgTANBgkqhkiG9w0BAQUFADCB\niTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1\nbm55dmFsZTERMA8GA1UEChMISW5mb2Jsb3gxFDASBgNVBAsTC0VuZ2luZWVyaW5n\nMSgwJgYDVQQDEx9pbmZvYmxveC5zb2YtbWJ1LmVuZy52bXdhcmUuY29tMB4XDTE5\nMDEyOTEzMDExMloXDTIwMDEyOTEzMDExMlowgYkxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxETAPBgNVBAoTCElu\nZm9ibG94MRQwEgYDVQQLEwtFbmdpbmVlcmluZzEoMCYGA1UEAxMfaW5mb2Jsb3gu\nc29mLW1idS5lbmcudm13YXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAMMLNTqbAri6rt/H8iC4UgRdN0qj+wk0R2blmD9h1BiZJTeQk1r9i2rz\nzUOZHvE8Bld8m8xJ+nysWHaoFFGTX8bOd/p20oJBGbCLqXtoLMMBGAlP7nzWGBXH\nBYUS7kMv/CG+PSX0uuB0pRbhwOFq8Y69m4HRnn2X0WJGuu+v0FmRK/1m/kCacHga\nMBKaIgbwN72rW1t/MK0ijogmLR1ASY4FlMn7OBHIEUzO+dWFBh+gPDjoBECTTH8W\n5AK9TnYdxwAtJRYWmnVqtLoT3bImtSfI4YLUtpr9r13Kv5FkYVbXov1KBrQPbYyp\n72uT2ZgDJT4YUuWyKpMppgw1VcG3MosCAwEAAaM0MDIwMAYDVR0RBCkwJ4cEChda\nCoIfaW5mb2Jsb3guc29mLW1idS5lbmcudm13YXJlLmNvbTANBgkqhkiG9w0BAQUF\nAAOCAQEAXFPIh00VI55Sdfx+czbBb4rJz3c1xgN7pbV46K0nGI8S6ufAQPgLvZJ6\ng2T/mpo0FTuWCz1IE9PC28276vwv+xJZQwQyoUq4lhT6At84NWN+ZdLEe+aBAq+Y\nxUcIWzcKv8WdnlS5DRQxnw6pQCBdisnaFoEIzngQV8oYeIemW4Hcmb//yeykbZKJ\n0GTtK5Pud+kCkYmMHpmhH21q+3aRIcdzOYIoXhdzmIKG0Och97HthqpvRfOeWQ/A\nPDbxqQ2R/3D0gt9jWPCG7c0lB8Ynl24jLBB0RhY6mBrYpFbtXBQSEciUDRJVB2zL\nV8nJiMdhj+Q+ZmtSwhNRvi2qvWAUJQ==\n-----END CERTIFICATE-----\n""" + }, + "authCredentialsLink": "/core/auth/credentials/13c9cbade08950755898c4b89c4a0" + } +} + +import unittest +from unittest import TestCase +from unittest.mock import MagicMock +from unittest.mock import Mock +from unittest.mock import patch + +context = MagicMock() +auth_credentials = {"status": 200, "content": "{\"privateKeyId\": \"admin\", \"privateKey\": \"VMware1!\"}"} +subnet_ranges = {"status": 200, "content": "{\"totalCount\": 1, \"documents\": {\"/resources/subnet-ranges/c19bd2921af950755777fd33fe060\": {\"domain\": \"test.local\"}}}"} +context.request.side_effect = [auth_credentials, subnet_ranges, subnet_ranges] + +print(handler(context, input)) \ No newline at end of file diff --git a/src/test/python/mocks_for_manual_testing/Update_mock.py b/src/test/python/mocks_for_manual_testing/Update_mock.py new file mode 100755 index 0000000..e6ba3a8 --- /dev/null +++ b/src/test/python/mocks_for_manual_testing/Update_mock.py @@ -0,0 +1,53 @@ +input = { + "resourceInfo": { + "id": "5613490d-e64d-4797-ad70-3062d648b332", + "name": "external-ipam-it-mcm-3234139", + "description": "test", + "type": "VM", + "owner": "vraikov@vmware.com", + "hostname": "bond-006", + "orgId": "ce811934-ea1a-4f53-b6ec-465e6ca7d126", + "properties": { + "osType": "WINDOWS", + "vcUuid": "ff257ed9-070b-45eb-b2e7-d63926d5bdd7", + "__moref": "VirtualMachine:vm-288560", + "memoryGB": "4", + "datacenter": "Datacenter:datacenter-2", + "provisionGB": "1", + "__dcSelfLink": "/resources/groups/b28c7b8de065f07558b1612fce028", + "softwareName": "Microsoft Windows XP Professional (32-bit)", + "__computeType": "VirtualMachine", + "__hasSnapshot": "false", + "__placementLink": "/resources/compute/9bdc98681fb8b27557252188607b8", + "__computeHostLink": "/resources/compute/9bdc98681fb8b27557252188607b8" + } + }, + "addressInfos": [{ + "nicIndex": 0, + "address": "10.23.117.1", + "macAddress": "00:30:26:a7:23:26" + }], + "endpoint": { + "endpointProperties": { + "hostName": "infoblox.sof-mbu.eng.vmware.com", + "projectId": "111bb2f0-02fd-4983-94d2-8ac11768150f", + "providerId": "d8a5e3f2-d839-4365-af5b-f48de588fdc1", + "isLocalEnv":"true", + "certificate": """-----BEGIN CERTIFICATE-----\nMIID0jCCArqgAwIBAgIQQaJF55UCb58f9KgQLD/QgTANBgkqhkiG9w0BAQUFADCB\niTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1\nbm55dmFsZTERMA8GA1UEChMISW5mb2Jsb3gxFDASBgNVBAsTC0VuZ2luZWVyaW5n\nMSgwJgYDVQQDEx9pbmZvYmxveC5zb2YtbWJ1LmVuZy52bXdhcmUuY29tMB4XDTE5\nMDEyOTEzMDExMloXDTIwMDEyOTEzMDExMlowgYkxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxETAPBgNVBAoTCElu\nZm9ibG94MRQwEgYDVQQLEwtFbmdpbmVlcmluZzEoMCYGA1UEAxMfaW5mb2Jsb3gu\nc29mLW1idS5lbmcudm13YXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAMMLNTqbAri6rt/H8iC4UgRdN0qj+wk0R2blmD9h1BiZJTeQk1r9i2rz\nzUOZHvE8Bld8m8xJ+nysWHaoFFGTX8bOd/p20oJBGbCLqXtoLMMBGAlP7nzWGBXH\nBYUS7kMv/CG+PSX0uuB0pRbhwOFq8Y69m4HRnn2X0WJGuu+v0FmRK/1m/kCacHga\nMBKaIgbwN72rW1t/MK0ijogmLR1ASY4FlMn7OBHIEUzO+dWFBh+gPDjoBECTTH8W\n5AK9TnYdxwAtJRYWmnVqtLoT3bImtSfI4YLUtpr9r13Kv5FkYVbXov1KBrQPbYyp\n72uT2ZgDJT4YUuWyKpMppgw1VcG3MosCAwEAAaM0MDIwMAYDVR0RBCkwJ4cEChda\nCoIfaW5mb2Jsb3guc29mLW1idS5lbmcudm13YXJlLmNvbTANBgkqhkiG9w0BAQUF\nAAOCAQEAXFPIh00VI55Sdfx+czbBb4rJz3c1xgN7pbV46K0nGI8S6ufAQPgLvZJ6\ng2T/mpo0FTuWCz1IE9PC28276vwv+xJZQwQyoUq4lhT6At84NWN+ZdLEe+aBAq+Y\nxUcIWzcKv8WdnlS5DRQxnw6pQCBdisnaFoEIzngQV8oYeIemW4Hcmb//yeykbZKJ\n0GTtK5Pud+kCkYmMHpmhH21q+3aRIcdzOYIoXhdzmIKG0Och97HthqpvRfOeWQ/A\nPDbxqQ2R/3D0gt9jWPCG7c0lB8Ynl24jLBB0RhY6mBrYpFbtXBQSEciUDRJVB2zL\nV8nJiMdhj+Q+ZmtSwhNRvi2qvWAUJQ==\n-----END CERTIFICATE-----\n""" + }, + "authCredentialsLink": "/core/auth/credentials/13c9cbade08950755898c4b89c4a0" + } +} + +import unittest +from unittest import TestCase +from unittest.mock import MagicMock +from unittest.mock import Mock +from unittest.mock import patch + +context = MagicMock() +auth_credentials = {"status": 200, "content": "{\"privateKeyId\": \"admin\", \"privateKey\": \"VMware1!\"}"} +subnet_ranges = {"status": 200, "content": "{\"totalCount\": 1, \"documents\": {\"/resources/subnet-ranges/c19bd2921af950755777fd33fe060\": {\"domain\": \"test.local\"}}}"} +context.request.side_effect = [auth_credentials, auth_credentials, subnet_ranges, subnet_ranges] + +print(handler(context, input)) \ No newline at end of file