Documentation
¶
Overview ¶
Package restapi lunaform This is a RESTful server for managing Terraform plan and apply jobs and the auditing of actions to approve those apply jobs. The inspiration for this project is the AWS CloudFormation API's. The intention is to implement a locking mechanism not only for the terraform state, but for the plan and apply of terraform modules. Once a `module` plan starts, it is instantiated as a `stack` within the nomencalture of `lunaform`.
Schemes: http https Host: localhost BasePath: /api Version: 0.0.1-alpha License: Apache 2.0 https://github.com/getlunaform/lunaform/blob/master/LICENSE Contact: <drew.sonne@gmail.com> Consumes: - application/vnd.lunaform.v1+json Produces: - application/vnd.lunaform.v1+json
swagger:meta
Index ¶
- Constants
- Variables
- func CreateTfModuleController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.CreateModuleHandlerFunc
- func CreateTfProviderConfigurationController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.CreateProviderConfigurationHandlerFunc
- func CreateTfProviderController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.CreateProviderHandlerFunc
- func CreateTfStackController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database, ...) operations.DeployStackHandlerFunc
- func CreateTfStateBackendsController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.CreateStateBackendHandlerFunc
- func CreateTfWorkspaceController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.CreateWorkspaceHandlerFunc
- func DebugLog(format string, args ...interface{})
- func DeleteTfModuleController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.DeleteModuleHandlerFunc
- func DeleteTfProviderConfigurationController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.DeleteProviderConfigurationHandlerFunc
- func DeleteTfProviderController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.DeleteProviderHandlerFunc
- func DeleteTfStackController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database, ...) operations.UndeployStackHandlerFunc
- func GetTfModuleController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.GetModuleHandlerFunc
- func GetTfProviderConfigurationController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.GetProviderConfigurationHandlerFunc
- func GetTfProviderController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.GetProviderHandlerFunc
- func GetTfStackController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.GetStackHandlerFunc
- func GetTfWorkspaceController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.DescribeWorkspaceHandlerFunc
- func ListResourceGroupsController(ch *helpers.ContextHelper) resources.ListResourceGroupsHandlerFunc
- func ListResourcesController(ch *helpers.ContextHelper) resources.ListResourcesHandlerFunc
- func ListTfModulesController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.ListModulesHandlerFunc
- func ListTfProviderConfigurationController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.ListProviderConfigurationsHandlerFunc
- func ListTfProvidersController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.ListProvidersHandlerFunc
- func ListTfStackDeploymentsController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database, ...) operations.ListDeploymentsHandlerFunc
- func ListTfStacksController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.ListStacksHandlerFunc
- func ListTfStateBackendsController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.ListStateBackendsHandlerFunc
- func ListTfWorkspacesController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.ListWorkspacesHandlerFunc
- func NewTfDeployment(workspace string) *models.ResourceTfDeployment
- func UpdateTfStateBackendsController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.UpdateStateBackendHandlerFunc
- type CfgBackend
- type CfgIdentity
- type CfgIdentityDefault
- type CommonServerErrorResponder
- type ConfigFileFlags
- type Configuration
- type Server
- func (s *Server) ConfigureAPI()
- func (s *Server) ConfigureFlags()
- func (s *Server) Fatalf(f string, args ...interface{})
- func (s *Server) GetHandler() http.Handler
- func (s *Server) HTTPListener() (net.Listener, error)
- func (s *Server) Listen() error
- func (s *Server) Logf(f string, args ...interface{})
- func (s *Server) Serve() (err error)
- func (s *Server) SetAPI(api *operations.LunaformAPI)
- func (s *Server) SetHandler(handler http.Handler)
- func (s *Server) Shutdown() error
- func (s *Server) TLSListener() (net.Listener, error)
- func (s *Server) UnixListener() (net.Listener, error)
Constants ¶
const ( TF_STACK_STATUS_WAITING_FOR_DEPLOYMENT = "waiting_for_deployment" TF_STACK_STATUS_DEPLOY_FAIL = "deployment_failed" TF_STACK_STATUS_DEPLOY_SUCEED = "deployment_succeeded" TF_DEPLOYMENT_STATUS_PENDING = "pending" TF_DEPLOYMENT_STATUS_DEPLOYING = "deploying" TF_DEPLOYMENT_STATUS_SUCCESS = "finished" TF_DEPLOYMENT_STATUS_FAIL = "failed" )
const ( DB_TABLE_TF_WORKSPACE = database.DBTableRecordType("lf-workspace") DB_TABLE_TF_MODULE = database.DBTableRecordType("lf-module") DB_TABLE_TF_STACK = database.DBTableRecordType("lf-stack") DB_TABLE_TF_STATEBACKEND = database.DBTableRecordType("lf-statebackend") DB_TABLE_TF_PROVIDER = database.DBTableRecordType("lf-provider") DB_TABLE_TF_PROVIDER_CONFIGURATION = database.DBTableRecordType("lf-provider-configuration") DB_TABLE_AUTH_USER = database.DBTableRecordType("lf-auth-user") )
const (
DB_TABLE_AUTH_APIKEY = "lf-auth-apikey"
)
Variables ¶
var ( // SwaggerJSON embedded version of the swagger document used at generation time SwaggerJSON json.RawMessage // FlatSwaggerJSON embedded flattened version of the swagger document used at generation time FlatSwaggerJSON json.RawMessage )
var Debug = logger.DebugEnabled()
Debug when true turns on verbose logging
var Logger logger.Logger = logger.StandardLogger{}
Functions ¶
func CreateTfModuleController ¶
func CreateTfModuleController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.CreateModuleHandlerFunc
func CreateTfProviderConfigurationController ¶
func CreateTfProviderConfigurationController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.CreateProviderConfigurationHandlerFunc
func CreateTfProviderController ¶
func CreateTfProviderController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.CreateProviderHandlerFunc
func CreateTfStackController ¶
func CreateTfStackController( idp identity.Provider, ch *helpers.ContextHelper, db database.Database, workerPool *workers.TfAgentPool, ) operations.DeployStackHandlerFunc
func CreateTfStateBackendsController ¶
func CreateTfStateBackendsController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.CreateStateBackendHandlerFunc
func CreateTfWorkspaceController ¶
func CreateTfWorkspaceController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.CreateWorkspaceHandlerFunc
func DeleteTfModuleController ¶
func DeleteTfModuleController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.DeleteModuleHandlerFunc
func DeleteTfProviderConfigurationController ¶
func DeleteTfProviderConfigurationController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.DeleteProviderConfigurationHandlerFunc
func DeleteTfProviderController ¶
func DeleteTfProviderController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.DeleteProviderHandlerFunc
func DeleteTfStackController ¶
func DeleteTfStackController( idp identity.Provider, ch *helpers.ContextHelper, db database.Database, workerPool *workers.TfAgentPool, ) operations.UndeployStackHandlerFunc
func GetTfModuleController ¶
func GetTfModuleController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.GetModuleHandlerFunc
func GetTfProviderConfigurationController ¶
func GetTfProviderConfigurationController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.GetProviderConfigurationHandlerFunc
func GetTfProviderController ¶
func GetTfProviderController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.GetProviderHandlerFunc
func GetTfStackController ¶
func GetTfStackController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.GetStackHandlerFunc
func GetTfWorkspaceController ¶
func GetTfWorkspaceController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.DescribeWorkspaceHandlerFunc
func ListResourceGroupsController ¶
func ListResourceGroupsController(ch *helpers.ContextHelper) resources.ListResourceGroupsHandlerFunc
ListResourceGroupsController provides a list of resource groups. This is an exploratory read-only endpoint.
func ListResourcesController ¶
func ListResourcesController(ch *helpers.ContextHelper) resources.ListResourcesHandlerFunc
ListResourcesController provides a list of resources under the identity tag. This is an exploratory read-only endpoint.
func ListTfModulesController ¶
func ListTfModulesController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.ListModulesHandlerFunc
ListTfModulesController provides a list of modules
func ListTfProviderConfigurationController ¶
func ListTfProviderConfigurationController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.ListProviderConfigurationsHandlerFunc
func ListTfProvidersController ¶
func ListTfProvidersController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operation.ListProvidersHandlerFunc
func ListTfStackDeploymentsController ¶
func ListTfStackDeploymentsController( idp identity.Provider, ch *helpers.ContextHelper, db database.Database, workerPool *workers.TfAgentPool, ) operations.ListDeploymentsHandlerFunc
func ListTfStacksController ¶
func ListTfStacksController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.ListStacksHandlerFunc
func ListTfStateBackendsController ¶
func ListTfStateBackendsController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.ListStateBackendsHandlerFunc
func ListTfWorkspacesController ¶
func ListTfWorkspacesController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.ListWorkspacesHandlerFunc
func NewTfDeployment ¶
func NewTfDeployment(workspace string) *models.ResourceTfDeployment
func UpdateTfStateBackendsController ¶
func UpdateTfStateBackendsController(idp identity.Provider, ch *helpers.ContextHelper, db database.Database) operations.UpdateStateBackendHandlerFunc
Types ¶
type CfgBackend ¶
type CfgBackend struct {
DatabaseType string `json:"database_type"`
Database interface{} `json:"database"`
IdentityType string `json:"identity_type"`
Identity interface{} `json:"identity"`
}
CfgBackend describes how the server can load the backend database and the primary managed Identity Provider
type CfgIdentity ¶
type CfgIdentity struct {
Defaults []CfgIdentityDefault `json:"defaults"`
}
CfgIdentity describes the structure of options for Identity Providers
type CfgIdentityDefault ¶
CfgIdentityDefault allows the setting of a username and password for a default user. This value will only be used when initialising a new managed Identity Provider, and will be ignored on subsequent boots. @TODO Restrict this to only be for the `admin` user @TODO Allow a force cli option when booting to reset the password
type CommonServerErrorResponder ¶
type CommonServerErrorResponder struct {
Payload *models.ServerError
// contains filtered or unexported fields
}
func NewServerErrorResponse ¶
func NewServerErrorResponse(code int, errorString string) (r *CommonServerErrorResponder)
func (*CommonServerErrorResponder) Error ¶
func (cser *CommonServerErrorResponder) Error()
func (*CommonServerErrorResponder) WriteResponse ¶
func (cser *CommonServerErrorResponder) WriteResponse(rw http.ResponseWriter, producer runtime.Producer)
WriteResponse to the client
type ConfigFileFlags ¶
type ConfigFileFlags struct {
ConfigFile string `short:"c" long:"config" description:"Path to configuration on disk"`
Version bool `short:"V" long:"version" description:"Print lunarform version and quit"`
AdminApiKey string `long:"api-key" description:"Override the admin user's api key.'"`
}
ConfigFileFlags for loading settings for the server
type Configuration ¶
type Configuration struct {
Identity CfgIdentity `json:"identity"`
Backend CfgBackend `json:"backend"`
}
Configuration describes the structure of options in the server config file
type Server ¶
type Server struct {
EnabledListeners []string `long:"scheme" description:"the listeners to enable, this can be repeated and defaults to the schemes in the swagger spec"`
CleanupTimeout time.Duration `long:"cleanup-timeout" description:"grace period for which to wait before shutting down the server" default:"10s"`
MaxHeaderSize flagext.ByteSize `` /* 231-byte string literal not displayed */
SocketPath flags.Filename `long:"socket-path" description:"the unix socket to listen on" default:"/var/run/lunaform.sock"`
Host string `long:"host" description:"the IP to listen on" default:"localhost" env:"HOST"`
Port int `long:"port" description:"the port to listen on for insecure connections, defaults to a random value" env:"PORT"`
ListenLimit int `long:"listen-limit" description:"limit the number of outstanding requests"`
KeepAlive time.Duration `` /* 169-byte string literal not displayed */
ReadTimeout time.Duration `long:"read-timeout" description:"maximum duration before timing out read of the request" default:"30s"`
WriteTimeout time.Duration `long:"write-timeout" description:"maximum duration before timing out write of the response" default:"60s"`
TLSHost string `long:"tls-host" description:"the IP to listen on for tls, when not specified it's the same as --host" env:"TLS_HOST"`
TLSPort int `long:"tls-port" description:"the port to listen on for secure connections, defaults to a random value" env:"TLS_PORT"`
TLSCertificate flags.Filename `long:"tls-certificate" description:"the certificate to use for secure connections" env:"TLS_CERTIFICATE"`
TLSCertificateKey flags.Filename `long:"tls-key" description:"the private key to use for secure conections" env:"TLS_PRIVATE_KEY"`
TLSCACertificate flags.Filename `long:"tls-ca" description:"the certificate authority file to be used with mutual tls auth" env:"TLS_CA_CERTIFICATE"`
TLSListenLimit int `long:"tls-listen-limit" description:"limit the number of outstanding requests"`
TLSKeepAlive time.Duration `` /* 160-byte string literal not displayed */
TLSReadTimeout time.Duration `long:"tls-read-timeout" description:"maximum duration before timing out read of the request"`
TLSWriteTimeout time.Duration `long:"tls-write-timeout" description:"maximum duration before timing out write of the response"`
// contains filtered or unexported fields
}
Server for the lunaform API
func NewServer ¶
func NewServer(api *operations.LunaformAPI) *Server
NewServer creates a new api lunaform server but does not configure it
func (*Server) ConfigureAPI ¶
func (s *Server) ConfigureAPI()
ConfigureAPI configures the API and handlers.
func (*Server) ConfigureFlags ¶
func (s *Server) ConfigureFlags()
ConfigureFlags configures the additional flags defined by the handlers. Needs to be called before the parser.Parse
func (*Server) Fatalf ¶
Fatalf logs message either via defined user logger or via system one if no user logger is defined. Exits with non-zero status after printing
func (*Server) GetHandler ¶
GetHandler returns a handler useful for testing
func (*Server) HTTPListener ¶
HTTPListener returns the http listener
func (*Server) Logf ¶
Logf logs message either via defined user logger or via system one if no user logger is defined.
func (*Server) SetAPI ¶
func (s *Server) SetAPI(api *operations.LunaformAPI)
SetAPI configures the server with the specified API. Needs to be called before Serve
func (*Server) SetHandler ¶
SetHandler allows for setting a http handler on this server
func (*Server) TLSListener ¶
TLSListener returns the https listener
Source Files
¶
- config.go
- configure_lunaform.go
- controller_resources.go
- controller_resources_list.go
- controller_resources_list_groups.go
- controller_tf_module_create.go
- controller_tf_module_delete.go
- controller_tf_module_get.go
- controller_tf_modules_list.go
- controller_tf_provider_configuration_create.go
- controller_tf_provider_configuration_delete.go
- controller_tf_provider_configuration_get.go
- controller_tf_provider_configuration_list.go
- controller_tf_provider_create.go
- controller_tf_provider_delete.go
- controller_tf_provider_get.go
- controller_tf_provider_list.go
- controller_tf_stack_deploy.go
- controller_tf_stack_undeploy.go
- controller_tf_stacks.go
- controller_tf_statebackends.go
- controller_tf_workspaces.go
- db.go
- doc-intro.go
- doc.go
- embedded_spec.go
- error_responses.go
- logging.go
- models.go
- server.go