From ca38f576b3cb348bccced5b8a9d9db01075d3bc6 Mon Sep 17 00:00:00 2001 From: Matteo Giordano Date: Fri, 17 Jul 2020 17:29:06 +0200 Subject: [PATCH 1/5] Save customer metadata to a subscription --- .../dto/model/dto/SubscriptionDetailDTO.java | 13 +++++++++++++ .../dto/model/dto/SubscriptionPatchDTO.java | 19 ++++++++++++++++++- .../SubscriptionCustomerMetadataKey.java | 6 ++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/SubscriptionCustomerMetadataKey.java diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionDetailDTO.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionDetailDTO.java index 57fb08548..3fa4357ea 100644 --- a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionDetailDTO.java +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionDetailDTO.java @@ -1,6 +1,7 @@ package com.cloudesire.platform.apiclient.dto.model.dto; import java.util.List; +import java.util.Map; public class SubscriptionDetailDTO extends SubscriptionDTO { @@ -10,6 +11,8 @@ public class SubscriptionDetailDTO extends SubscriptionDTO private List billingItemValues; + private Map customerMetadata; + public List getCredentials() { return credentials; @@ -39,4 +42,14 @@ public void setBillingItemValues( List billingItemValues ) { this.billingItemValues = billingItemValues; } + + public Map getCustomerMetadata() + { + return customerMetadata; + } + + public void setCustomerMetadata( Map customerMetadata ) + { + this.customerMetadata = customerMetadata; + } } diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionPatchDTO.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionPatchDTO.java index 35ca0071d..a52770b41 100644 --- a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionPatchDTO.java +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionPatchDTO.java @@ -59,6 +59,9 @@ public class SubscriptionPatchDTO extends DTO @ApiModelProperty( "Refresh billing configuration for a particular invoice" ) private Integer invoiceId; + @ApiModelProperty( "Customer metadata for the subscription" ) + private Map metadata; + public SubscriptionPatchDTO( SubscriptionPatchAction action ) { this.action = action; @@ -234,6 +237,17 @@ public SubscriptionPatchDTO setInvoiceId( Integer invoiceId ) return this; } + public Map getMetadata() + { + return metadata; + } + + public SubscriptionPatchDTO setMetadata( Map metadata ) + { + this.metadata = metadata; + return this; + } + public enum SubscriptionPatchAction { @ApiModelProperty( "Renew a subscription" ) @@ -277,6 +291,9 @@ public enum SubscriptionPatchAction DEPLOY, @ApiModelProperty( "Set a descriptive name for a subscription" ) - SET_NAME + SET_NAME, + + @ApiModelProperty( "Set customer metadata for a subscription" ) + SET_METADATA } } diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/SubscriptionCustomerMetadataKey.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/SubscriptionCustomerMetadataKey.java new file mode 100644 index 000000000..41a8624a0 --- /dev/null +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/SubscriptionCustomerMetadataKey.java @@ -0,0 +1,6 @@ +package com.cloudesire.platform.apiclient.dto.model.enums; + +public enum SubscriptionCustomerMetadataKey +{ + CC, PROJECT +} From 20933863ce0822e9cb26f6e14a0e92a2cb7d3fe4 Mon Sep 17 00:00:00 2001 From: Matteo Giordano Date: Mon, 20 Jul 2020 11:32:49 +0200 Subject: [PATCH 2/5] Filter by metadata --- .../dto/model/filters/SubscriptionFilter.java | 14 ++++++++++++++ .../apiclient/query/SubscriptionQuery.java | 9 +++++++++ 2 files changed, 23 insertions(+) diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/filters/SubscriptionFilter.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/filters/SubscriptionFilter.java index e5ea164b5..f0e12d6fa 100644 --- a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/filters/SubscriptionFilter.java +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/filters/SubscriptionFilter.java @@ -6,6 +6,7 @@ import com.cloudesire.platform.apiclient.dto.model.enums.ProductType; import io.swagger.annotations.ApiModelProperty; +import java.util.Map; import java.util.Set; public final class SubscriptionFilter extends PageRequestDTO @@ -13,6 +14,9 @@ public final class SubscriptionFilter extends PageRequestDTO @ApiModelProperty( "Fuzzy match by buyer, product or company" ) private String filter; + @ApiModelProperty( "Filter by customer metadata" ) + private Map metadata; + @ApiModelProperty( "Filter by deployment status" ) private Set status; @@ -34,6 +38,16 @@ public void setFilter( String filter ) this.filter = filter; } + public Map getMetadata() + { + return metadata; + } + + public void setMetadata( Map metadata ) + { + this.metadata = metadata; + } + public Set getStatus() { return status; diff --git a/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/query/SubscriptionQuery.java b/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/query/SubscriptionQuery.java index 635fa0b85..e9f03e3d0 100644 --- a/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/query/SubscriptionQuery.java +++ b/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/query/SubscriptionQuery.java @@ -5,9 +5,12 @@ import com.cloudesire.platform.apiclient.dto.model.enums.ProductType; import org.apache.commons.lang3.StringUtils; +import java.util.Map; + public class SubscriptionQuery extends PageRequestQuery { private static final String FILTER = "filter"; + private static final String METADATA = "metadata"; private static final String STATUS = "status"; private static final String TYPE = "type"; private static final String PRODUCT = "product"; @@ -26,6 +29,12 @@ public SubscriptionQuery setFilter( String value ) return this; } + public SubscriptionQuery setMetadata( Map metadata ) + { + metadata.forEach( ( key, value ) -> put( String.format( "%s[%s]", METADATA, key ), value ) ); + return this; + } + public SubscriptionQuery setStatus( DeploymentStatusEnum... values ) { String value = StringUtils.join( values, ',' ); From b61acdbba0b58857a5cfb3b2bbd61b7bec2b98f5 Mon Sep 17 00:00:00 2001 From: Matteo Giordano Date: Tue, 21 Jul 2020 10:20:13 +0200 Subject: [PATCH 3/5] Reuse endpoint --- .../dto/model/dto/SubscriptionDetailDTO.java | 13 ------------- .../dto/model/dto/SubscriptionPatchDTO.java | 19 +------------------ .../apiclient/query/SubscriptionQuery.java | 2 +- 3 files changed, 2 insertions(+), 32 deletions(-) diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionDetailDTO.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionDetailDTO.java index 3fa4357ea..57fb08548 100644 --- a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionDetailDTO.java +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionDetailDTO.java @@ -1,7 +1,6 @@ package com.cloudesire.platform.apiclient.dto.model.dto; import java.util.List; -import java.util.Map; public class SubscriptionDetailDTO extends SubscriptionDTO { @@ -11,8 +10,6 @@ public class SubscriptionDetailDTO extends SubscriptionDTO private List billingItemValues; - private Map customerMetadata; - public List getCredentials() { return credentials; @@ -42,14 +39,4 @@ public void setBillingItemValues( List billingItemValues ) { this.billingItemValues = billingItemValues; } - - public Map getCustomerMetadata() - { - return customerMetadata; - } - - public void setCustomerMetadata( Map customerMetadata ) - { - this.customerMetadata = customerMetadata; - } } diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionPatchDTO.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionPatchDTO.java index a52770b41..35ca0071d 100644 --- a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionPatchDTO.java +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionPatchDTO.java @@ -59,9 +59,6 @@ public class SubscriptionPatchDTO extends DTO @ApiModelProperty( "Refresh billing configuration for a particular invoice" ) private Integer invoiceId; - @ApiModelProperty( "Customer metadata for the subscription" ) - private Map metadata; - public SubscriptionPatchDTO( SubscriptionPatchAction action ) { this.action = action; @@ -237,17 +234,6 @@ public SubscriptionPatchDTO setInvoiceId( Integer invoiceId ) return this; } - public Map getMetadata() - { - return metadata; - } - - public SubscriptionPatchDTO setMetadata( Map metadata ) - { - this.metadata = metadata; - return this; - } - public enum SubscriptionPatchAction { @ApiModelProperty( "Renew a subscription" ) @@ -291,9 +277,6 @@ public enum SubscriptionPatchAction DEPLOY, @ApiModelProperty( "Set a descriptive name for a subscription" ) - SET_NAME, - - @ApiModelProperty( "Set customer metadata for a subscription" ) - SET_METADATA + SET_NAME } } diff --git a/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/query/SubscriptionQuery.java b/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/query/SubscriptionQuery.java index e9f03e3d0..8913e92ef 100644 --- a/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/query/SubscriptionQuery.java +++ b/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/query/SubscriptionQuery.java @@ -29,7 +29,7 @@ public SubscriptionQuery setFilter( String value ) return this; } - public SubscriptionQuery setMetadata( Map metadata ) + public SubscriptionQuery setMetadata( Map metadata ) { metadata.forEach( ( key, value ) -> put( String.format( "%s[%s]", METADATA, key ), value ) ); return this; From 4fd1836466c2aab50d0c5a6fea5630d9ab17b19f Mon Sep 17 00:00:00 2001 From: Matteo Giordano Date: Tue, 21 Jul 2020 14:45:26 +0200 Subject: [PATCH 4/5] Remove enum --- .../dto/model/enums/SubscriptionCustomerMetadataKey.java | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/SubscriptionCustomerMetadataKey.java diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/SubscriptionCustomerMetadataKey.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/SubscriptionCustomerMetadataKey.java deleted file mode 100644 index 41a8624a0..000000000 --- a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/SubscriptionCustomerMetadataKey.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.cloudesire.platform.apiclient.dto.model.enums; - -public enum SubscriptionCustomerMetadataKey -{ - CC, PROJECT -} From 781ca29bb43a16091022892b79ff2a589ee419d4 Mon Sep 17 00:00:00 2001 From: Matteo Giordano Date: Tue, 21 Jul 2020 15:02:48 +0200 Subject: [PATCH 5/5] Filter by key only --- .../platform/apiclient/query/SubscriptionQuery.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/query/SubscriptionQuery.java b/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/query/SubscriptionQuery.java index 8913e92ef..14c6ff5a8 100644 --- a/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/query/SubscriptionQuery.java +++ b/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/query/SubscriptionQuery.java @@ -31,7 +31,10 @@ public SubscriptionQuery setFilter( String value ) public SubscriptionQuery setMetadata( Map metadata ) { - metadata.forEach( ( key, value ) -> put( String.format( "%s[%s]", METADATA, key ), value ) ); + metadata.forEach( ( key, value ) -> { + if ( value == null ) value = ""; + put( String.format( "%s[%s]", METADATA, key ), value ); + } ); return this; }