Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update metalgateway operator and patch requestBody schemas of create APIs #47

Merged
merged 7 commits into from
Sep 22, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
openapi-generator*
openapi-generator*
.DS_Store
.idea
21 changes: 16 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,18 +47,29 @@ make git_run

Note : Both docker and git pulls latest version of openapi generator.

## Adding complex workflows:
Complex workflows requiring multiple granular, autogenerated apis can be implemented as part of Operator classes. These classes are included in the path _equinix-openapi-metal/src/main/java/com/equinix/workflow_ when building the sdk.
## Contribution guidelines
### Patching oas3.0 spec
1. Make changes in ``spec/oas3.patched.json``.
2. Create a patch file in metal-java:
```
cd spec
git diff oas3.patched.json > ../patches/spec.fetched.json/<patchfilename>
rinzler-17 marked this conversation as resolved.
Show resolved Hide resolved
cd ..
```
3. ``patchfilename`` should be in format: ``<patch_index>-<short_patch_decription_or_identifier>.patch``
4. Run ``make docker_run`` to reapply the changes to oas spec.
5. Before pushing changes, commit ``spec/oas3.patched.json`` along with the patch file.

## Steps for development:
### Adding complex workflows
Complex workflows requiring multiple granular, autogenerated apis can be implemented as part of Operator classes. These classes are included in the path ``equinix-openapi-metal/src/main/java/com/equinix/workflow`` when building the sdk. An example use case for operator implementation can be for APIs requiring polling logic to fetch updated resource state.
1. Follow steps mentioned in section "Generate and build equinix metal java client" to generate and build the sdk in your cloned local.
2. Implement operator classes inside ```equinix-openapi-metal/src/main/java/com/equinix/workflow```.
3. Follow steps mentioned in section "Functional tests for complex workflows" to add functional tests for the same.
4. After testing and debugging in your local, move the newly added operator classes to _internal/workflow_.
4. After testing and debugging in your local, move the newly added operator classes to ``internal/workflow``.
5. Commit your changes made in ```internal/workflow```, ```.github/workflows```, ```equinix-functional-tests``` and push them to the remote branch. The auto commit git workflow would automatically build and generate the sdk in the remote branch with the newly added workflows.
6. Post completion of the auto commit workflow in your remote branch, you can do a ```git rebase origin/your-branch-name``` to sync your local.

## Functional tests for complex workflows:
### Adding functional tests for complex workflows
1. You can implement functional tests for your operator classes inside ```equinix-functional-test/src/test/java/com/equinix/test/functional```. Check existing operator test implementations for reference.
2. Input properties required for the tests can be mentioned in a separate .properties file inside ```equinix-functional-test/src/test/resources```.
3. To run functional tests locally:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,9 @@

