deployment := v1.Group(url.IPS())
{
deployment.POST("", deploymentExecutor.Deploy)
- // deployment.PUT
- // deployment.DELETE
+ deployment.DELETE("", deploymentExecutor.Delete)
+ deployment.PUT("", deploymentExecutor.Update)
}
healthcheck := v1.Group(url.Healthcheck())
type Command interface {
Deploy(c *gin.Context)
+ Delete(c *gin.Context)
+ Update(c *gin.Context)
}
type Executor struct {
}
utils.WriteSuccess(c.Writer, http.StatusCreated, nil)
}
+
+func (Executor) Delete(c *gin.Context) {
+ logger.Logging(logger.DEBUG, "IN")
+ defer logger.Logging(logger.DEBUG, "OUT")
+
+ name := c.Query("name")
+ if name == "" {
+ utils.WriteError(c.Writer, errors.InvalidIPSName{Message: "Empty Query"})
+ return
+ }
+
+ err := ipsAdapter.Delete(name)
+ if err != nil {
+ utils.WriteError(c.Writer, err)
+ return
+ }
+
+ utils.WriteSuccess(c.Writer, http.StatusNoContent, nil)
+}
+
+func (Executor) Update(c *gin.Context) {
+ logger.Logging(logger.DEBUG, "IN")
+ defer logger.Logging(logger.DEBUG, "OUT")
+
+ name := c.Query("name")
+ if name == "" {
+ utils.WriteError(c.Writer, errors.InvalidIPSName{Message: "Empty Query"})
+ return
+ }
+
+ version := c.Query("version")
+ if version == "" {
+ utils.WriteError(c.Writer, errors.InvalidIPSName{Message: "Empty Query"})
+ return
+ }
+
+ _, err := ipsAdapter.Update(name, version)
+ if err != nil {
+ utils.WriteError(c.Writer, err)
+ return
+ }
+
+ utils.WriteSuccess(c.Writer, http.StatusCreated, nil)
+}
api_v1beta1 "github.com/kserve/kserve/pkg/apis/serving/v1beta1"
"github.com/kserve/kserve/pkg/client/clientset/versioned"
client_v1beta1 "github.com/kserve/kserve/pkg/client/clientset/versioned/typed/serving/v1beta1"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/tools/clientcmd"
"gerrit.o-ran-sc.org/r/aiml-fw/aihp/ips/kserve-adapter/pkg/commons/errors"
type Command interface {
Init(kubeconfigPath string) error
Create(values types.Values) (string, error)
+ Delete(name string) error
+ Get(name string) (*api_v1beta1.InferenceService, error)
+ Update(values types.Values) (string, error)
}
type Client struct {
}
return
}
+
+func (c *Client) Delete(name string) (err error) {
+ logger.Logging(logger.DEBUG, "IN")
+ defer logger.Logging(logger.DEBUG, "OUT")
+
+ err = c.api.Delete(name, &v1.DeleteOptions{})
+ if err != nil {
+ logger.Logging(logger.ERROR, err.Error())
+ err = errors.NotFoundIPS{
+ Message: err.Error(),
+ }
+ return
+ }
+ return
+}
+
+func (c *Client) Get(name string) (ifsv *api_v1beta1.InferenceService, err error) {
+ logger.Logging(logger.DEBUG, "IN")
+ defer logger.Logging(logger.DEBUG, "OUT")
+
+ ifsv, err = c.api.Get(name, v1.GetOptions{})
+ if err != nil {
+ logger.Logging(logger.ERROR, err.Error())
+ err = errors.NotFoundIPS{Message: err.Error()}
+ return
+ }
+ return
+}
+
+func (c *Client) Update(values types.Values) (revision string, err error) {
+ logger.Logging(logger.DEBUG, "IN")
+ defer logger.Logging(logger.DEBUG, "OUT")
+
+ info := convertValuesToInferenceService(values)
+ if err != nil {
+ return
+ }
+
+ _, err = c.api.Update(&info)
+ if err != nil {
+ logger.Logging(logger.ERROR, err.Error())
+ err = errors.NotFoundIPS{Message: err.Error()}
+ }
+ return
+}
"gerrit.o-ran-sc.org/r/aiml-fw/aihp/ips/kserve-adapter/pkg/client/kserve"
"gerrit.o-ran-sc.org/r/aiml-fw/aihp/ips/kserve-adapter/pkg/client/onboard"
+ "gerrit.o-ran-sc.org/r/aiml-fw/aihp/ips/kserve-adapter/pkg/commons/errors"
"gerrit.o-ran-sc.org/r/aiml-fw/aihp/ips/kserve-adapter/pkg/commons/logger"
)
type Command interface {
Deploy(name string, version string) (string, error)
+ Delete(name string) error
+ Update(name string, version string) (string, error)
}
type Executor struct {
}
return
}
+
+func (Executor) Delete(name string) (err error) {
+ logger.Logging(logger.DEBUG, "IN")
+ defer logger.Logging(logger.DEBUG, "OUT")
+
+ err = onboardClient.Get(name)
+ if err != nil {
+ err = errors.InvalidIPSName{
+ Message: err.Error(),
+ }
+ return
+ }
+
+ err = kserveClient.Delete(name)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (Executor) Update(name string, version string) (revision string, err error) {
+ logger.Logging(logger.DEBUG, "IN")
+ defer logger.Logging(logger.DEBUG, "OUT")
+
+ path, err := onboardClient.Download(name, version)
+ if err != nil {
+ return
+ }
+ defer removeFunc(path)
+
+ values, err := valueParse(path)
+ if err != nil {
+ logger.Logging(logger.ERROR, err.Error())
+ return
+ }
+
+ ifsv, err := kserveClient.Get(name)
+ if err != nil {
+ return
+ }
+ values.ResourceVersion = ifsv.ResourceVersion
+
+ revision, err = kserveClient.Update(values)
+ if err != nil {
+ return
+ }
+ return
+}