add flag to print only allocated ip for vpn use case

This commit is contained in:
viktorbarzin 2021-03-25 19:54:58 +00:00
parent 43965df437
commit 059283aca1

View file

@ -11,8 +11,9 @@ import (
) )
const ( const (
useCaseFlagName = "use-case" useCaseFlagName = "use-case"
repoRootFlagName = "repo-root" repoRootFlagName = "repo-root"
printResultOnlyFlagName = "result-only"
) )
var ( var (
@ -28,17 +29,22 @@ func main() {
func run() error { func run() error {
useCase := flag.String(useCaseFlagName, "", fmt.Sprintf("Use case to run. Available use cases are: %+v", validUseCases)) useCase := flag.String(useCaseFlagName, "", fmt.Sprintf("Use case to run. Available use cases are: %+v", validUseCases))
printResultOnly := flag.Bool(printResultOnlyFlagName, false, "Whether or not to print only the result (allocated ip) or print full command logging")
// repoRootParam := flag.String(repoRootFlagName, "", fmt.Sprintf("Path to the root of the infra repository.")) // repoRootParam := flag.String(repoRootFlagName, "", fmt.Sprintf("Path to the root of the infra repository."))
// VPN flags // VPN flags
vpnClientName := flag.String(vpnClientNameFlagName, "", fmt.Sprintf("Friendly VPN user name.")) vpnClientName := flag.String(vpnClientNameFlagName, "", fmt.Sprintf("Friendly VPN user name."))
vpnClientPubKey := flag.String(vpnClientPubKeyFlagName, "", fmt.Sprintf("VPN client public key.")) vpnClientPubKey := flag.String(vpnClientPubKeyFlagName, "", fmt.Sprintf("VPN client public key."))
flag.Set("logtostderr", "true") // Flag definitions above!
flag.Set("stderrthreshold", "WARNING")
flag.Set("v", "2")
flag.Parse() flag.Parse()
if !*printResultOnly {
flag.Set("logtostderr", "true")
flag.Set("stderrthreshold", "WARNING")
flag.Set("v", "2")
}
// if *repoRootParam == "" { // if *repoRootParam == "" {
// return fmt.Errorf("'-%s' flag must not be empty", repoRootFlagName) // return fmt.Errorf("'-%s' flag must not be empty", repoRootFlagName)
// } // }
@ -65,12 +71,12 @@ func run() error {
switch *useCase { switch *useCase {
case vpnUseCaseFlagName: case vpnUseCaseFlagName:
// get last used ip and increment // get last used ip and increment
lastIP, err := getAndUpdateIP(gitFs, vpnLastIPConfFileRelative) ip, err := getAndUpdateIP(gitFs, vpnLastIPConfFileRelative)
if err != nil { if err != nil {
return errors.Wrapf(err, "failed to get valid last ip from file %s", vpnLastIPConfFileRelative) return errors.Wrapf(err, "failed to get valid last ip from file %s", vpnLastIPConfFileRelative)
} }
// insert new vpn client config // insert new vpn client config
err = addVPNClient(gitFs, *vpnClientName, *vpnClientPubKey, vpnClientsConfFileRelative, lastIP) err = addVPNClient(gitFs, *vpnClientName, *vpnClientPubKey, vpnClientsConfFileRelative, ip)
if err != nil { if err != nil {
return errors.Wrapf(err, "failed to add vpn client") return errors.Wrapf(err, "failed to add vpn client")
} }
@ -78,6 +84,9 @@ func run() error {
if _, err = worktree.Commit("Added new VPN client config", &git.CommitOptions{All: true, Author: &object.Signature{Name: "Webhook Handler Bot"}}); err != nil { if _, err = worktree.Commit("Added new VPN client config", &git.CommitOptions{All: true, Author: &object.Signature{Name: "Webhook Handler Bot"}}); err != nil {
return errors.Wrapf(err, "failed to commit") return errors.Wrapf(err, "failed to commit")
} }
if *printResultOnly {
println(ip)
}
default: default:
err = errors.New(fmt.Sprintf("unsupported use case: %s", *useCase)) err = errors.New(fmt.Sprintf("unsupported use case: %s", *useCase))
} }