Index | Files

package gce

import ""

Package gce provides tools to deploy Perkeep on Google Compute Engine.


Package Files

deploy.go handler.go


const (
    DefaultInstanceName = "camlistore-server"
    DefaultMachineType  = "g1-small"
    DefaultRegion       = "us-central1"

    ConsoleURL = ""


var (
    // Verbose enables more info to be printed.
    Verbose bool

func LooksLikeRegion Uses

func LooksLikeRegion(s string) bool

LooksLikeRegion reports whether s looks like a GCE region.

func NewOAuthConfig Uses

func NewOAuthConfig(clientID, clientSecret string) *oauth2.Config

NewOAuthConfig returns an OAuth configuration template.

func ZonesOfRegion Uses

func ZonesOfRegion(hc *http.Client, project, region string) (zones []string, err error)

TODO(bradfitz,mpl): move this to

type Config Uses

type Config struct {
    ClientID       string `json:"clientID"`       // handler's credentials for OAuth. Required.
    ClientSecret   string `json:"clientSecret"`   // handler's credentials for OAuth. Required.
    Project        string `json:"project"`        // any Google Cloud project we can query to get the valid Google Cloud zones. Optional. Set from metadata on GCE.
    ServiceAccount string `json:"serviceAccount"` // JSON file with credentials to Project. Optional. Unused on GCE.
    DataDir        string `json:"dataDir"`        // where to store the instances configurations and states. Optional.

Config is the set of parameters to initialize the DeployHandler.

type DeployHandler Uses

type DeployHandler struct {
    // contains filtered or unexported fields

DeployHandler serves a wizard that helps with the deployment of Perkeep on Google Compute Engine. It must be initialized with NewDeployHandler.

func NewDeployHandler Uses

func NewDeployHandler(host, prefix string) (*DeployHandler, error)

NewDeployHandler initializes a DeployHandler that serves at https://host/prefix/ and returns it. A Google account client ID should be set in CAMLI_GCE_CLIENTID with its corresponding client secret in CAMLI_GCE_CLIENTSECRET.

func NewDeployHandlerFromConfig Uses

func NewDeployHandlerFromConfig(host, prefix string, cfg *Config) (*DeployHandler, error)

NewDeployHandlerFromConfig initializes a DeployHandler from cfg. Host and prefix have the same meaning as for NewDeployHandler. cfg should not be nil.

func (*DeployHandler) AddTemplateTheme Uses

func (h *DeployHandler) AddTemplateTheme(text string) error

AddTemplateTheme allows to enhance the aesthetics of the default template. To that effect, text can provide the template definitions for "header", "banner", "toplinks", and "footer".

func (*DeployHandler) ServeHTTP Uses

func (h *DeployHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*DeployHandler) SetLogger Uses

func (h *DeployHandler) SetLogger(lg *log.Logger)

func (*DeployHandler) SetScheme Uses

func (h *DeployHandler) SetScheme(scheme string)

type Deployer Uses

type Deployer struct {
    // Client is an OAuth2 client, authenticated for working with
    // the user's Google Cloud resources.
    Client *http.Client

    Conf *InstanceConf

    *log.Logger // Cannot be nil.
    // contains filtered or unexported fields

Deployer creates and starts an instance such as defined in Conf.

func (*Deployer) Create Uses

func (d *Deployer) Create(ctx context.Context) (*compute.Instance, error)

Create sets up and starts a Google Compute Engine instance as defined in d.Conf. It creates the necessary Google Storage buckets beforehand.

func (*Deployer) CreateProject Uses

func (d *Deployer) CreateProject(ctx context.Context) (string, error)

CreateProject creates a new Google Cloud Project. It returns the project ID, which is a random number in (0,1e10), prefixed with "camlistore-launcher-".

func (*Deployer) Get Uses

func (d *Deployer) Get() (*compute.Instance, error)

Get returns the Instance corresponding to the Project, Zone, and Name defined in the Deployer's Conf.

type InstanceConf Uses

type InstanceConf struct {
    Name          string // Name given to the virtual machine instance.
    Project       string // Google project ID where the instance is created.
    CreateProject bool   // CreateProject defines whether to first create project.
    Machine       string // Machine type.
    Zone          string // GCE zone; see
    Hostname      string // Fully qualified domain name.

    Ctime time.Time // Timestamp for this configuration.

    WIP bool // Whether to use the perkeepd-WORKINPROGRESS.tar.gz tarball instead of the "production" one
    // contains filtered or unexported fields

InstanceConf is the configuration for the Google Compute Engine instance that will be deployed.

type TemplateData Uses

type TemplateData struct {
    Title             string
    Help              map[string]template.HTML // help bits within the form.
    Hints             []string                 // helping hints printed in case of an error.
    Err               error
    Prefix            string        // handler prefix.
    InstanceKey       string        // instance creation identifier, for the JS code to regularly poll for progress.
    PiggyGIF          string        // URI to the piggy gif for progress animation.
    Conf              *InstanceConf // Configuration requested by the user
    InstanceIP        string        `json:",omitempty"` // instance IP address that we display after successful creation.
    InstanceHostname  string        `json:",omitempty"`
    ProjectConsoleURL string
    ProjectID         string // set by us when we've just created a project on the behalf of the user
    ZoneValues        []string
    MachineValues     []string
    CamliVersion      string // git revision found in

    // Unused stuff, but needed by page.html. See TODO above,
    // before AddTemplateTheme.
    GoImportDomain   string
    GoImportUpstream string

TemplateData is the data passed for templates of tplHTML.

Package gce imports 42 packages (graph) and is imported by 1 packages. Updated 2019-06-24. Refresh now. Tools for package owners.