X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=utils.go;h=65b67d3fc78ee79080b3df544b8030329999d0a2;hb=397a6038d7d88d21c8577f1c7267849ba5814080;hp=6a05ef3e01547dc72d532545c6861f0e117af4e7;hpb=c35d7a0fc8bbb1f9123bb41a7b66e45ea2564dd2;p=src%2Fxds%2Fxds-cli.git diff --git a/utils.go b/utils.go index 6a05ef3..65b67d3 100644 --- a/utils.go +++ b/utils.go @@ -1,35 +1,74 @@ +/* + * 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" + "strconv" - "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) +} - dataVer := apiv1.XDSVersion{} - if err := HTTPCli.Get("/version", &dataVer); err != nil { +// XdsConfigSet Set XDS Agent config +func XdsConfigSet(cfg xaapiv1.APIConfig) error { + // clear cache + cacheXdsVersion = 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 "" } @@ -45,8 +84,13 @@ func XdsServerIndexGet() int { return 0 } +// XdsServerComputeURL computes the URL used to access to XDS Server API +func XdsServerComputeURL(endURL string) string { + return "servers/" + strconv.Itoa(XdsServerIndexGet()) + endURL +} + // 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