Skip to content

Commit 068d4c1

Browse files
committed
plugins/ism: add alias action
Signed-off-by: Jakob Hahn <[email protected]>
1 parent 64630c6 commit 068d4c1

File tree

3 files changed

+75
-10
lines changed

3 files changed

+75
-10
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
55
## [Unreleased]
66

77
### Added
8+
- Adds ISM Alias action ([#615](https://github.com/opensearch-project/opensearch-go/pull/615))
89

910
### Changed
1011

plugins/ism/api_policies.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ type PolicyBody struct {
7272
Description string `json:"description,omitempty"`
7373
LastUpdatedTime int64 `json:"last_updated_time,omitempty"`
7474
SchemaVersion int `json:"schema_version,omitempty"`
75-
ErrorNotification *PolicyErrorNotification `json:"error_notification,omitempty"`
75+
ErrorNotification *PolicyErrorNotification `json:"error_notification"`
7676
DefaultState string `json:"default_state"`
7777
States []PolicyState `json:"states"`
7878
Template []Template `json:"ism_template,omitempty"`
@@ -146,6 +146,7 @@ type PolicyStateAction struct {
146146
IndexPriority *PolicyStateIndexPriority `json:"index_priority,omitempty"`
147147
Allocation *PolicyStateAllocation `json:"allocation,omitempty"`
148148
Rollup *PolicyStateRollup `json:"rollup,omitempty"`
149+
Alias *PolicyStateAlias `json:"alias,omitempty"`
149150
}
150151

151152
// Template is a sub type of PolicyBody containing information about the ims template
@@ -271,3 +272,19 @@ type PolicyStateTransition struct {
271272
StateName string `json:"state_name"`
272273
Conditions *PolicyStateTransitionCondition `json:"conditions,omitempty"`
273274
}
275+
276+
// PolicyStateAlias represents the Alias action
277+
type PolicyStateAlias struct {
278+
Actions []PolicyStateAliasAction `json:"actions"`
279+
}
280+
281+
// PolicyStateAliasAction is a sub type of PolicyStateAlias defining to add or remove aliases
282+
type PolicyStateAliasAction struct {
283+
Add *PolicyStateAliasName `json:"add,omitempty"`
284+
Remove *PolicyStateAliasName `json:"remove,omitempty"`
285+
}
286+
287+
// PolicyStateAliasName is a sub type of PolicyStateAliasAction defining the list of aliases
288+
type PolicyStateAliasName struct {
289+
Aliases []string `json:"aliases"`
290+
}

plugins/ism/api_policies_test.go

Lines changed: 56 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,13 @@ func TestPoliciesClient(t *testing.T) {
3030
failingClient, err := osismtest.CreateFailingClient()
3131
require.Nil(t, err)
3232

33-
testPolicy1 := "test"
34-
testPolicy2 := "test2"
35-
t.Cleanup(func() { client.Policies.Delete(nil, ism.PoliciesDeleteReq{Policy: testPolicy2}) })
33+
testPolicy := "test"
34+
testPolicyChannel := "test_channel"
35+
testPolicyAlias := "test_alias"
36+
t.Cleanup(func() {
37+
client.Policies.Delete(nil, ism.PoliciesDeleteReq{Policy: testPolicyChannel})
38+
client.Policies.Delete(nil, ism.PoliciesDeleteReq{Policy: testPolicyAlias})
39+
})
3640

3741
var putResp ism.PoliciesPutResp
3842

@@ -54,7 +58,7 @@ func TestPoliciesClient(t *testing.T) {
5458
putResp, err = client.Policies.Put(
5559
nil,
5660
ism.PoliciesPutReq{
57-
Policy: testPolicy1,
61+
Policy: testPolicy,
5862
Body: ism.PoliciesPutBody{
5963
Policy: ism.PolicyBody{
6064
Description: "test",
@@ -138,7 +142,7 @@ func TestPoliciesClient(t *testing.T) {
138142
return client.Policies.Put(
139143
nil,
140144
ism.PoliciesPutReq{
141-
Policy: testPolicy2,
145+
Policy: testPolicyChannel,
142146
Body: ism.PoliciesPutBody{
143147
Policy: ism.PolicyBody{
144148
Description: "test",
@@ -163,7 +167,50 @@ func TestPoliciesClient(t *testing.T) {
163167
},
164168
Template: []ism.Template{
165169
ism.Template{
166-
IndexPatterns: []string{"test2"},
170+
IndexPatterns: []string{testPolicyChannel},
171+
Priority: 21,
172+
},
173+
},
174+
},
175+
},
176+
},
177+
)
178+
},
179+
},
180+
{
181+
Name: "Create with Alias",
182+
Results: func(t *testing.T) (osismtest.Response, error) {
183+
ostest.SkipIfBelowVersion(t, osClient, 2, 4, "policy with alias action")
184+
return client.Policies.Put(
185+
nil,
186+
ism.PoliciesPutReq{
187+
Policy: testPolicyAlias,
188+
Body: ism.PoliciesPutBody{
189+
Policy: ism.PolicyBody{
190+
Description: "test",
191+
DefaultState: "alias",
192+
States: []ism.PolicyState{
193+
ism.PolicyState{
194+
Name: "alias",
195+
Actions: []ism.PolicyStateAction{
196+
ism.PolicyStateAction{
197+
Alias: &ism.PolicyStateAlias{
198+
Actions: []ism.PolicyStateAliasAction{
199+
ism.PolicyStateAliasAction{
200+
Add: &ism.PolicyStateAliasName{Aliases: []string{"alias-test"}},
201+
},
202+
ism.PolicyStateAliasAction{
203+
Remove: &ism.PolicyStateAliasName{Aliases: []string{"alias-test"}},
204+
},
205+
},
206+
},
207+
},
208+
},
209+
},
210+
},
211+
Template: []ism.Template{
212+
ism.Template{
213+
IndexPatterns: []string{testPolicyAlias},
167214
Priority: 21,
168215
},
169216
},
@@ -181,7 +228,7 @@ func TestPoliciesClient(t *testing.T) {
181228
return client.Policies.Put(
182229
nil,
183230
ism.PoliciesPutReq{
184-
Policy: testPolicy1,
231+
Policy: testPolicy,
185232
Params: ism.PoliciesPutParams{IfSeqNo: opensearch.ToPointer(putResp.SeqNo), IfPrimaryTerm: opensearch.ToPointer(putResp.PrimaryTerm)},
186233
Body: ism.PoliciesPutBody{
187234
Policy: putResp.Policy.Policy,
@@ -210,7 +257,7 @@ func TestPoliciesClient(t *testing.T) {
210257
{
211258
Name: "with request",
212259
Results: func(t *testing.T) (osismtest.Response, error) {
213-
return client.Policies.Get(nil, &ism.PoliciesGetReq{Policy: testPolicy1})
260+
return client.Policies.Get(nil, &ism.PoliciesGetReq{Policy: testPolicy})
214261
},
215262
},
216263
{
@@ -227,7 +274,7 @@ func TestPoliciesClient(t *testing.T) {
227274
{
228275
Name: "with request",
229276
Results: func(t *testing.T) (osismtest.Response, error) {
230-
return client.Policies.Delete(nil, ism.PoliciesDeleteReq{Policy: testPolicy1})
277+
return client.Policies.Delete(nil, ism.PoliciesDeleteReq{Policy: testPolicy})
231278
},
232279
},
233280
{

0 commit comments

Comments
 (0)