public class TestMetalGatewayOperator {
private static final Logger logger = LoggerFactory.getLogger(TestMetalGatewayOperator.class);

private final String propFilename = "src/test/resources/metalgateway-test.properties";
private final String sysTokenKey = "FUNCTIONAL_TEST_TOKEN";
private final String sysProjUuidKey = "FUNCTIONAL_TEST_PROJECT_UUID";

private HashMap<String, String> props;
private MetalGatewayOperator metalGatewayOperator;
private VlanHelper vlanHelper;
Expand Down Expand Up @@ -58,7 +56,7 @@ public void testMetalGatewayCreationWithPrivateIpBlockAndPolling() throws ApiExc
Duration wait = Duration.ofSeconds(5);

logger.info("Provisioning metal gateway with the vlan attached to it...");
MetalGateway createdMetalGateway = metalGatewayOperator.createMetalGatewayWithPrivateIpBlockAndPoll(projectId, metro, vxlan, privateIpv4SubnetSize, retries, wait);
MetalGateway createdMetalGateway = metalGatewayOperator.createMetalGatewayWithPrivateIpBlock(projectId, metro, vxlan, privateIpv4SubnetSize);

UUID metalGatewayId = createdMetalGateway.getId();
Assert.assertNotNull(createdMetalGateway.getState());
Expand All @@ -75,7 +73,7 @@ public void testMetalGatewayCreationWithPrivateIpBlockAndPolling() throws ApiExc
logger.info(String.format("Vxlan ID of associated VLAN: %s", vlanOfMetalGateway.getVxlan()));

logger.info("Deleting vlan and metal gateway ...");
metalGatewayOperator.deleteVlanAndMetalGateway(metalGatewayId);
metalGatewayOperator.deleteVlanAndMetalGateway(metalGatewayId, retries, wait);
Assert.assertNull(vlanHelper.getVlanByVxlanInProjectMetro(projectId, metro, vxlan));
Assert.assertThrows(ApiException.class, () -> metalGatewayOperator.getMetalGateway(metalGatewayId, null, null));
}
Expand Down
15 changes: 6 additions & 9 deletions equinix-openapi-metal/.openapi-generator/FILES
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ docs/CreateEmailInput.md
docs/CreateMetalGatewayRequest.md
docs/CreateSelfServiceReservationRequest.md
docs/CreateSelfServiceReservationRequestPeriod.md
docs/CreateVrfRequest.md
docs/DefaultIPReservation.md
docs/DefaultIPReservationAllOf.md
docs/DefaultIPReservationCreateInput.md
docs/Device.md
docs/DeviceActionsInner.md
docs/DeviceCreateInput.md
Expand Down Expand Up @@ -90,7 +90,6 @@ docs/IPAvailabilitiesList.md
docs/IPReservation.md
docs/IPReservationList.md
docs/IPReservationMetro.md
docs/IPReservationRequestInput.md
docs/IncidentsApi.md
docs/InstancesBatchCreateInput.md
docs/InstancesBatchCreateInputBatchesInner.md
Expand Down Expand Up @@ -118,7 +117,7 @@ docs/MembershipList.md
docs/MembershipsApi.md
docs/Meta.md
docs/MetalGateway.md
docs/MetalGatewayInput.md
docs/MetalGatewayCreateInput.md
docs/MetalGatewayIpReservation.md
docs/MetalGatewayList.md
docs/MetalGatewayLite.md
Expand Down Expand Up @@ -339,9 +338,9 @@ src/main/java/com/equinix/openapi/metal/v1/model/CreateEmailInput.java
src/main/java/com/equinix/openapi/metal/v1/model/CreateMetalGatewayRequest.java
src/main/java/com/equinix/openapi/metal/v1/model/CreateSelfServiceReservationRequest.java
src/main/java/com/equinix/openapi/metal/v1/model/CreateSelfServiceReservationRequestPeriod.java
src/main/java/com/equinix/openapi/metal/v1/model/CreateVrfRequest.java
src/main/java/com/equinix/openapi/metal/v1/model/DefaultIPReservation.java
src/main/java/com/equinix/openapi/metal/v1/model/DefaultIPReservationAllOf.java
src/main/java/com/equinix/openapi/metal/v1/model/DefaultIPReservationCreateInput.java
src/main/java/com/equinix/openapi/metal/v1/model/Device.java
src/main/java/com/equinix/openapi/metal/v1/model/DeviceActionsInner.java
src/main/java/com/equinix/openapi/metal/v1/model/DeviceCreateInput.java
Expand Down Expand Up @@ -378,7 +377,6 @@ src/main/java/com/equinix/openapi/metal/v1/model/IPAvailabilitiesList.java
src/main/java/com/equinix/openapi/metal/v1/model/IPReservation.java
src/main/java/com/equinix/openapi/metal/v1/model/IPReservationList.java
src/main/java/com/equinix/openapi/metal/v1/model/IPReservationMetro.java
src/main/java/com/equinix/openapi/metal/v1/model/IPReservationRequestInput.java
src/main/java/com/equinix/openapi/metal/v1/model/InstancesBatchCreateInput.java
src/main/java/com/equinix/openapi/metal/v1/model/InstancesBatchCreateInputBatchesInner.java
src/main/java/com/equinix/openapi/metal/v1/model/InstancesBatchCreateInputBatchesInnerIpAddressesInner.java
Expand All @@ -401,7 +399,7 @@ src/main/java/com/equinix/openapi/metal/v1/model/MembershipInput.java
src/main/java/com/equinix/openapi/metal/v1/model/MembershipList.java
src/main/java/com/equinix/openapi/metal/v1/model/Meta.java
src/main/java/com/equinix/openapi/metal/v1/model/MetalGateway.java
src/main/java/com/equinix/openapi/metal/v1/model/MetalGatewayInput.java
src/main/java/com/equinix/openapi/metal/v1/model/MetalGatewayCreateInput.java
src/main/java/com/equinix/openapi/metal/v1/model/MetalGatewayIpReservation.java
src/main/java/com/equinix/openapi/metal/v1/model/MetalGatewayList.java
src/main/java/com/equinix/openapi/metal/v1/model/MetalGatewayLite.java
Expand Down Expand Up @@ -573,8 +571,8 @@ src/test/java/com/equinix/openapi/metal/v1/model/CreateEmailInputTest.java
src/test/java/com/equinix/openapi/metal/v1/model/CreateMetalGatewayRequestTest.java
src/test/java/com/equinix/openapi/metal/v1/model/CreateSelfServiceReservationRequestPeriodTest.java
src/test/java/com/equinix/openapi/metal/v1/model/CreateSelfServiceReservationRequestTest.java
src/test/java/com/equinix/openapi/metal/v1/model/CreateVrfRequestTest.java
src/test/java/com/equinix/openapi/metal/v1/model/DefaultIPReservationAllOfTest.java
src/test/java/com/equinix/openapi/metal/v1/model/DefaultIPReservationCreateInputTest.java
src/test/java/com/equinix/openapi/metal/v1/model/DefaultIPReservationTest.java
src/test/java/com/equinix/openapi/metal/v1/model/DeviceActionsInnerTest.java
src/test/java/com/equinix/openapi/metal/v1/model/DeviceCreateInputIpAddressesInnerTest.java
Expand Down Expand Up @@ -611,7 +609,6 @@ src/test/java/com/equinix/openapi/metal/v1/model/IPAssignmentTest.java
src/test/java/com/equinix/openapi/metal/v1/model/IPAvailabilitiesListTest.java
src/test/java/com/equinix/openapi/metal/v1/model/IPReservationListTest.java
src/test/java/com/equinix/openapi/metal/v1/model/IPReservationMetroTest.java
src/test/java/com/equinix/openapi/metal/v1/model/IPReservationRequestInputTest.java
src/test/java/com/equinix/openapi/metal/v1/model/IPReservationTest.java
src/test/java/com/equinix/openapi/metal/v1/model/InstancesBatchCreateInputBatchesInnerIpAddressesInnerTest.java
src/test/java/com/equinix/openapi/metal/v1/model/InstancesBatchCreateInputBatchesInnerTest.java
Expand All @@ -634,7 +631,7 @@ src/test/java/com/equinix/openapi/metal/v1/model/MembershipInputTest.java
src/test/java/com/equinix/openapi/metal/v1/model/MembershipListTest.java
src/test/java/com/equinix/openapi/metal/v1/model/MembershipTest.java
src/test/java/com/equinix/openapi/metal/v1/model/MetaTest.java
src/test/java/com/equinix/openapi/metal/v1/model/MetalGatewayInputTest.java
src/test/java/com/equinix/openapi/metal/v1/model/MetalGatewayCreateInputTest.java
src/test/java/com/equinix/openapi/metal/v1/model/MetalGatewayIpReservationTest.java
src/test/java/com/equinix/openapi/metal/v1/model/MetalGatewayListTest.java
src/test/java/com/equinix/openapi/metal/v1/model/MetalGatewayLiteTest.java
Expand Down
5 changes: 2 additions & 3 deletions equinix-openapi-metal/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -361,9 +361,9 @@ Class | Method | HTTP request | Description
- [CreateMetalGatewayRequest](docs/CreateMetalGatewayRequest.md)
- [CreateSelfServiceReservationRequest](docs/CreateSelfServiceReservationRequest.md)
- [CreateSelfServiceReservationRequestPeriod](docs/CreateSelfServiceReservationRequestPeriod.md)
- [CreateVrfRequest](docs/CreateVrfRequest.md)
- [DefaultIPReservation](docs/DefaultIPReservation.md)
- [DefaultIPReservationAllOf](docs/DefaultIPReservationAllOf.md)
- [DefaultIPReservationCreateInput](docs/DefaultIPReservationCreateInput.md)
- [Device](docs/Device.md)
- [DeviceActionsInner](docs/DeviceActionsInner.md)
- [DeviceCreateInput](docs/DeviceCreateInput.md)
Expand Down Expand Up @@ -400,7 +400,6 @@ Class | Method | HTTP request | Description
- [IPReservation](docs/IPReservation.md)
- [IPReservationList](docs/IPReservationList.md)
- [IPReservationMetro](docs/IPReservationMetro.md)
- [IPReservationRequestInput](docs/IPReservationRequestInput.md)
- [InstancesBatchCreateInput](docs/InstancesBatchCreateInput.md)
- [InstancesBatchCreateInputBatchesInner](docs/InstancesBatchCreateInputBatchesInner.md)
- [InstancesBatchCreateInputBatchesInnerIpAddressesInner](docs/InstancesBatchCreateInputBatchesInnerIpAddressesInner.md)
Expand All @@ -423,7 +422,7 @@ Class | Method | HTTP request | Description
- [MembershipList](docs/MembershipList.md)
- [Meta](docs/Meta.md)
- [MetalGateway](docs/MetalGateway.md)
- [MetalGatewayInput](docs/MetalGatewayInput.md)
- [MetalGatewayCreateInput](docs/MetalGatewayCreateInput.md)
- [MetalGatewayIpReservation](docs/MetalGatewayIpReservation.md)
- [MetalGatewayList](docs/MetalGatewayList.md)
- [MetalGatewayLite](docs/MetalGatewayLite.md)
Expand Down
Loading