-
Notifications
You must be signed in to change notification settings - Fork 24.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Reload secure settings for plugins (#31481)
Adds the ability to reread and decrypt the local node keystore. Commonly, the contents of the keystore, backing the `SecureSettings`, are not retrievable except during node initialization. This changes that by adding a new API which broadcasts a password to every node. The password is used to decrypt the local keystore and use it to populate a `Settings` object that is passes to all the plugins implementing the `ReloadablePlugin` interface. The plugin is then responsible to do whatever "reload" means in his case. When the `reload`handler returns, the keystore is closed and its contents are no longer retrievable. Password is never stored persistently on any node. Plugins that have been moded in this commit are: `repository-azure`, `repository-s3`, `repository-gcs` and `discovery-ec2`.
- Loading branch information
1 parent
afff380
commit 26c2347
Showing
69 changed files
with
3,551 additions
and
1,286 deletions.
There are no files selected for viewing
61 changes: 61 additions & 0 deletions
61
plugins/discovery-ec2/src/main/java/org/elasticsearch/discovery/ec2/AmazonEc2Reference.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
/* | ||
* Licensed to Elasticsearch under one or more contributor | ||
* license agreements. See the NOTICE file distributed with | ||
* this work for additional information regarding copyright | ||
* ownership. Elasticsearch licenses this file to you under | ||
* the Apache License, Version 2.0 (the "License"); you may | ||
* not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, | ||
* software distributed under the License is distributed on an | ||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
* KIND, either express or implied. See the License for the | ||
* specific language governing permissions and limitations | ||
* under the License. | ||
*/ | ||
|
||
package org.elasticsearch.discovery.ec2; | ||
|
||
import com.amazonaws.services.ec2.AmazonEC2; | ||
|
||
import org.elasticsearch.common.lease.Releasable; | ||
import org.elasticsearch.common.util.concurrent.AbstractRefCounted; | ||
|
||
/** | ||
* Handles the shutdown of the wrapped {@link AmazonEC2} using reference | ||
* counting. | ||
*/ | ||
public class AmazonEc2Reference extends AbstractRefCounted implements Releasable { | ||
|
||
private final AmazonEC2 client; | ||
|
||
AmazonEc2Reference(AmazonEC2 client) { | ||
super("AWS_EC2_CLIENT"); | ||
this.client = client; | ||
} | ||
|
||
/** | ||
* Call when the client is not needed anymore. | ||
*/ | ||
@Override | ||
public void close() { | ||
decRef(); | ||
} | ||
|
||
/** | ||
* Returns the underlying `AmazonEC2` client. All method calls are permitted BUT | ||
* NOT shutdown. Shutdown is called when reference count reaches 0. | ||
*/ | ||
public AmazonEC2 client() { | ||
return client; | ||
} | ||
|
||
@Override | ||
protected void closeInternal() { | ||
client.shutdown(); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.