producer

package
v0.0.0-...-c2b5c71 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 12, 2023 License: Apache-2.0 Imports: 26 Imported by: 0

README

Git Partition Sync - Producer

Uploads an encrypted archive of latest versions of target GitLab projects to s3 bucket.
This works in tandem with git-partition-sync-consumer to sync GitLab instances in isolated environments. Utilizes the AWS SDK to communicate to the desired s3 buckets.

age x25519 format keys are utilized.

gitlab-sync-diagram

Uploaded s3 Object Key Format

Uploaded keys are base64 encoded. Decoded, the key is a json string with following structure:

{
  "group":string,
  "project_name":string,
  "commit_sha":string,
  "local_branch":string,
  "remote_branch":string
}

Note: the values within each json object will mirror values for each destination defined within config file (exluding commit_sha which is the latest commit pulled from source)

Documentation

Overview

Package producer contains the producer integration for the git partition sync

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type GetGitlabSyncAppsApps_v1App_v1

type GetGitlabSyncAppsApps_v1App_v1 struct {
	CodeComponents []GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1 `json:"codeComponents"`
}

GetGitlabSyncAppsApps_v1App_v1 includes the requested fields of the GraphQL type App_v1.

func (*GetGitlabSyncAppsApps_v1App_v1) GetCodeComponents

GetCodeComponents returns GetGitlabSyncAppsApps_v1App_v1.CodeComponents, and is useful for accessing the field via an interface.

type GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1

type GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1 struct {
	GitlabSync GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1 `json:"gitlabSync"`
}

GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1 includes the requested fields of the GraphQL type AppCodeComponents_v1.

func (*GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1) GetGitlabSync

GetGitlabSync returns GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1.GitlabSync, and is useful for accessing the field via an interface.

type GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1

type GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1 struct {
	SourceProject      GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1SourceProjectCodeComponentGitlabSyncProject_v1      `json:"sourceProject"`
	DestinationProject GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1DestinationProjectCodeComponentGitlabSyncProject_v1 `json:"destinationProject"`
}

GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1 includes the requested fields of the GraphQL type CodeComponentGitlabSync_v1.

func (*GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1) GetDestinationProject

GetDestinationProject returns GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1.DestinationProject, and is useful for accessing the field via an interface.

func (*GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1) GetSourceProject

GetSourceProject returns GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1.SourceProject, and is useful for accessing the field via an interface.

type GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1DestinationProjectCodeComponentGitlabSyncProject_v1

type GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1DestinationProjectCodeComponentGitlabSyncProject_v1 struct {
	Name   string `json:"name"`
	Group  string `json:"group"`
	Branch string `json:"branch"`
}

GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1DestinationProjectCodeComponentGitlabSyncProject_v1 includes the requested fields of the GraphQL type CodeComponentGitlabSyncProject_v1.

func (*GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1DestinationProjectCodeComponentGitlabSyncProject_v1) GetBranch

GetBranch returns GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1DestinationProjectCodeComponentGitlabSyncProject_v1.Branch, and is useful for accessing the field via an interface.

func (*GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1DestinationProjectCodeComponentGitlabSyncProject_v1) GetGroup

GetGroup returns GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1DestinationProjectCodeComponentGitlabSyncProject_v1.Group, and is useful for accessing the field via an interface.

func (*GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1DestinationProjectCodeComponentGitlabSyncProject_v1) GetName

GetName returns GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1DestinationProjectCodeComponentGitlabSyncProject_v1.Name, and is useful for accessing the field via an interface.

type GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1SourceProjectCodeComponentGitlabSyncProject_v1

type GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1SourceProjectCodeComponentGitlabSyncProject_v1 struct {
	Name   string `json:"name"`
	Group  string `json:"group"`
	Branch string `json:"branch"`
}

GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1SourceProjectCodeComponentGitlabSyncProject_v1 includes the requested fields of the GraphQL type CodeComponentGitlabSyncProject_v1.

func (*GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1SourceProjectCodeComponentGitlabSyncProject_v1) GetBranch

GetBranch returns GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1SourceProjectCodeComponentGitlabSyncProject_v1.Branch, and is useful for accessing the field via an interface.

func (*GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1SourceProjectCodeComponentGitlabSyncProject_v1) GetGroup

GetGroup returns GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1SourceProjectCodeComponentGitlabSyncProject_v1.Group, and is useful for accessing the field via an interface.

func (*GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1SourceProjectCodeComponentGitlabSyncProject_v1) GetName

GetName returns GetGitlabSyncAppsApps_v1App_v1CodeComponentsAppCodeComponents_v1GitlabSyncCodeComponentGitlabSync_v1SourceProjectCodeComponentGitlabSyncProject_v1.Name, and is useful for accessing the field via an interface.

type GetGitlabSyncAppsResponse

type GetGitlabSyncAppsResponse struct {
	Apps_v1 []GetGitlabSyncAppsApps_v1App_v1 `json:"apps_v1"`
}

GetGitlabSyncAppsResponse is returned by GetGitlabSyncApps on success.

func GetGitlabSyncApps

func GetGitlabSyncApps(
	ctx context.Context,
) (*GetGitlabSyncAppsResponse, error)

