X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=utils.go;h=d6324151d9af855fd29b397cf5d85af6f34d676e;hb=f48c7c3164b0568de45d7ccc88b0ce7724a17cc4;hp=6a05ef3e01547dc72d532545c6861f0e117af4e7;hpb=c35d7a0fc8bbb1f9123bb41a7b66e45ea2564dd2;p=src%2Fxds%2Fxds-cli.git diff --git a/utils.go b/utils.go index 6a05ef3..d632415 100644 --- a/utils.go +++ b/utils.go @@ -1,35 +1,73 @@ +/* + * Copyright (C) 2017 "IoT.bzh" + * Author Sebastien Douheret + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + package main import ( "encoding/json" + "fmt" - "github.com/iotbzh/xds-agent/lib/apiv1" + "github.com/franciscocpg/reflectme" + "github.com/iotbzh/xds-agent/lib/xaapiv1" "github.com/urfave/cli" ) -var cacheXdsVersion *apiv1.XDSVersion +var cacheXdsVersion *xaapiv1.XDSVersion +var cacheData = xaapiv1.XDSVersion{} // XdsVersionGet Get version of XDS agent & server -func XdsVersionGet(ver *apiv1.XDSVersion) error { - // Use cached data - if cacheXdsVersion != nil { - ver = cacheXdsVersion - return nil +func XdsVersionGet(ver *xaapiv1.XDSVersion) error { + // Update cached data + if cacheXdsVersion == nil { + if err := HTTPCli.Get("/version", &cacheData); err != nil { + return err + } } + reflectme.Copy(&cacheData, ver) + return nil +} + +// XdsConfigGet Get current XDS Agent config +func XdsConfigGet(cfg *xaapiv1.APIConfig) error { + return HTTPCli.Get("/config", cfg) +} + +// XdsConfigSet Set XDS Agent config +func XdsConfigSet(cfg xaapiv1.APIConfig) error { + // clear cache + cacheXdsVersion = nil - dataVer := apiv1.XDSVersion{} - if err := HTTPCli.Get("/version", &dataVer); err != nil { + newCfg := xaapiv1.APIConfig{} + if err := HTTPCli.Post("/config", cfg, &newCfg); err != nil { return err } - cacheXdsVersion = &dataVer - *ver = dataVer + idx := XdsServerIndexGet() + if !newCfg.Servers[idx].Connected { + return fmt.Errorf("XDS server %s still not connected", cfg.Servers[idx].URL) + } + return nil } // XdsServerIDGet returns the XDS Server ID func XdsServerIDGet() string { - ver := apiv1.XDSVersion{} + ver := xaapiv1.XDSVersion{} if err := XdsVersionGet(&ver); err != nil { return "" } @@ -46,7 +84,7 @@ func XdsServerIndexGet() int { } // ProjectsListGet Get the list of existing projects -func ProjectsListGet(prjs *[]apiv1.ProjectConfig) error { +func ProjectsListGet(prjs *[]xaapiv1.ProjectConfig) error { var data []byte if err := HTTPCli.HTTPGet("/projects", &data); err != nil { return err