mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-11-03 20:17:59 +00:00 
			
		
		
		
	api: sys methods
This commit is contained in:
		@@ -91,7 +91,7 @@ The following HTTP status codes are used throughout the API.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Group Seal/Unseal
 | 
					# Group Seal/Unseal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Seal [/sys/seal]
 | 
					## Seal Status [/sys/seal-status]
 | 
				
			||||||
### Seal Status [GET]
 | 
					### Seal Status [GET]
 | 
				
			||||||
Returns the status of whether the vault is currently
 | 
					Returns the status of whether the vault is currently
 | 
				
			||||||
sealed or not, as well as the progress of unsealing.
 | 
					sealed or not, as well as the progress of unsealing.
 | 
				
			||||||
@@ -116,6 +116,7 @@ The response has the following attributes:
 | 
				
			|||||||
            "progress": 1
 | 
					            "progress": 1
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Seal [/sys/seal]
 | 
				
			||||||
### Seal [PUT]
 | 
					### Seal [PUT]
 | 
				
			||||||
Seal the vault.
 | 
					Seal the vault.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,7 +67,7 @@ func (c *Client) NewRequest(method, path string) *Request {
 | 
				
			|||||||
// RawRequest performs the raw request given. This request may be against
 | 
					// RawRequest performs the raw request given. This request may be against
 | 
				
			||||||
// a Vault server not configured with this client. This is an advanced operation
 | 
					// a Vault server not configured with this client. This is an advanced operation
 | 
				
			||||||
// that generally won't need to be called externally.
 | 
					// that generally won't need to be called externally.
 | 
				
			||||||
func (c *Client) RawRequest(r *Request) (*http.Response, error) {
 | 
					func (c *Client) RawRequest(r *Request) (*Response, error) {
 | 
				
			||||||
	req, err := r.ToHTTP()
 | 
						req, err := r.ToHTTP()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
@@ -78,5 +78,5 @@ func (c *Client) RawRequest(r *Request) (*http.Response, error) {
 | 
				
			|||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return resp, nil
 | 
						return &Response{Response: resp}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								api/response.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								api/response.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					package api
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"encoding/json"
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Response is a raw response that wraps an HTTP response.
 | 
				
			||||||
 | 
					type Response struct {
 | 
				
			||||||
 | 
						*http.Response
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DecodeJSON will decode the response body to a JSON structure. This
 | 
				
			||||||
 | 
					// will consume the response body, but will not close it. Close must
 | 
				
			||||||
 | 
					// still be called.
 | 
				
			||||||
 | 
					func (r *Response) DecodeJSON(out interface{}) error {
 | 
				
			||||||
 | 
						dec := json.NewDecoder(r.Body)
 | 
				
			||||||
 | 
						return dec.Decode(out)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										50
									
								
								api/sys.go
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								api/sys.go
									
									
									
									
									
								
							@@ -9,3 +9,53 @@ type Sys struct {
 | 
				
			|||||||
func (c *Client) Sys() *Sys {
 | 
					func (c *Client) Sys() *Sys {
 | 
				
			||||||
	return &Sys{c: c}
 | 
						return &Sys{c: c}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *Sys) SealStatus() (*SealStatusResponse, error) {
 | 
				
			||||||
 | 
						r := c.c.NewRequest("GET", "/sys/seal-status")
 | 
				
			||||||
 | 
						resp, err := c.c.RawRequest(r)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						defer resp.Body.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var result SealStatusResponse
 | 
				
			||||||
 | 
						err = resp.DecodeJSON(&result)
 | 
				
			||||||
 | 
						return &result, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *Sys) Seal() error {
 | 
				
			||||||
 | 
						r := c.c.NewRequest("PUT", "/sys/seal")
 | 
				
			||||||
 | 
						resp, err := c.c.RawRequest(r)
 | 
				
			||||||
 | 
						defer resp.Body.Close()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *Sys) Unseal(shard string) (*SealStatusResponse, error) {
 | 
				
			||||||
 | 
						body := map[string]interface{}{"key": shard}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						r := c.c.NewRequest("PUT", "/sys/unseal")
 | 
				
			||||||
 | 
						if err := r.SetJSONBody(body); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						resp, err := c.c.RawRequest(r)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						defer resp.Body.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var result SealStatusResponse
 | 
				
			||||||
 | 
						err = resp.DecodeJSON(&result)
 | 
				
			||||||
 | 
						return &result, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Structures for the requests/resposne are all down here. They aren't
 | 
				
			||||||
 | 
					// individually documentd because the map almost directly to the raw HTTP API
 | 
				
			||||||
 | 
					// documentation. Please refer to that documentation for more details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type SealStatusResponse struct {
 | 
				
			||||||
 | 
						Sealed   bool
 | 
				
			||||||
 | 
						T        int
 | 
				
			||||||
 | 
						N        int
 | 
				
			||||||
 | 
						Progress int
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user