forked from rook/rook
Add a more involved multus validation test to the Rook binary. Because this is intended to be end-user runnable, make sure operator-only commands are hidden. Build this into the rook binary instead of creating a separate binary for ease, and because any binary built with the kube api becomes 40+ megabytes. We save quite a bit of space by including this in the Rook binary, which is good for keeping container layers as small as possible. Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
83 lines
2.6 KiB
Go
83 lines
2.6 KiB
Go
/*
|
|
Copyright 2018 The Rook Authors. All rights reserved.
|
|
|
|
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
|
|
|
|
http://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 ceph
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/coreos/pkg/capnslog"
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/rook/rook/cmd/rook/rook"
|
|
"github.com/rook/rook/pkg/clusterd"
|
|
cephclient "github.com/rook/rook/pkg/daemon/ceph/client"
|
|
osdconfig "github.com/rook/rook/pkg/operator/ceph/cluster/osd/config"
|
|
"github.com/rook/rook/pkg/operator/k8sutil"
|
|
)
|
|
|
|
// Cmd is the main command for operator and daemons.
|
|
var Cmd = &cobra.Command{
|
|
Use: "ceph",
|
|
Short: "Main command for Ceph operator and daemons.",
|
|
Hidden: true, // do not advertise to end users
|
|
}
|
|
|
|
var (
|
|
cfg = &config{}
|
|
clusterInfo cephclient.ClusterInfo
|
|
logger = capnslog.NewPackageLogger("github.com/rook/rook", "cephcmd")
|
|
)
|
|
|
|
type config struct {
|
|
devices string
|
|
metadataDevice string
|
|
dataDir string
|
|
forceFormat bool
|
|
location string
|
|
cephConfigOverride string
|
|
storeConfig osdconfig.StoreConfig
|
|
monEndpoints string
|
|
nodeName string
|
|
pvcBacked bool
|
|
}
|
|
|
|
func init() {
|
|
Cmd.AddCommand(cleanUpCmd,
|
|
operatorCmd,
|
|
osdCmd,
|
|
mgrCmd,
|
|
configCmd)
|
|
}
|
|
|
|
func createContext() *clusterd.Context {
|
|
context := rook.NewContext()
|
|
context.ConfigDir = cfg.dataDir
|
|
context.ConfigFileOverride = cfg.cephConfigOverride
|
|
return context
|
|
}
|
|
|
|
func addCephFlags(command *cobra.Command) {
|
|
command.Flags().StringVar(&clusterInfo.FSID, "fsid", "", "the cluster uuid")
|
|
command.Flags().StringVar(&clusterInfo.MonitorSecret, "mon-secret", "", "the cephx keyring for monitors")
|
|
command.Flags().StringVar(&clusterInfo.CephCred.Username, "ceph-username", "", "ceph username")
|
|
command.Flags().StringVar(&cfg.monEndpoints, "mon-endpoints", "", "ceph mon endpoints")
|
|
command.Flags().StringVar(&cfg.dataDir, "config-dir", "/var/lib/rook", "directory for storing configuration")
|
|
command.Flags().StringVar(&cfg.cephConfigOverride, "ceph-config-override", "", "optional path to a ceph config file that will be appended to the config files that rook generates")
|
|
|
|
clusterInfo.Namespace = os.Getenv(k8sutil.PodNamespaceEnvVar)
|
|
}
|