Package publish2fs publish assets resource feeds as FireStore documents

It manages creation, updates and delete.

Triggered by

Resource or IAM policies assets feed messages in PubSub topics.


- one per asset type to be persisted in FireStore.

- ussually 3: organizations, folders and projects.


FireStore documents created, updated, deleted.


One-one, one feed message - one operation performed in FireStore

Automatic retrying


Implementation example

package p
import (

var global publish2fs.Global
var ctx = context.Background()

// EntryPoint is the function to be executed for each cloud function occurence
func EntryPoint(ctxEvent context.Context, PubSubMessage gps.PubSubMessage) error {
    return publish2fs.EntryPoint(ctxEvent, PubSubMessage, &global)

func init() {
    publish2fs.Initialize(ctx, &global)


- It replaces / by \ in asset names not to confilct with Firestore collection/document structure.

- Cloud FireStore share the same project's default location than Cloud Storage and App Engine.




This section is empty.


This section is empty.


func EntryPoint

func EntryPoint(ctxEvent context.Context, PubSubMessage gps.PubSubMessage, global *Global) error

    EntryPoint is the function to be executed for each cloud function occurence

    func Initialize

    func Initialize(ctx context.Context, global *Global) (err error)

      Initialize is to be executed in the init() function of the cloud function to optimize the cold start


      type Global

      type Global struct {
      	PubSubID string
      	// contains filtered or unexported fields

        Global structure for global variables to optimize the cloud function performances

        type InstanceDeployment

        type InstanceDeployment struct {
        	DumpTimestamp time.Time `yaml:"dumpTimestamp"`
        	Core          *deploy.Core
        	Settings      struct {
        		Service struct {
        			GSU gsu.Parameters
        			IAM iamgt.Parameters
        			GCB gcb.Parameters
        			GCF gcf.Parameters
        		Instance struct {
        			GCF gcf.Event

          InstanceDeployment settings and artifacts structure

          func NewInstanceDeployment

          func NewInstanceDeployment() *InstanceDeployment

            NewInstanceDeployment create deployment structure with default settings set

            func (*InstanceDeployment) Deploy

            func (instanceDeployment *InstanceDeployment) Deploy() (err error)

              Deploy a service instance

              func (*InstanceDeployment) ReadValidate

              func (instanceDeployment *InstanceDeployment) ReadValidate() (err error)

                ReadValidate reads and validates service and instance settings

                func (*InstanceDeployment) Situate

                func (instanceDeployment *InstanceDeployment) Situate() (err error)

                  Situate complement settings taking in account the situation for service and instance settings