mirror of
https://github.com/kubevela/kubevela.git
synced 2026-08-19 04:26:39 +00:00
add remove cap center cli and api (#237)
* add remove cap center cli * add delete cap center api * doc: capability center delete api * test: capability center delete e2e
This commit is contained in:
@@ -478,6 +478,15 @@ sample request
|
||||
```json
|
||||
{"Name":"c1","Address":"https://github.com/wonderflow/catalog/tree/repos/repos"}
|
||||
```
|
||||
### DELETE /capability-centers/:capabilityCenterName/ (Capability Center delete)
|
||||
- example
|
||||
sample response
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"data": "mycenter capability center removed successfully"
|
||||
}
|
||||
```
|
||||
|
||||
### PUT /capability-centers/:capabilityCenterName/capabilities/ (Capability Center sync)
|
||||
|
||||
|
||||
@@ -65,5 +65,13 @@ var _ = ginkgo.Describe("Capability", func() {
|
||||
gomega.Expect(output).To(gomega.ContainSubstring(capabilityBasic.Name))
|
||||
gomega.Expect(output).To(gomega.ContainSubstring("installed"))
|
||||
})
|
||||
|
||||
ginkgo.It("delete a capability center", func() {
|
||||
cli := fmt.Sprintf("vela cap center remove %s", capabilityCenterBasic.Name)
|
||||
output, err := e2e.Exec(cli)
|
||||
gomega.Expect(err).NotTo(gomega.HaveOccurred())
|
||||
expectedOutput := fmt.Sprintf("%s capability center removed successfully", capabilityCenterBasic.Name)
|
||||
gomega.Expect(output).To(gomega.ContainSubstring(expectedOutput))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -47,6 +47,7 @@ func NewCenterCommand(c types.Args, ioStream cmdutil.IOStreams) *cobra.Command {
|
||||
NewCapCenterConfigCommand(ioStream),
|
||||
NewCapCenterSyncCommand(ioStream),
|
||||
NewCapCenterListCommand(ioStream),
|
||||
NewCapCenterRemoveCommand(ioStream),
|
||||
)
|
||||
return cmd
|
||||
}
|
||||
@@ -215,6 +216,22 @@ func NewCapCenterListCommand(ioStreams cmdutil.IOStreams) *cobra.Command {
|
||||
return cmd
|
||||
}
|
||||
|
||||
func NewCapCenterRemoveCommand(ioStreams cmdutil.IOStreams) *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "remove <centerName>",
|
||||
Short: "Remove specified capability center",
|
||||
Long: "Remove specified capability center",
|
||||
Example: "vela cap center remove mycenter",
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
return RemoveCapCenter(args, ioStreams)
|
||||
},
|
||||
Annotations: map[string]string{
|
||||
types.TagCommandType: types.TypeOthers,
|
||||
},
|
||||
}
|
||||
return cmd
|
||||
}
|
||||
|
||||
func ListCapCenters(args []string, ioStreams cmdutil.IOStreams) error {
|
||||
table := uitable.New()
|
||||
table.AddRow("NAME", "ADDRESS")
|
||||
@@ -228,3 +245,15 @@ func ListCapCenters(args []string, ioStreams cmdutil.IOStreams) error {
|
||||
ioStreams.Info(table.String())
|
||||
return nil
|
||||
}
|
||||
|
||||
func RemoveCapCenter(args []string, ioStreams cmdutil.IOStreams) error {
|
||||
if len(args) < 1 {
|
||||
return errors.New("you must specify <name> for capability center you want to remove")
|
||||
}
|
||||
centerName := args[0]
|
||||
msg, err := oam.RemoveCapabilityCenter(centerName)
|
||||
if err == nil {
|
||||
ioStreams.Info(msg)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -314,6 +314,39 @@ func ListCenterCapabilities(repoDir string) ([]types.Capability, error) {
|
||||
return templates, nil
|
||||
}
|
||||
|
||||
func RemoveCapabilityCenter(centerName string) (string, error) {
|
||||
var message string
|
||||
var err error
|
||||
dir, _ := system.GetCapCenterDir()
|
||||
repoDir := filepath.Join(dir, centerName)
|
||||
// 1.remove capability center dir
|
||||
if _, err := os.Stat(repoDir); err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
err = fmt.Errorf("%s capability center has not successfully synced", centerName)
|
||||
return message, err
|
||||
}
|
||||
}
|
||||
if err = os.RemoveAll(repoDir); err != nil {
|
||||
return message, err
|
||||
}
|
||||
// 2.remove center from capability center config
|
||||
repos, err := plugins.LoadRepos()
|
||||
if err != nil {
|
||||
return message, err
|
||||
}
|
||||
for idx, r := range repos {
|
||||
if r.Name == centerName {
|
||||
repos = append(repos[:idx], repos[idx+1:]...)
|
||||
break
|
||||
}
|
||||
}
|
||||
if err = plugins.StoreRepos(repos); err != nil {
|
||||
return message, err
|
||||
}
|
||||
message = fmt.Sprintf("%s capability center removed successfully", centerName)
|
||||
return message, err
|
||||
}
|
||||
|
||||
func GatherWorkloads(templates []types.Capability) []types.Capability {
|
||||
workloads, err := plugins.LoadInstalledCapabilityWithType(types.TypeWorkload)
|
||||
if err != nil {
|
||||
|
||||
@@ -54,6 +54,12 @@ func AddCapabilityIntoCluster(c *gin.Context) {
|
||||
util.AssembleResponse(c, msg, nil)
|
||||
}
|
||||
|
||||
func DeleteCapabilityCenter(c *gin.Context) {
|
||||
capabilityCenterName := c.Param("capabilityCenterName")
|
||||
msg, err := oam.RemoveCapabilityCenter(capabilityCenterName)
|
||||
util.AssembleResponse(c, msg, err)
|
||||
}
|
||||
|
||||
func RemoveCapabilityFromCluster(c *gin.Context) {
|
||||
capabilityCenterName := c.Param("capabilityName")
|
||||
kubeClient := c.MustGet("KubeClient")
|
||||
|
||||
@@ -93,6 +93,7 @@ func setupRoute(kubeClient client.Client) http.Handler {
|
||||
{
|
||||
capCenters.PUT("/", handler.AddCapabilityCenter)
|
||||
capCenters.GET("/", handler.ListCapabilityCenters)
|
||||
capCenters.DELETE("/:capabilityCenterName", handler.DeleteCapabilityCenter)
|
||||
|
||||
caps := capCenters.Group("/:capabilityCenterName" + util.CapabilityPath)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user