diff --git a/interface.go b/interface.go index d611a63..2dd8897 100644 --- a/interface.go +++ b/interface.go @@ -424,4 +424,7 @@ type Pmax interface { DeleteNASServer(ctx context.Context, symID, nasID string) error // GetFileInterfaceByID gets a FileInterface GetFileInterfaceByID(ctx context.Context, symID, interfaceID string) (*types.FileInterface, error) + + // RefreshSymmetrix refreshes cache on the symID + RefreshSymmetrix(ctx context.Context, symID string) error } diff --git a/system.go b/system.go index 1b6650d..6eba4f5 100644 --- a/system.go +++ b/system.go @@ -368,6 +368,29 @@ func (c *Client) GetISCSITargets(ctx context.Context, symID string) ([]ISCSITarg return targets, nil } +// RefreshSymmetrix refreshes symmetrix cache +func (c *Client) RefreshSymmetrix(ctx context.Context, symID string) error { + defer c.TimeSpent("RefreshSymmetrix", time.Now()) + if _, err := c.IsAllowedArray(symID); err != nil { + return err + } + // univmax/restapi/101/system/symmetrix/{{symID}}/refresh + URL := fmt.Sprintf("%s%d/system/symmetrix/%s/refresh", RESTPrefix, 101, symID) + fields := map[string]interface{}{ + http.MethodPut: URL, + } + log.WithFields(fields).Info("Refresh symmetrix") + ctx, cancel := c.GetTimeoutContext(ctx) + defer cancel() + err := c.api.Post( + ctx, URL, c.getDefaultHeaders(), nil, nil) + if err != nil { + log.WithFields(fields).Error("Error in RefreshSymmetrix: " + err.Error()) + return err + } + return nil +} + // SetAllowedArrays sets the list of arrays which can be manipulated // an empty list will allow all arrays to be accessed func (c *Client) SetAllowedArrays(arrays []string) error {