Skip to content

Commit 25b79d4

Browse files
Merge pull request #36 from kumargauravsharma/reusable-set-output-dynamic-hook
Auto generate setoutput method and use it from custom code
2 parents d36fa20 + 82efd8d commit 25b79d4

18 files changed

+427
-186
lines changed
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
ack_generate_info:
2-
build_date: "2021-07-16T19:55:47Z"
3-
build_hash: 7832e9aa4a48565302cd440f4cdf2267f04adfed
2+
build_date: "2021-07-19T17:01:25Z"
3+
build_hash: a8283f525037c5b9c42a4c3c723ba70e86678e17
44
go_version: go1.15.2 darwin/amd64
5-
version: v0.5.0
5+
version: v0.6.0
66
api_directory_checksum: 04701e412e7e4597466c1d56571be2c5de2b1e27
77
api_version: v1alpha1
88
aws_sdk_go_version: ""
99
generator_config_info:
10-
file_checksum: 821cc69bbfdafc0bb1302bb609f7b92774448303
10+
file_checksum: 91149587edd7737e80d84b59045e6fcd8fb1a044
1111
original_file_name: generator.yaml
1212
last_modification:
1313
reason: API generation
14-
timestamp: 2021-07-16 19:55:56.542005 +0000 UTC
14+
timestamp: 2021-07-19 17:01:45.007056 +0000 UTC

apis/v1alpha1/generator.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ resources:
7171
template_path: hooks/sdk_update_post_build_request.go.tpl
7272
delta_post_compare:
7373
code: "filterDelta(delta, a, b)"
74+
sdk_file_end:
75+
template_path: hooks/sdk_file_end.go.tpl
76+
sdk_file_end_set_output_post_populate:
77+
code: "rm.customSetOutput(obj, ko) // custom set output from obj"
7478
Snapshot:
7579
update_conditions_custom_method_name: CustomUpdateConditions
7680
exceptions:

generator.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ resources:
7171
template_path: hooks/sdk_update_post_build_request.go.tpl
7272
delta_post_compare:
7373
code: "filterDelta(delta, a, b)"
74+
sdk_file_end:
75+
template_path: hooks/sdk_file_end.go.tpl
76+
sdk_file_end_set_output_post_populate:
77+
code: "rm.customSetOutput(obj, ko) // custom set output from obj"
7478
Snapshot:
7579
update_conditions_custom_method_name: CustomUpdateConditions
7680
exceptions:

pkg/resource/replication_group/custom_set_output.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func (rm *resourceManager) CustomDescribeReplicationGroupsSetOutput(
3939
return ko, nil
4040
}
4141
elem := resp.ReplicationGroups[0]
42-
rm.customSetOutput(r, elem, ko)
42+
rm.customSetOutput(elem, ko)
4343
err := rm.customSetOutputSupplementAPIs(ctx, r, elem, ko)
4444
if err != nil {
4545
return nil, err
@@ -53,7 +53,7 @@ func (rm *resourceManager) CustomCreateReplicationGroupSetOutput(
5353
resp *elasticache.CreateReplicationGroupOutput,
5454
ko *svcapitypes.ReplicationGroup,
5555
) (*svcapitypes.ReplicationGroup, error) {
56-
rm.customSetOutput(r, resp.ReplicationGroup, ko)
56+
rm.customSetOutput(resp.ReplicationGroup, ko)
5757
return ko, nil
5858
}
5959

@@ -63,12 +63,11 @@ func (rm *resourceManager) CustomModifyReplicationGroupSetOutput(
6363
resp *elasticache.ModifyReplicationGroupOutput,
6464
ko *svcapitypes.ReplicationGroup,
6565
) (*svcapitypes.ReplicationGroup, error) {
66-
rm.customSetOutput(r, resp.ReplicationGroup, ko)
66+
rm.customSetOutput(resp.ReplicationGroup, ko)
6767
return ko, nil
6868
}
6969

7070
func (rm *resourceManager) customSetOutput(
71-
r *resource,
7271
respRG *elasticache.ReplicationGroup,
7372
ko *svcapitypes.ReplicationGroup,
7473
) {

pkg/resource/replication_group/custom_update_api.go

Lines changed: 4 additions & 173 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,13 @@ package replication_group
1616
import (
1717
"context"
1818
"fmt"
19-
ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1"
2019
"github.com/aws-controllers-k8s/runtime/pkg/requeue"
2120
"github.com/pkg/errors"
2221
"sort"
2322

2423
svcapitypes "github.com/aws-controllers-k8s/elasticache-controller/apis/v1alpha1"
2524
ackcompare "github.com/aws-controllers-k8s/runtime/pkg/compare"
2625
svcsdk "github.com/aws/aws-sdk-go/service/elasticache"
27-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2826
)
2927

3028
// Implements specialized logic for replication group updates.
@@ -144,7 +142,7 @@ func (rm *resourceManager) modifyReplicationGroup(
144142
return nil, respErr
145143
}
146144

147-
return rm.provideUpdatedResource(desired, resp.ReplicationGroup)
145+
return rm.setReplicationGroupOutput(desired, resp.ReplicationGroup)
148146
}
149147

150148
// no updates done
@@ -268,7 +266,7 @@ func (rm *resourceManager) increaseReplicaCount(
268266
rm.log.V(1).Info("Error during IncreaseReplicaCount", "error", respErr)
269267
return nil, respErr
270268
}
271-
return rm.provideUpdatedResource(desired, resp.ReplicationGroup)
269+
return rm.setReplicationGroupOutput(desired, resp.ReplicationGroup)
272270
}
273271

