Bump Copyright to 2019
[src/xds/xds-server.git] / lib / xdsserver / target-standard.go
1 /*
2  * Copyright (C) 2017-2018 "IoT.bzh"
3  * Author Sebastien Douheret <sebastien@iot.bzh>
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  */
17
18 package xdsserver
19
20 import (
21         "fmt"
22
23         "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1"
24         uuid "github.com/satori/go.uuid"
25 )
26
27 // ITARGET interface implementation for standard targets
28
29 // TgtStd .
30 type TgtStd struct {
31         *Context
32         TgtConfig xsapiv1.TargetConfig
33         terminals *Terminals
34 }
35
36 // NewTargetStandard Create a new instance of TgtStd
37 func NewTargetStandard(ctx *Context) *TgtStd {
38         t := TgtStd{
39                 Context: ctx,
40                 TgtConfig: xsapiv1.TargetConfig{
41                         Status: xsapiv1.StatusTgtDisable,
42                 },
43         }
44         return &t
45 }
46
47 // NewUID Get a UUID
48 func (t *TgtStd) NewUID(suffix string) string {
49         uuid := uuid.NewV1().String()
50         if len(suffix) > 0 {
51                 uuid += "_" + suffix
52         }
53         return uuid
54 }
55
56 // Add a new target
57 func (t *TgtStd) Add(cfg xsapiv1.TargetConfig, terms *Terminals) (*xsapiv1.TargetConfig, error) {
58         return t.Setup(cfg, terms)
59 }
60
61 // Delete a target
62 func (t *TgtStd) Delete() error {
63         // nothing to do
64         return nil
65 }
66
67 // Setup Setup local project config
68 func (t *TgtStd) Setup(cfg xsapiv1.TargetConfig, terms *Terminals) (*xsapiv1.TargetConfig, error) {
69
70         if cfg.IP == "" {
71                 return nil, fmt.Errorf("IP address must be set")
72         }
73
74         t.TgtConfig = cfg
75         t.terminals = terms
76
77         // FIXME: sanity check test ping IP
78
79         t.TgtConfig.Status = xsapiv1.StatusTgtEnable
80
81         return &t.TgtConfig, nil
82 }
83
84 // GetConfig Get public part of target config
85 func (t *TgtStd) GetConfig() xsapiv1.TargetConfig {
86         // XXX - Need to manually update terminal definition ()
87         t.TgtConfig.Terms = (*t.terminals).GetConfigArr()
88         return t.TgtConfig
89 }