Skip to content

Commit

Permalink
Add SourceSelectionCriteria to replication config
Browse files Browse the repository at this point in the history
  • Loading branch information
Poorna Krishnamoorthy committed Dec 14, 2020
1 parent 3316e6a commit 554ccdb
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions pkg/replication/replication.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,10 @@ func (c *Config) AddRule(opts Options) error {
},
DeleteMarkerReplication: DeleteMarkerReplication{Status: dmStatus},
DeleteReplication: DeleteReplication{Status: vDeleteStatus},
SourceSelectionCriteria: SourceSelectionCriteria{
ReplicaModifications: ReplicaModifications{
Status: Enabled},
},
}

// validate rule after overlaying priority for pre-existing rule being disabled.
Expand Down Expand Up @@ -378,6 +382,7 @@ type Rule struct {
DeleteReplication DeleteReplication `xml:"DeleteReplication"`
Destination Destination `xml:"Destination"`
Filter Filter `xml:"Filter" json:"Filter"`
SourceSelectionCriteria SourceSelectionCriteria `xml:"SourceSelectionCriteria" json:"SourceSelectionCriteria"`
}

// Validate validates the rule for correctness
Expand All @@ -396,6 +401,10 @@ func (r Rule) Validate() error {
return fmt.Errorf("Priority must be set for the rule")
}

if err := r.validateStatus(); err != nil {
return err
}

return nil
}

Expand Down Expand Up @@ -569,3 +578,29 @@ type DeleteReplication struct {
func (d DeleteReplication) IsEmpty() bool {
return len(d.Status) == 0
}

// ReplicaModifications specifies if replica modification sync is enabled
type ReplicaModifications struct {
Status Status `xml:"Status" json:"Status"`
}

// SourceSelectionCriteria - specifies additional source selection criteria in ReplicationConfiguration.
type SourceSelectionCriteria struct {
ReplicaModifications ReplicaModifications `xml:"ReplicaModifications" json:"ReplicaModifications"`
}

// IsValid - checks whether SourceSelectionCriteria is valid or not.
func (s SourceSelectionCriteria) IsValid() bool {
return s.ReplicaModifications.Status == Enabled || s.ReplicaModifications.Status == Disabled
}

// Validate source selection criteria
func (s SourceSelectionCriteria) Validate() error {
if (s == SourceSelectionCriteria{}) {
return nil
}
if !s.IsValid() {
return fmt.Errorf("Invalid ReplicaModification status")
}
return nil
}

0 comments on commit 554ccdb

Please sign in to comment.