blob: f3175345e0c4e79b6f2981ced5954d33f030b6c1 [file] [log] [blame]
Hendrik Hofstadt0d7c91e2019-10-23 21:44:47 +02001// Copyright 2020 The Monogon Project Authors.
2//
3// SPDX-License-Identifier: Apache-2.0
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
17package api
18
19import (
20 "context"
21 "errors"
22 "fmt"
Lorenz Bruna4ea9d02019-10-31 11:40:30 +010023
Hendrik Hofstadt0d7c91e2019-10-23 21:44:47 +020024 schema "git.monogon.dev/source/nexantic.git/core/generated/api"
25)
26
27const (
28 MinNameLength = 3
29)
30
31var (
32 ErrInvalidProvisioningToken = errors.New("invalid provisioning token")
33 ErrInvalidNameLength = fmt.Errorf("name must be at least %d characters long", MinNameLength)
34)
35
36func (s *Server) Setup(c context.Context, r *schema.SetupRequest) (*schema.SetupResponse, error) {
Hendrik Hofstadt0d7c91e2019-10-23 21:44:47 +020037 return &schema.SetupResponse{}, nil
38}
39
Leopold Schabel68c58752019-11-14 21:00:59 +010040func (s *Server) BootstrapNewCluster(context.Context, *schema.BootstrapNewClusterRequest) (*schema.BootstrapNewClusterResponse, error) {
41 err := s.setupService.SetupNewCluster()
42 return &schema.BootstrapNewClusterResponse{}, err
Hendrik Hofstadt0d7c91e2019-10-23 21:44:47 +020043}
44
Leopold Schabel68c58752019-11-14 21:00:59 +010045func (s *Server) JoinCluster(ctx context.Context, req *schema.JoinClusterRequest) (*schema.JoinClusterResponse, error) {
Hendrik Hofstadt0d7c91e2019-10-23 21:44:47 +020046 // Verify provisioning token
47 if s.setupService.GetJoinClusterToken() != req.ProvisioningToken {
48 return nil, ErrInvalidProvisioningToken
49 }
50
51 // Join cluster
Leopold Schabel68c58752019-11-14 21:00:59 +010052 err := s.setupService.JoinCluster(req.InitialCluster, req.Certs)
Hendrik Hofstadt0d7c91e2019-10-23 21:44:47 +020053 if err != nil {
54 return nil, err
55 }
56
Leopold Schabel68c58752019-11-14 21:00:59 +010057 return &schema.JoinClusterResponse{}, nil
Hendrik Hofstadt0d7c91e2019-10-23 21:44:47 +020058}
59
60func (s *Server) Attest(c context.Context, r *schema.AttestRequest) (*schema.AttestResponse, error) {
61 // TODO implement
62 return &schema.AttestResponse{
63 Response: r.Challenge,
64 }, nil
65}