Fix regression in removing notification (#5673)

fixes a regression introduced in 0e4431725c
when removing a previously applied notification configuration.

event.ParseConfig() was stricter in terms of handling notification
configuration, we need to allow when notification configuration is
sent empty, this is the way to remove notification configuration.
master
Harshavardhana 7 years ago committed by kannappanr
parent b4ae2bd2f5
commit c726145baf
  1. 11
      pkg/event/config.go
  2. 5
      pkg/event/config_test.go

@ -219,10 +219,8 @@ func (conf *Config) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
return err return err
} }
if len(parsedConfig.QueueList) == 0 { // Empty queue list means user wants to delete the notification configuration.
return errors.New("missing queue configuration(s)") if len(parsedConfig.QueueList) > 0 {
}
for i, q1 := range parsedConfig.QueueList[:len(parsedConfig.QueueList)-1] { for i, q1 := range parsedConfig.QueueList[:len(parsedConfig.QueueList)-1] {
for _, q2 := range parsedConfig.QueueList[i+1:] { for _, q2 := range parsedConfig.QueueList[i+1:] {
if reflect.DeepEqual(q1, q2) { if reflect.DeepEqual(q1, q2) {
@ -230,6 +228,7 @@ func (conf *Config) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
} }
} }
} }
}
if len(parsedConfig.LambdaList) > 0 || len(parsedConfig.TopicList) > 0 { if len(parsedConfig.LambdaList) > 0 || len(parsedConfig.TopicList) > 0 {
return &ErrUnsupportedConfiguration{} return &ErrUnsupportedConfiguration{}
@ -278,10 +277,6 @@ func ParseConfig(reader io.Reader, region string, targetList *TargetList) (*Conf
return nil, err return nil, err
} }
if len(config.QueueList) == 0 {
return nil, errors.New("missing queue configuration(s)")
}
if err := config.Validate(region, targetList); err != nil { if err := config.Validate(region, targetList); err != nil {
return nil, err return nil, err
} }

@ -494,6 +494,9 @@ func TestConfigUnmarshalXML(t *testing.T) {
</TopicConfiguration> </TopicConfiguration>
</NotificationConfiguration> </NotificationConfiguration>
`) `)
dataCase5 := []byte(`<NotificationConfiguration></NotificationConfiguration>`)
testCases := []struct { testCases := []struct {
data []byte data []byte
expectErr bool expectErr bool
@ -502,6 +505,8 @@ func TestConfigUnmarshalXML(t *testing.T) {
{dataCase2, false}, {dataCase2, false},
{dataCase3, false}, {dataCase3, false},
{dataCase4, true}, {dataCase4, true},
// make sure we don't fail when queue is empty.
{dataCase5, false},
} }
for i, testCase := range testCases { for i, testCase := range testCases {

Loading…
Cancel
Save