Dinesh Garg dabca52d50 Explanation on airship config file
This fix closes issue #74 of treasuremap https://github.com/airshipit/treasuremap/issues/74

Closes: #74
Change-Id: I439db7270ecad17435f18b8eb5f8906d7c0325de
2021-10-14 11:12:57 +00:00

127 lines
4.7 KiB
Go

/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package document
import (
"fmt"
"path/filepath"
"github.com/spf13/cobra"
"opendev.org/airship/airshipctl/pkg/config"
"opendev.org/airship/airshipctl/pkg/document/pull"
)
const (
long = `
The remote manifests repositories as well as the target path where
the repositories will be cloned are defined in the airship config file.
By default the airship config file is initialized with the
repository "https://opendev.org/airship/treasuremap" as a source of
manifests and with the manifests target path "%s".
`
pullExample = `
Pull manifests from remote repos
# airshipctl document pull
For the below sample airship config file, it will pull from remote repository where URL mentioned
to the target location /home/airship with manifests->treasuremap->repositories->airshipctl->checkout
options branch, commitHash & tag mentioned in manifest section.
In the URL section, instead of a remote repository location we can also mention already checkout directory,
in this case we need not use document pull otherwise, any temporary changes will be overwritten.
>>>>>>Sample Config File<<<<<<<<<
cat ~/.airship/config
apiVersion: airshipit.org/v1alpha1
contexts:
ephemeral-cluster:
managementConfiguration: treasuremap_config
manifest: treasuremap
target-cluster:
managementConfiguration: treasuremap_config
manifest: treasuremap
currentContext: ephemeral-cluster
kind: Config
managementConfiguration:
treasuremap_config:
insecure: true
systemActionRetries: 30
systemRebootDelay: 30
type: redfish
manifests:
treasuremap:
inventoryRepositoryName: primary
metadataPath: manifests/site/eric-test-site/metadata.yaml
phaseRepositoryName: primary
repositories:
airshipctl:
checkout:
branch: ""
commitHash: f4cb1c44e0283c38a8bc1be5b8d71020b5d30dfb
force: false
localBranch: false
tag: ""
url: https://opendev.org/airship/airshipctl.git
primary:
checkout:
branch: ""
commitHash: 5556edbd386191de6c1ba90757d640c1c63c6339
force: false
localBranch: false
tag: ""
url: https://opendev.org/airship/treasuremap.git
targetPath: /home/airship
permissions:
DirectoryPermission: 488
FilePermission: 416
>>>>>>>>Sample output of document pull for above configuration<<<<<<<<<
pkg/document/pull/pull.go:36: Reading current context manifest information from /home/airship/.airship/config
(currentContext:)
pkg/document/pull/pull.go:51: Downloading airshipctl repository airshipctl from https://opendev.org/airship/
airshipctl.git into /home/airship (url: & targetPath:)
pkg/document/repo/repo.go:141: Attempting to download the repository airshipctl
pkg/document/repo/repo.go:126: Attempting to clone the repository airshipctl from https://opendev.org/airship/
airshipctl.git
pkg/document/repo/repo.go:120: Attempting to open repository airshipctl
pkg/document/repo/repo.go:110: Attempting to checkout the repository airshipctl from commit hash #####
pkg/document/pull/pull.go:51: Downloading primary repository treasuremap from https://opendev.org/airship/
treasuremap.git into /home/airship (repository name taken from url path last content)
pkg/document/repo/repo.go:141: Attempting to download the repository treasuremap
pkg/document/repo/repo.go:126: Attempting to clone the repository treasuremap from /home/airship/treasuremap
pkg/document/repo/repo.go:120: Attempting to open repository treasuremap
pkg/document/repo/repo.go:110: Attempting to checkout the repository treasuremap from commit hash #####
`
)
// NewPullCommand creates a new command for pulling airship document repositories
func NewPullCommand(cfgFactory config.Factory) *cobra.Command {
var noCheckout bool
documentPullCmd := &cobra.Command{
Use: "pull",
Long: fmt.Sprintf(long[1:], filepath.Join(
config.HomeEnvVar, config.AirshipConfigDir, config.AirshipDefaultManifest)),
Short: "Airshipctl command to pull manifests from remote git repositories",
Example: pullExample,
RunE: func(cmd *cobra.Command, args []string) error {
return pull.Pull(cfgFactory, noCheckout)
},
}
documentPullCmd.Flags().BoolVarP(&noCheckout, "no-checkout", "n", false,
"no checkout is performed after the clone is complete.")
return documentPullCmd
}