274272
func (rm *resourceManager) decreaseReplicaCount(
@@ -286,7 +284,7 @@ func (rm *resourceManager) decreaseReplicaCount(
286284
rm.log.V(1).Info("Error during DecreaseReplicaCount", "error", respErr)
287285
return nil, respErr
288286
}
289-
return rm.provideUpdatedResource(desired, resp.ReplicationGroup)
287+
return rm.setReplicationGroupOutput(desired, resp.ReplicationGroup)
290288
}
291289

292290
func (rm *resourceManager) updateShardConfiguration(
@@ -304,7 +302,7 @@ func (rm *resourceManager) updateShardConfiguration(
304302
rm.log.V(1).Info("Error during ModifyReplicationGroupShardConfiguration", "error", respErr)
305303
return nil, respErr
306304
}
307-
return rm.provideUpdatedResource(desired, resp.ReplicationGroup)
305+
return rm.setReplicationGroupOutput(desired, resp.ReplicationGroup)
308306
}
309307

310308
// newIncreaseReplicaCountRequestPayload returns an SDK-specific struct for the HTTP request
@@ -676,170 +674,3 @@ func (rm *resourceManager) newModifyReplicationGroupRequestPayload(
676674

677675
return input
678676
}
679-
680-
// This method copies the data from given replicationGroup by populating it into copy of supplied resource
681-
// and returns it.
682-
func (rm *resourceManager) provideUpdatedResource(
683-
desired *resource,
684-
replicationGroup *svcsdk.ReplicationGroup,
685-
) (*resource, error) {
686-
// Merge in the information we read from the API call above to the copy of
687-
// the original Kubernetes object we passed to the function
688-
ko := desired.ko.DeepCopy()
689-
690-
if ko.Status.ACKResourceMetadata == nil {
691-
ko.Status.ACKResourceMetadata = &ackv1alpha1.ResourceMetadata{}
692-
}
693-
if replicationGroup.ARN != nil {
694-
arn := ackv1alpha1.AWSResourceName(*replicationGroup.ARN)
695-
ko.Status.ACKResourceMetadata.ARN = &arn
696-
}
697-
if replicationGroup.AuthTokenEnabled != nil {
698-
ko.Status.AuthTokenEnabled = replicationGroup.AuthTokenEnabled
699-
}
700-
if replicationGroup.AuthTokenLastModifiedDate != nil {
701-
ko.Status.AuthTokenLastModifiedDate = &metav1.Time{*replicationGroup.AuthTokenLastModifiedDate}
702-
}
703-
if replicationGroup.AutomaticFailover != nil {
704-
ko.Status.AutomaticFailover = replicationGroup.AutomaticFailover
705-
}
706-
if replicationGroup.ClusterEnabled != nil {
707-
ko.Status.ClusterEnabled = replicationGroup.ClusterEnabled
708-
}
709-
if replicationGroup.ConfigurationEndpoint != nil {
710-
f7 := &svcapitypes.Endpoint{}
711-
if replicationGroup.ConfigurationEndpoint.Address != nil {
712-
f7.Address = replicationGroup.ConfigurationEndpoint.Address
713-
}
714-
if replicationGroup.ConfigurationEndpoint.Port != nil {
715-
f7.Port = replicationGroup.ConfigurationEndpoint.Port
716-
}
717-
ko.Status.ConfigurationEndpoint = f7
718-
}
719-
if replicationGroup.Description != nil {
720-
ko.Status.Description = replicationGroup.Description
721-
}
722-
if replicationGroup.GlobalReplicationGroupInfo != nil {
723-
f9 := &svcapitypes.GlobalReplicationGroupInfo{}
724-
if replicationGroup.GlobalReplicationGroupInfo.GlobalReplicationGroupId != nil {
725-
f9.GlobalReplicationGroupID = replicationGroup.GlobalReplicationGroupInfo.GlobalReplicationGroupId
726-
}
727-
if replicationGroup.GlobalReplicationGroupInfo.GlobalReplicationGroupMemberRole != nil {
728-
f9.GlobalReplicationGroupMemberRole = replicationGroup.GlobalReplicationGroupInfo.GlobalReplicationGroupMemberRole
729-
}
730-
ko.Status.GlobalReplicationGroupInfo = f9
731-
}
732-
if replicationGroup.MemberClusters != nil {
733-
f11 := []*string{}
734-
for _, f11iter := range replicationGroup.MemberClusters {
735-
var f11elem string
736-
f11elem = *f11iter
737-
f11 = append(f11, &f11elem)
738-
}
739-
ko.Status.MemberClusters = f11
740-
}
741-
if replicationGroup.MultiAZ != nil {
742-
ko.Status.MultiAZ = replicationGroup.MultiAZ
743-
}
744-
if replicationGroup.NodeGroups != nil {
745-
f13 := []*svcapitypes.NodeGroup{}
746-
for _, f13iter := range replicationGroup.NodeGroups {
747-
f13elem := &svcapitypes.NodeGroup{}
748-
if f13iter.NodeGroupId != nil {
749-
f13elem.NodeGroupID = f13iter.NodeGroupId
750-
}
751-
if f13iter.NodeGroupMembers != nil {
752-
f13elemf1 := []*svcapitypes.NodeGroupMember{}
753-
for _, f13elemf1iter := range f13iter.NodeGroupMembers {
754-
f13elemf1elem := &svcapitypes.NodeGroupMember{}
755-
if f13elemf1iter.CacheClusterId != nil {
756-
f13elemf1elem.CacheClusterID = f13elemf1iter.CacheClusterId
757-
}
758-
if f13elemf1iter.CacheNodeId != nil {
759-
f13elemf1elem.CacheNodeID = f13elemf1iter.CacheNodeId
760-
}
761-
if f13elemf1iter.CurrentRole != nil {
762-
f13elemf1elem.CurrentRole = f13elemf1iter.CurrentRole
763-
}
764-
if f13elemf1iter.PreferredAvailabilityZone != nil {
765-
f13elemf1elem.PreferredAvailabilityZone = f13elemf1iter.PreferredAvailabilityZone
766-
}
767-
if f13elemf1iter.ReadEndpoint != nil {
768-
f13elemf1elemf4 := &svcapitypes.Endpoint{}
769-
if f13elemf1iter.ReadEndpoint.Address != nil {
770-
f13elemf1elemf4.Address = f13elemf1iter.ReadEndpoint.Address
771-
}
772-
if f13elemf1iter.ReadEndpoint.Port != nil {
773-
f13elemf1elemf4.Port = f13elemf1iter.ReadEndpoint.Port
774-
}
775-
f13elemf1elem.ReadEndpoint = f13elemf1elemf4
776-
}
777-
f13elemf1 = append(f13elemf1, f13elemf1elem)
778-
}
779-
f13elem.NodeGroupMembers = f13elemf1
780-
}
781-
if f13iter.PrimaryEndpoint != nil {
782-
f13elemf2 := &svcapitypes.Endpoint{}
783-
if f13iter.PrimaryEndpoint.Address != nil {
784-
f13elemf2.Address = f13iter.PrimaryEndpoint.Address
785-
}
786-
if f13iter.PrimaryEndpoint.Port != nil {
787-
f13elemf2.Port = f13iter.PrimaryEndpoint.Port
788-
}
789-
f13elem.PrimaryEndpoint = f13elemf2
790-
}
791-
if f13iter.ReaderEndpoint != nil {
792-
f13elemf3 := &svcapitypes.Endpoint{}
793-
if f13iter.ReaderEndpoint.Address != nil {
794-
f13elemf3.Address = f13iter.ReaderEndpoint.Address
795-
}
796-
if f13iter.ReaderEndpoint.Port != nil {
797-
f13elemf3.Port = f13iter.ReaderEndpoint.Port
798-
}
799-
f13elem.ReaderEndpoint = f13elemf3
800-
}
801-
if f13iter.Slots != nil {
802-
f13elem.Slots = f13iter.Slots
803-
}
804-
if f13iter.Status != nil {
805-
f13elem.Status = f13iter.Status
806-
}
807-
f13 = append(f13, f13elem)
808-
}
809-
ko.Status.NodeGroups = f13
810-
}
811-
if replicationGroup.PendingModifiedValues != nil {
812-
f14 := &svcapitypes.ReplicationGroupPendingModifiedValues{}
813-
if replicationGroup.PendingModifiedValues.AuthTokenStatus != nil {
814-
f14.AuthTokenStatus = replicationGroup.PendingModifiedValues.AuthTokenStatus
815-
}
816-
if replicationGroup.PendingModifiedValues.AutomaticFailoverStatus != nil {
817-
f14.AutomaticFailoverStatus = replicationGroup.PendingModifiedValues.AutomaticFailoverStatus
818-
}
819-
if replicationGroup.PendingModifiedValues.PrimaryClusterId != nil {
820-
f14.PrimaryClusterID = replicationGroup.PendingModifiedValues.PrimaryClusterId
821-
}
822-
if replicationGroup.PendingModifiedValues.Resharding != nil {
823-
f14f3 := &svcapitypes.ReshardingStatus{}
824-
if replicationGroup.PendingModifiedValues.Resharding.SlotMigration != nil {
825-
f14f3f0 := &svcapitypes.SlotMigration{}
826-
if replicationGroup.PendingModifiedValues.Resharding.SlotMigration.ProgressPercentage != nil {
827-
f14f3f0.ProgressPercentage = replicationGroup.PendingModifiedValues.Resharding.SlotMigration.ProgressPercentage
828-
}
829-
f14f3.SlotMigration = f14f3f0
830-
}
831-
f14.Resharding = f14f3
832-
}
833-
ko.Status.PendingModifiedValues = f14
834-
}
835-
if replicationGroup.SnapshottingClusterId != nil {
836-
ko.Status.SnapshottingClusterID = replicationGroup.SnapshottingClusterId
837-
}
838-
if replicationGroup.Status != nil {
839-
ko.Status.Status = replicationGroup.Status
840-
}
841-
rm.setStatusDefaults(ko)
842-
// custom set output from response
843-
rm.customSetOutput(desired, replicationGroup, ko)
844-
return &resource{ko}, nil
845-
}

pkg/resource/replication_group/delta_util.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
package replication_group
1515

1616
import (
17-
"strings"
1817
"regexp"
18+
"strings"
1919

2020
ackcompare "github.com/aws-controllers-k8s/runtime/pkg/compare"
2121

pkg/resource/replication_group/post_set_output.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,4 @@ func setMaintenanceWindow(
8787
pmw := *latestCacheCluster.PreferredMaintenanceWindow
8888
ko.Spec.PreferredMaintenanceWindow = &pmw
8989
}
90-
}
90+
}

0 commit comments

Comments
 (0)