work on setting the hostname in the patchset
This commit is contained in:
parent
68127e4356
commit
b2ed410276
|
@ -0,0 +1,53 @@
|
||||||
|
// +build linux
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
// scutil --get ComputerName
|
||||||
|
|
||||||
|
// getDomainName fetches the domain name using the getdomainname syscall.
|
||||||
|
func getDomainName() (string, error) {
|
||||||
|
var buf [256]byte
|
||||||
|
err := syscall.Getdomainname(buf[:])
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("failed to get domain name: %w", err)
|
||||||
|
}
|
||||||
|
// Trim null bytes
|
||||||
|
n := 0
|
||||||
|
for ; n < len(buf); n++ {
|
||||||
|
if buf[n] == 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return string(buf[:n]), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFullHostname returns the hostname + domain name (if set).
|
||||||
|
func GetFullHostname() (string, error) {
|
||||||
|
host, err := os.Hostname()
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("failed to get hostname: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
domain, err := getDomainName()
|
||||||
|
if err != nil || domain == "" {
|
||||||
|
return host, nil // fallback to short hostname
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmt.Sprintf("%s.%s", host, domain), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fqdn, err := GetFullHostname()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Println("Hostname + Domain:", fqdn)
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetFullHostname returns the hostname + domain name (if set).
|
||||||
|
func getFullHostname() (string, error) {
|
||||||
|
host, err := os.Hostname()
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("failed to get hostname: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
domain, err := getDomainName()
|
||||||
|
if err != nil || domain == "" {
|
||||||
|
return host, nil // fallback to short hostname
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmt.Sprintf("%s.%s", host, domain), nil
|
||||||
|
}
|
37
http.go
37
http.go
|
@ -11,36 +11,6 @@ import (
|
||||||
"go.wit.com/log"
|
"go.wit.com/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
|
||||||
func (f *Forge) HttpPostMachine(url string) ([]byte, error) {
|
|
||||||
if f.Machine == nil {
|
|
||||||
// run f.InitMachine() here?
|
|
||||||
log.Info("you must run f.InitMachine()")
|
|
||||||
return nil, fmt.Errorf("you must run f.InitMachine()")
|
|
||||||
}
|
|
||||||
if f.Machine.Hostname == "" {
|
|
||||||
log.Info("WTF. hostname is blank")
|
|
||||||
} else {
|
|
||||||
log.Info("GOOD. hostname is set to", f.Machine.Hostname)
|
|
||||||
}
|
|
||||||
log.Info("GOOD2. hostname is set to", f.Machine.Hostname)
|
|
||||||
msg, err := f.Machine.Marshal()
|
|
||||||
if err != nil {
|
|
||||||
log.Info("proto.Marshal() failed:", err)
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
log.Info("GOOD3. hostname is set to", f.Machine.Hostname)
|
|
||||||
|
|
||||||
check := new(zoopb.Machine)
|
|
||||||
check.Unmarshal(msg)
|
|
||||||
if check == nil {
|
|
||||||
log.Info("WTF. check == nil")
|
|
||||||
}
|
|
||||||
log.Info("good? check.hostname =", check.Hostname)
|
|
||||||
return f.HttpPost(url, msg)
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
func (f *Forge) HttpPost(url string, data []byte) ([]byte, error) {
|
func (f *Forge) HttpPost(url string, data []byte) ([]byte, error) {
|
||||||
var err error
|
var err error
|
||||||
var req *http.Request
|
var req *http.Request
|
||||||
|
@ -50,13 +20,6 @@ func (f *Forge) HttpPost(url string, data []byte) ([]byte, error) {
|
||||||
|
|
||||||
usr, _ := user.Current()
|
usr, _ := user.Current()
|
||||||
req.Header.Set("author", usr.Username)
|
req.Header.Set("author", usr.Username)
|
||||||
/*
|
|
||||||
if f.Machine == nil {
|
|
||||||
// run f.InitMachine() here?
|
|
||||||
log.Info("you must run f.InitMachine()")
|
|
||||||
return nil, fmt.Errorf("you must run f.InitMachine()")
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
req.Header.Set("hostname", "fixme:hostname")
|
req.Header.Set("hostname", "fixme:hostname")
|
||||||
|
|
||||||
client := &http.Client{}
|
client := &http.Client{}
|
||||||
|
|
18
init.go
18
init.go
|
@ -145,28 +145,10 @@ func (f *Forge) InitPB() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Forge) InitMachine() {
|
func (f *Forge) InitMachine() {
|
||||||
/*
|
|
||||||
f.Machine = new(zoopb.Machine)
|
|
||||||
if err := f.Machine.ConfigLoad(); err != nil {
|
|
||||||
log.Log(WARN, "zoopb.ConfigLoad() failed", err)
|
|
||||||
f.Machine.InitWit()
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
if f.Config.Username == "" {
|
if f.Config.Username == "" {
|
||||||
usr, _ := user.Current()
|
usr, _ := user.Current()
|
||||||
f.Config.Username = usr.Username
|
f.Config.Username = usr.Username
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
if f.Machine.Hostname == "" {
|
|
||||||
r, err := shell.RunVerbose([]string{"hostname", "-f"})
|
|
||||||
if err == nil {
|
|
||||||
tmp := strings.Join(r.Stdout, "\n")
|
|
||||||
f.Machine.Hostname = strings.TrimSpace(tmp)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// only init's the protobuf. intended to not scan or change anything
|
// only init's the protobuf. intended to not scan or change anything
|
||||||
|
|
|
@ -14,13 +14,20 @@ import (
|
||||||
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
|
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
|
||||||
)
|
)
|
||||||
|
|
||||||
// creates a patchset
|
func (f *Forge) newPatchset(name string) *Patchset {
|
||||||
// works from the user branches against the devel branches
|
|
||||||
func (f *Forge) MakeDevelPatchSet(name string) (*Patchset, error) {
|
|
||||||
pset := new(Patchset)
|
pset := new(Patchset)
|
||||||
pset.Name = name
|
pset.Name = name
|
||||||
pset.Ctime = timestamppb.New(time.Now())
|
pset.Ctime = timestamppb.New(time.Now())
|
||||||
pset.Uuid = uuid.New().String()
|
pset.Uuid = uuid.New().String()
|
||||||
|
pset.Hostname = f.Machine.hostname
|
||||||
|
|
||||||
|
return pset
|
||||||
|
}
|
||||||
|
|
||||||
|
// creates a patchset
|
||||||
|
// works from the user branches against the devel branches
|
||||||
|
func (f *Forge) MakeDevelPatchSet(name string) (*Patchset, error) {
|
||||||
|
pset := newPatchset(name)
|
||||||
if os.Getenv("GIT_AUTHOR_NAME") == "" {
|
if os.Getenv("GIT_AUTHOR_NAME") == "" {
|
||||||
return nil, fmt.Errorf("GIT_AUTHOR_NAME not set")
|
return nil, fmt.Errorf("GIT_AUTHOR_NAME not set")
|
||||||
} else {
|
} else {
|
||||||
|
@ -65,19 +72,9 @@ func (f *Forge) MakeDevelPatchSet(name string) (*Patchset, error) {
|
||||||
return pset, nil
|
return pset, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Forge) SubmitDevelPatchSet(name string) (*Patchset, error) {
|
/*
|
||||||
pset, err := f.MakeDevelPatchSet(name)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if err := f.submitPatchset(pset); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return pset, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *Forge) MakeMasterPatchSet() (*Patchset, error) {
|
func (f *Forge) MakeMasterPatchSet() (*Patchset, error) {
|
||||||
pset := new(Patchset)
|
pset := newPatchset("masterBranchPS")
|
||||||
dir, err := os.MkdirTemp("", "forge")
|
dir, err := os.MkdirTemp("", "forge")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -107,6 +104,7 @@ func (f *Forge) MakeMasterPatchSet() (*Patchset, error) {
|
||||||
}
|
}
|
||||||
return pset, nil
|
return pset, nil
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
func (pset *Patchset) makePatchSetNew(repo *gitpb.Repo) error {
|
func (pset *Patchset) makePatchSetNew(repo *gitpb.Repo) error {
|
||||||
startBranch := pset.StartBranchName
|
startBranch := pset.StartBranchName
|
||||||
|
@ -244,29 +242,3 @@ func onlyWalkDirs(pDir string) error {
|
||||||
})
|
})
|
||||||
return baderr
|
return baderr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Forge) submitPatchset(pset *Patchset) error {
|
|
||||||
var url string
|
|
||||||
url = forgeURL + "patchset"
|
|
||||||
msg, err := pset.Marshal()
|
|
||||||
if err != nil {
|
|
||||||
log.Info("proto.Marshal() failed:", err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
log.Info("proto.Marshal() msg len", len(msg))
|
|
||||||
body, err := f.HttpPost(url, msg)
|
|
||||||
if err != nil {
|
|
||||||
log.Info("httpPost() failed:", err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
test := strings.TrimSpace(string(body))
|
|
||||||
lines := strings.Split(test, "\n")
|
|
||||||
count := 0
|
|
||||||
for _, line := range lines {
|
|
||||||
log.Info("got back:", line)
|
|
||||||
count += 1
|
|
||||||
}
|
|
||||||
log.Info("Total patches:", count)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ package forgepb
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"go.wit.com/log"
|
"go.wit.com/log"
|
||||||
|
@ -25,3 +26,40 @@ func (f *Forge) SendPatchSet(pset *Patchset) error {
|
||||||
|
|
||||||
return errors.New("don't know how to send yet")
|
return errors.New("don't know how to send yet")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *Forge) SubmitDevelPatchSet(name string) (*Patchset, error) {
|
||||||
|
pset, err := f.MakeDevelPatchSet(name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if err := f.submitPatchset(pset); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return pset, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *Forge) submitPatchset(pset *Patchset) error {
|
||||||
|
var url string
|
||||||
|
url = forgeURL + "patchset"
|
||||||
|
msg, err := pset.Marshal()
|
||||||
|
if err != nil {
|
||||||
|
log.Info("proto.Marshal() failed:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
log.Info("proto.Marshal() msg len", len(msg))
|
||||||
|
body, err := f.HttpPost(url, msg)
|
||||||
|
if err != nil {
|
||||||
|
log.Info("httpPost() failed:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
test := strings.TrimSpace(string(body))
|
||||||
|
lines := strings.Split(test, "\n")
|
||||||
|
count := 0
|
||||||
|
for _, line := range lines {
|
||||||
|
log.Info("got back:", line)
|
||||||
|
count += 1
|
||||||
|
}
|
||||||
|
log.Info("Total patches:", count)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -77,6 +77,7 @@ message Patchset { // `autogenpb:mars
|
||||||
string endBranchHash = 11; //
|
string endBranchHash = 11; //
|
||||||
string state = 12; // the state of the patch
|
string state = 12; // the state of the patch
|
||||||
string uuid = 13; // `autogenpb:sort` `autogenpb:unique`
|
string uuid = 13; // `autogenpb:sort` `autogenpb:unique`
|
||||||
|
string hostname = 14; //
|
||||||
}
|
}
|
||||||
|
|
||||||
message Patchsets { // `autogenpb:marshal` `autogenpb:gui`
|
message Patchsets { // `autogenpb:marshal` `autogenpb:gui`
|
||||||
|
|
Loading…
Reference in New Issue