func (*GetGitlabSyncAppsResponse) GetApps_v1

GetApps_v1 returns GetGitlabSyncAppsResponse.Apps_v1, and is useful for accessing the field via an interface.

type GetSaasResourceTemplateRefsResponse

type GetSaasResourceTemplateRefsResponse struct {
	Saas_files []GetSaasResourceTemplateRefsSaas_filesSaasFile_v2 `json:"saas_files"`
}

GetSaasResourceTemplateRefsResponse is returned by GetSaasResourceTemplateRefs on success.

func GetSaasResourceTemplateRefs

func GetSaasResourceTemplateRefs(
	ctx context.Context,
) (*GetSaasResourceTemplateRefsResponse, error)

func (*GetSaasResourceTemplateRefsResponse) GetSaas_files

GetSaas_files returns GetSaasResourceTemplateRefsResponse.Saas_files, and is useful for accessing the field via an interface.

type GetSaasResourceTemplateRefsSaas_filesSaasFile_v2

type GetSaasResourceTemplateRefsSaas_filesSaasFile_v2 struct {
	Name              string                                                                                     `json:"name"`
	ResourceTemplates []GetSaasResourceTemplateRefsSaas_filesSaasFile_v2ResourceTemplatesSaasResourceTemplate_v2 `json:"resourceTemplates"`
}

GetSaasResourceTemplateRefsSaas_filesSaasFile_v2 includes the requested fields of the GraphQL type SaasFile_v2.

func (*GetSaasResourceTemplateRefsSaas_filesSaasFile_v2) GetName

GetName returns GetSaasResourceTemplateRefsSaas_filesSaasFile_v2.Name, and is useful for accessing the field via an interface.

func (*GetSaasResourceTemplateRefsSaas_filesSaasFile_v2) GetResourceTemplates

GetResourceTemplates returns GetSaasResourceTemplateRefsSaas_filesSaasFile_v2.ResourceTemplates, and is useful for accessing the field via an interface.

type GetSaasResourceTemplateRefsSaas_filesSaasFile_v2ResourceTemplatesSaasResourceTemplate_v2

type GetSaasResourceTemplateRefsSaas_filesSaasFile_v2ResourceTemplatesSaasResourceTemplate_v2 struct {
	Targets []GetSaasResourceTemplateRefsSaas_filesSaasFile_v2ResourceTemplatesSaasResourceTemplate_v2TargetsSaasResourceTemplateTarget_v2 `json:"targets"`
}

GetSaasResourceTemplateRefsSaas_filesSaasFile_v2ResourceTemplatesSaasResourceTemplate_v2 includes the requested fields of the GraphQL type SaasResourceTemplate_v2.

func (*GetSaasResourceTemplateRefsSaas_filesSaasFile_v2ResourceTemplatesSaasResourceTemplate_v2) GetTargets

GetTargets returns GetSaasResourceTemplateRefsSaas_filesSaasFile_v2ResourceTemplatesSaasResourceTemplate_v2.Targets, and is useful for accessing the field via an interface.

type GetSaasResourceTemplateRefsSaas_filesSaasFile_v2ResourceTemplatesSaasResourceTemplate_v2TargetsSaasResourceTemplateTarget_v2

type GetSaasResourceTemplateRefsSaas_filesSaasFile_v2ResourceTemplatesSaasResourceTemplate_v2TargetsSaasResourceTemplateTarget_v2 struct {
	Ref string `json:"ref"`
}

GetSaasResourceTemplateRefsSaas_filesSaasFile_v2ResourceTemplatesSaasResourceTemplate_v2TargetsSaasResourceTemplateTarget_v2 includes the requested fields of the GraphQL type SaasResourceTemplateTarget_v2.

func (*GetSaasResourceTemplateRefsSaas_filesSaasFile_v2ResourceTemplatesSaasResourceTemplate_v2TargetsSaasResourceTemplateTarget_v2) GetRef

GetRef returns GetSaasResourceTemplateRefsSaas_filesSaasFile_v2ResourceTemplatesSaasResourceTemplate_v2TargetsSaasResourceTemplateTarget_v2.Ref, and is useful for accessing the field via an interface.

type GitPartitionSyncProducer

type GitPartitionSyncProducer struct {
	// contains filtered or unexported fields
}

GitPartitionSyncProducer is the producer integration for the git partition sync

func NewGitPartitionSyncProducer

func NewGitPartitionSyncProducer() *GitPartitionSyncProducer

NewGitPartitionSyncProducer returns a new GitPartitionSyncProducer

func (*GitPartitionSyncProducer) CurrentState

CurrentState gets all the currently synced repos from s3 and adds them as currentState to the ResourceInventory

func (*GitPartitionSyncProducer) DesiredState

DesiredState gets the current commitID from Gitlab and adds it to the ResourceInventory

func (*GitPartitionSyncProducer) LogDiff

LogDiff logs the diff between the current and desired state

func (*GitPartitionSyncProducer) Reconcile

Reconcile syncs the repositories to S3 that have changed since the last run

func (*GitPartitionSyncProducer) Setup

Setup required directories and clients for the producer integration

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL