2025-04-24 11:56:58 +02:00
|
|
|
package instance
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
|
|
"github.com/zitadel/zitadel/internal/api/grpc/object/v2"
|
|
|
|
|
"github.com/zitadel/zitadel/internal/zerrors"
|
2025-04-28 17:15:23 +02:00
|
|
|
instance "github.com/zitadel/zitadel/pkg/grpc/instance/v2beta"
|
2025-04-24 11:56:58 +02:00
|
|
|
)
|
|
|
|
|
|
2025-04-28 16:13:20 +02:00
|
|
|
func (s *Server) CreateInstance(ctx context.Context, req *instance.CreateInstanceRequest) (*instance.CreateInstanceResponse, error) {
|
|
|
|
|
id, pat, key, details, err := s.command.SetUpInstance(ctx, CreateInstancePbToSetupInstance(req, s.defaultInstance, s.externalDomain))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var machineKey []byte
|
|
|
|
|
if key != nil {
|
|
|
|
|
machineKey, err = key.Detail()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return &instance.CreateInstanceResponse{
|
|
|
|
|
Pat: pat,
|
|
|
|
|
MachineKey: machineKey,
|
|
|
|
|
InstanceId: id,
|
|
|
|
|
Details: object.DomainToDetailsPb(details),
|
|
|
|
|
}, nil
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-24 11:56:58 +02:00
|
|
|
func (s *Server) DeleteInstance(ctx context.Context, request *instance.DeleteInstanceRequest) (*instance.DeleteInstanceResponse, error) {
|
|
|
|
|
instanceID := strings.TrimSpace(request.GetInstanceId())
|
2025-04-28 11:01:38 +02:00
|
|
|
if err := validateParam(instanceID, "instance_id"); err != nil {
|
|
|
|
|
return nil, err
|
2025-04-24 11:56:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
obj, err := s.command.RemoveInstance(ctx, instanceID)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return &instance.DeleteInstanceResponse{
|
|
|
|
|
Details: object.DomainToDetailsPb(obj),
|
|
|
|
|
}, nil
|
|
|
|
|
|
|
|
|
|
}
|
2025-04-24 18:05:11 +02:00
|
|
|
|
|
|
|
|
func (s *Server) UpdateInstance(ctx context.Context, request *instance.UpdateInstanceRequest) (*instance.UpdateInstanceResponse, error) {
|
|
|
|
|
instanceName := strings.TrimSpace(request.GetInstanceName())
|
2025-04-28 11:01:38 +02:00
|
|
|
if err := validateParam(instanceName, "instance_name"); err != nil {
|
|
|
|
|
return nil, err
|
2025-04-24 18:05:11 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
obj, err := s.command.UpdateInstance(ctx, instanceName)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return &instance.UpdateInstanceResponse{
|
|
|
|
|
Details: object.DomainToDetailsPb(obj),
|
|
|
|
|
}, nil
|
|
|
|
|
}
|
2025-04-28 11:01:38 +02:00
|
|
|
|
|
|
|
|
func validateParam(param string, paramName string) error {
|
|
|
|
|
if strings.TrimSpace(param) == "" {
|
|
|
|
|
return zerrors.ThrowInvalidArgument(nil, paramName, paramName+" must not be empty")
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|