Skip to content

Commit

Permalink
Adjusting fetch on rsync config
Browse files Browse the repository at this point in the history
  • Loading branch information
Tim Clifford committed Jan 5, 2021
1 parent 2fa5f08 commit 3fcddda
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 26 deletions.
4 changes: 2 additions & 2 deletions cmd/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ type Configuration struct {
Version string `json:"version"`
LagoonSyncPath string `json:"lagoon-sync-path"`
EnvPrerequisite []prerequisite.GatheredPrerequisite `json:"env-config"`
RysncPrequisite []prerequisite.GatheredPrerequisite `json:"rsync-config"`
RysncPrerequisite []prerequisite.GatheredPrerequisite `json:"rsync-config"`
OtherPrerequisite []prerequisite.GatheredPrerequisite `json:"other-config"`
SyncConfigFiles SyncConfigFiles `json:"sync-config-files"`
}
Expand Down Expand Up @@ -81,7 +81,7 @@ func PrintConfigOut() {
config := Configuration{
Version: rootCmd.Version,
LagoonSyncPath: lagoonSyncPath,
RysncPrequisite: rsyncPrerequisites,
RysncPrerequisite: rsyncPrerequisites,
EnvPrerequisite: envVarPrerequisites,
OtherPrerequisite: otherPrerequisites,
SyncConfigFiles: SyncConfigFiles{
Expand Down
6 changes: 3 additions & 3 deletions prerequisite/rsyncprerequisite.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ type rsyncPrerequisite struct {
RsyncPath string
}

func (c *rsyncPrerequisite) initialise() error {
func (p *rsyncPrerequisite) initialise() error {
return nil
}

Expand All @@ -22,7 +22,7 @@ func (p *rsyncPrerequisite) GetName() string {
func (p *rsyncPrerequisite) GetValue() bool {
var stdout bytes.Buffer
var stderr bytes.Buffer
cmd := exec.Command("bash", "-c", "which rsync")
cmd := exec.Command("bash", "-c", "which rsync || which /tmp/*rsync*")
cmd.Stdout = &stdout
cmd.Stderr = &stderr
err := cmd.Run()
Expand All @@ -31,7 +31,7 @@ func (p *rsyncPrerequisite) GetValue() bool {
}

p.RsyncPath = strings.TrimSuffix(stdout.String(), "\n")
//log.Println("Found rsync path: " + p.RsyncPath)
log.Println("Found rsync path: " + p.RsyncPath)

return true
}
Expand Down
8 changes: 4 additions & 4 deletions synchers/syncdefs.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,10 @@ type SyncherConfigRoot struct {
}

type PreRequisiteResponse struct {
Version string `json:"version"`
LagoonSyncPath string `json:"lagoon-sync-path"`
EnvPrerequisite []prerequisite.GatheredPrerequisite `json:"env-config"`
RysncPrequisite []prerequisite.GatheredPrerequisite `json:"rsync-config"`
Version string `json:"version"`
LagoonSyncPath string `json:"lagoon-sync-path"`
EnvPrerequisite []prerequisite.GatheredPrerequisite `json:"env-config"`
RysncPrerequisite []prerequisite.GatheredPrerequisite `json:"rsync-config"`
}

// takes interface, marshals back to []byte, then unmarshals to desired struct
Expand Down
63 changes: 46 additions & 17 deletions synchers/syncutils.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ func UnmarshallLagoonYamlToLagoonSyncStructure(data []byte) (SyncherConfigRoot,
func RunSyncProcess(sourceEnvironment Environment, targetEnvironment Environment, lagoonSyncer Syncer, dryRun bool, verboseSSH bool) error {
var err error
sourceRsyncPath, err := RunPrerequisiteCommand(sourceEnvironment, lagoonSyncer, dryRun, verboseSSH)
sourceEnvironment.RsyncPath = sourceRsyncPath

// fmt.Printf(sourceEnvironment.RsyncPath)
// os.Exit(1)

if err != nil {
_ = PrerequisiteCleanUp(sourceEnvironment, sourceRsyncPath, dryRun, verboseSSH)
return err
Expand All @@ -46,6 +51,7 @@ func RunSyncProcess(sourceEnvironment Environment, targetEnvironment Environment
}

targetRsyncPath, err := RunPrerequisiteCommand(targetEnvironment, lagoonSyncer, dryRun, verboseSSH)
targetEnvironment.RsyncPath = targetRsyncPath
if err != nil {
_ = PrerequisiteCleanUp(targetEnvironment, targetRsyncPath, dryRun, verboseSSH)
return err
Expand Down Expand Up @@ -94,10 +100,10 @@ func RunPrerequisiteCommand(environment Environment, syncer Syncer, dryRun bool,
json.Unmarshal([]byte(responseJson), &data)

// check if environment has rsync
if data.RysncPrequisite != nil {
environment.RsyncAvailable = true
for _, c := range data.RysncPrequisite {
if data.RysncPrerequisite != nil {
for _, c := range data.RysncPrerequisite {
if c.Value != "" {
environment.RsyncAvailable = true
environment.RsyncPath = c.Value
}
}
Expand All @@ -119,9 +125,22 @@ func RunPrerequisiteCommand(environment Environment, syncer Syncer, dryRun bool,
log.Printf("Rsync path: %s", rsyncPath)
return rsyncPath, nil
}
} else {
err, responseJson, errstring := Shellout(execString)
if err != nil {
fmt.Println(errstring)
return "", err
}

data := &PreRequisiteResponse{}
json.Unmarshal([]byte(responseJson), &data)

if data.RysncPrerequisite != nil {
log.Printf("Config response: %v", data)
}
}

return "", nil
return "rsync", nil
}

func SyncRunSourceCommand(remoteEnvironment Environment, syncer Syncer, dryRun bool, verboseSSH bool) error {
Expand Down Expand Up @@ -218,7 +237,8 @@ func SyncRunTransfer(sourceEnvironment Environment, targetEnvironment Environmen
verboseSSHArgument = "-v"
}

execString := fmt.Sprintf("rsync -e \"ssh %v -o LogLevel=ERROR -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 32222 -l %v ssh.lagoon.amazeeio.cloud service=%v\" %v -a %s %s",
execString := fmt.Sprintf("%v -e \"ssh %v -o LogLevel=ERROR -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 32222 -l %v ssh.lagoon.amazeeio.cloud service=%v\" %v -a %s %s",
sourceEnvironment.RsyncPath,
verboseSSHArgument,
rsyncRemoteSystemUsername,
lagoonRsyncService,
Expand Down Expand Up @@ -380,6 +400,8 @@ func createRsync(environment Environment, syncer Syncer, lagoonVersion string) (
return "Local environment doesn't have rsync", nil
}

log.Printf("Downloading rsync on %v", environment.EnvironmentName)

environmentName := syncer.GetTransferResource(environment).Name
if syncer.GetTransferResource(environment).IsDirectory == true {
environmentName += "/"
Expand All @@ -398,23 +420,30 @@ func createRsync(environment Environment, syncer Syncer, lagoonVersion string) (
log.Println(errstring)
return "", err
}
environment.RsyncPath = cpRsyncPath

lagoonRsyncService := "cli"
rsyncRemoteSystemUsername := ""
var execString string
command := fmt.Sprintf("'cat > %v && chmod +x %v' < %s",
rsyncDestinationPath,
rsyncDestinationPath,
rsyncLocalResource,
)

if environment.EnvironmentName != LOCAL_ENVIRONMENT_NAME {
environmentName = fmt.Sprintf(":%s", environmentName)
rsyncRemoteSystemUsername = environment.getOpenshiftProjectName()
if environment.EnvironmentName == LOCAL_ENVIRONMENT_NAME {
execString = command
} else {
serviceArgument := ""
if environment.ServiceName != "" {
lagoonRsyncService = environment.ServiceName
if environment.ServiceName == "mongodb" {
shellToUse = "sh"
}
serviceArgument = fmt.Sprintf("service=%v", environment.ServiceName)

}
}

execString := fmt.Sprintf("rsync -a %s -e \"ssh -o LogLevel=ERROR -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 32222 -l %v ssh.lagoon.amazeeio.cloud service=%v\" :%s",
rsyncLocalResource,
rsyncRemoteSystemUsername,
lagoonRsyncService,
rsyncDestinationPath)
execString = fmt.Sprintf("ssh -t -o \"UserKnownHostsFile=/dev/null\" -o \"StrictHostKeyChecking=no\" -p 32222 %[email protected] %v %v",
environment.getOpenshiftProjectName(), serviceArgument, command)
}

log.Printf("Running the following for:- %s", execString)

Expand Down

0 comments on commit 3fcddda

Please sign in to comment.