// UpdateSecret updates a secret in a managed swarm cluster. // Note: this is not exposed to the CLI but is available from the API only func (c *Cluster) UpdateSecret(id string, version uint64, spec types.SecretSpec) error { c.RLock() defer c.RUnlock() if !c.isActiveManager() { return c.errNoManager() } ctx, cancel := c.getRequestContext() defer cancel() secretSpec := convert.SecretSpecToGRPC(spec) if _, err := c.client.UpdateSecret(ctx, &swarmapi.UpdateSecretRequest{ SecretID: id, SecretVersion: &swarmapi.Version{ Index: version, }, Spec: &secretSpec, }); err != nil { return err } return nil }
// CreateSecret creates a new secret in a managed swarm cluster. func (c *Cluster) CreateSecret(s types.SecretSpec) (string, error) { c.RLock() defer c.RUnlock() if !c.isActiveManager() { return "", c.errNoManager() } ctx, cancel := c.getRequestContext() defer cancel() secretSpec := convert.SecretSpecToGRPC(s) r, err := c.node.client.CreateSecret(ctx, &swarmapi.CreateSecretRequest{Spec: &secretSpec}) if err != nil { return "", err } return r.Secret.ID, nil }
// UpdateSecret updates a secret in a managed swarm cluster. // Note: this is not exposed to the CLI but is available from the API only func (c *Cluster) UpdateSecret(id string, version uint64, spec types.SecretSpec) error { c.mu.RLock() defer c.mu.RUnlock() state := c.currentNodeState() if !state.IsActiveManager() { return c.errNoManager(state) } ctx, cancel := c.getRequestContext() defer cancel() secretSpec := convert.SecretSpecToGRPC(spec) _, err := state.controlClient.UpdateSecret(ctx, &swarmapi.UpdateSecretRequest{ SecretID: id, SecretVersion: &swarmapi.Version{ Index: version, }, Spec: &secretSpec, }) return err }