@@ -37,9 +37,9 @@ import (
3737
3838const (
3939 ADD_EXAMPLE = `Examples:
40- $ curveadm add my-cluster # Add a cluster named 'my-cluster'
41- $ curveadm add my-cluster -m "deploy for test" # Add a cluster with description
42- $ curveadm add my-cluster -f /path/to/topology.yaml # Add a cluster with specified topology`
40+ $ curveadm cluster add my-cluster # Add a cluster named 'my-cluster'
41+ $ curveadm cluster add my-cluster -m "deploy for test" # Add a cluster with description
42+ $ curveadm cluster add my-cluster -f /path/to/topology.yaml # Add a cluster with specified topology`
4343)
4444
4545var (
@@ -92,8 +92,7 @@ func readTopology(filename string) (string, error) {
9292}
9393
9494func genCheckTopologyPlaybook (curveadm * cli.CurveAdm ,
95- dcs []* topology.DeployConfig ,
96- options addOptions ) (* playbook.Playbook , error ) {
95+ dcs []* topology.DeployConfig ) (* playbook.Playbook , error ) {
9796 steps := CHECK_TOPOLOGY_PLAYBOOK_STEPS
9897 pb := playbook .NewPlaybook (curveadm )
9998 for _ , step := range steps {
@@ -116,8 +115,8 @@ func genCheckTopologyPlaybook(curveadm *cli.CurveAdm,
116115 return pb , nil
117116}
118117
119- func checkTopology (curveadm * cli.CurveAdm , data string , options addOptions ) error {
120- if len (options . filename ) == 0 {
118+ func checkTopology (curveadm * cli.CurveAdm , data string , filename string ) error {
119+ if len (filename ) == 0 {
121120 return nil
122121 }
123122
@@ -126,7 +125,7 @@ func checkTopology(curveadm *cli.CurveAdm, data string, options addOptions) erro
126125 return err
127126 }
128127
129- pb , err := genCheckTopologyPlaybook (curveadm , dcs , options )
128+ pb , err := genCheckTopologyPlaybook (curveadm , dcs )
130129 if err != nil {
131130 return err
132131 }
@@ -155,7 +154,7 @@ func runAdd(curveadm *cli.CurveAdm, options addOptions) error {
155154 }
156155
157156 // 3) check topology
158- err = checkTopology (curveadm , data , options )
157+ err = checkTopology (curveadm , data , options . filename )
159158 if err != nil {
160159 return err
161160 }
@@ -170,3 +169,28 @@ func runAdd(curveadm *cli.CurveAdm, options addOptions) error {
170169 curveadm .WriteOutln ("Added cluster '%s'" , name )
171170 return nil
172171}
172+
173+ // for http service
174+ func Add (curveadm * cli.CurveAdm , name , desc , topo string ) error {
175+ storage := curveadm .Storage ()
176+ clusters , err := storage .GetClusters (name )
177+ if err != nil {
178+ return errno .ERR_GET_ALL_CLUSTERS_FAILED .E (err )
179+ } else if len (clusters ) > 0 {
180+ return errno .ERR_CLUSTER_ALREADY_EXIST .
181+ F ("cluster name: %s" , name )
182+ }
183+
184+ // check topology
185+ err = checkTopology (curveadm , topo , topo )
186+ if err != nil {
187+ return err
188+ }
189+
190+ // 4) insert cluster (with topology) into database
191+ err = storage .InsertCluster (name , desc , topo )
192+ if err != nil {
193+ return errno .ERR_INSERT_CLUSTER_FAILED .E (err )
194+ }
195+ return nil
196+ }
0 commit comments