forked from projectatomic/atomic-enterprise
-
Notifications
You must be signed in to change notification settings - Fork 0
/
startbuild.go
68 lines (54 loc) · 2.04 KB
/
startbuild.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package cmd
import (
"fmt"
"io"
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api"
cmdutil "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util"
"github.com/spf13/cobra"
buildapi "github.com/openshift/origin/pkg/build/api"
buildutil "github.com/openshift/origin/pkg/build/util"
osclient "github.com/openshift/origin/pkg/client"
"github.com/openshift/origin/pkg/cmd/util/clientcmd"
)
func NewCmdStartBuild(f *clientcmd.Factory, out io.Writer) *cobra.Command {
cmd := &cobra.Command{
Use: "start-build (<buildConfig>|--from-build=<build>)",
Short: "Starts a new build from existing build or buildConfig",
Long: `
Manually starts build from existing build or buildConfig
NOTE: This command is experimental and is subject to change in the future.
Examples:
# Starts build from buildConfig matching the name "3bd2ug53b"
$ osc start-build 3bd2ug53b
# Starts build from build matching the name "3bd2ug53b"
$ osc start-build --from-build=3bd2ug53b
`,
Run: func(cmd *cobra.Command, args []string) {
buildName := cmdutil.GetFlagString(cmd, "from-build")
if len(args) != 1 && len(buildName) == 0 {
usageError(cmd, "Must pass a name of buildConfig or specify build name with '--from-build' flag")
}
client, _, err := f.Clients(cmd)
checkErr(err)
namespace, err := f.DefaultNamespace(cmd)
checkErr(err)
var newBuild *buildapi.Build
if len(buildName) == 0 {
// from build config
config, err := client.BuildConfigs(namespace).Get(args[0])
checkErr(err)
newBuild, err = buildutil.GenerateBuildWithImageTag(config, nil, client.ImageRepositories(kapi.NamespaceAll).(osclient.ImageRepositoryNamespaceGetter))
checkErr(err)
} else {
build, err := client.Builds(namespace).Get(buildName)
checkErr(err)
newBuild = buildutil.GenerateBuildFromBuild(build)
}
newBuild, err = client.Builds(namespace).Create(newBuild)
checkErr(err)
fmt.Fprintf(out, "%s\n", newBuild.Name)
},
}
cmd.Flags().String("from-build", "", "Specify the name of a build which should be re-run")
return cmd
}