mirror of
https://github.com/rancher/os.git
synced 2025-07-31 22:47:16 +00:00
fix the ip/cidr, and call updateNetwork
Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au>
This commit is contained in:
parent
0779e13d46
commit
b5fdd63a85
@ -65,6 +65,11 @@ func Main() {
|
||||
if err := SaveCloudConfig(true); err != nil {
|
||||
log.Errorf("Failed to save cloud-config: %v", err)
|
||||
}
|
||||
|
||||
// Apply any newly detected network config.
|
||||
//consider putting this in a separate init phase...
|
||||
cfg = rancherConfig.LoadConfig()
|
||||
network.ApplyNetworkConfig(cfg)
|
||||
}
|
||||
|
||||
func SaveCloudConfig(network bool) error {
|
||||
|
@ -76,6 +76,22 @@ func NewDatasource(root string) *MetadataService {
|
||||
return &MetadataService{Service: metadata.NewDatasource(root, apiVersion, userdataURL, metadataPath, nil)}
|
||||
}
|
||||
|
||||
// Parse IPv4 netmask written in IP form (e.g. "255.255.255.0").
|
||||
func ipmask(addr *Address) string {
|
||||
ip := net.ParseIP(addr.IPAddress)
|
||||
var mask net.IPMask
|
||||
if addr.Netmask != "" {
|
||||
mask = net.IPMask(net.ParseIP(addr.Netmask))
|
||||
} else {
|
||||
mask = net.CIDRMask(addr.Cidr, 32)
|
||||
}
|
||||
ipnet := net.IPNet{
|
||||
IP: ip,
|
||||
Mask: mask,
|
||||
}
|
||||
return ipnet.String()
|
||||
}
|
||||
|
||||
func (ms *MetadataService) FetchMetadata() (metadata datasource.Metadata, err error) {
|
||||
var data []byte
|
||||
var m Metadata
|
||||
@ -114,17 +130,16 @@ func (ms *MetadataService) FetchMetadata() (metadata datasource.Metadata, err er
|
||||
if eth.IPv4 != nil {
|
||||
network.Gateway = eth.IPv4.Gateway
|
||||
|
||||
network.Addresses = append(network.Addresses, fmt.Sprintf("%s/%s", eth.IPv4.IPAddress, eth.IPv4.Netmask))
|
||||
network.Addresses = append(network.Addresses, ipmask(eth.IPv4))
|
||||
if metadata.PublicIPv4 == nil {
|
||||
metadata.PublicIPv4 = net.ParseIP(eth.IPv4.IPAddress)
|
||||
}
|
||||
}
|
||||
if eth.AnchorIPv4 != nil {
|
||||
network.Addresses = append(network.Addresses, fmt.Sprintf("%s/%s", eth.AnchorIPv4.IPAddress, eth.AnchorIPv4.Netmask))
|
||||
|
||||
network.Addresses = append(network.Addresses, ipmask(eth.AnchorIPv4))
|
||||
}
|
||||
if eth.IPv6 != nil {
|
||||
network.Addresses = append(network.Addresses, eth.IPv6.IPAddress)
|
||||
network.Addresses = append(network.Addresses, fmt.Sprintf("%s/%d", eth.IPv6.IPAddress, eth.IPv6.Cidr))
|
||||
network.GatewayIpv6 = eth.IPv6.Gateway
|
||||
if metadata.PublicIPv6 == nil {
|
||||
metadata.PublicIPv6 = net.ParseIP(eth.IPv6.IPAddress)
|
||||
@ -139,17 +154,17 @@ func (ms *MetadataService) FetchMetadata() (metadata datasource.Metadata, err er
|
||||
if eth.IPv4 != nil {
|
||||
network.Gateway = eth.IPv4.Gateway
|
||||
|
||||
network.Addresses = append(network.Addresses, fmt.Sprintf("%s/%s", eth.IPv4.IPAddress, eth.IPv4.Netmask))
|
||||
network.Addresses = append(network.Addresses, ipmask(eth.IPv4))
|
||||
|
||||
if metadata.PrivateIPv4 == nil {
|
||||
metadata.PrivateIPv4 = net.ParseIP(eth.IPv6.IPAddress)
|
||||
}
|
||||
}
|
||||
if eth.AnchorIPv4 != nil {
|
||||
network.Addresses = append(network.Addresses, fmt.Sprintf("%s/%s", eth.AnchorIPv4.IPAddress, eth.AnchorIPv4.Netmask))
|
||||
|
||||
network.Addresses = append(network.Addresses, ipmask(eth.AnchorIPv4))
|
||||
}
|
||||
if eth.IPv6 != nil {
|
||||
network.Address = eth.IPv6.IPAddress
|
||||
network.Addresses = append(network.Addresses, fmt.Sprintf("%s/%d", eth.IPv6.IPAddress, eth.IPv6.Cidr))
|
||||
network.GatewayIpv6 = eth.IPv6.Gateway
|
||||
if metadata.PrivateIPv6 == nil {
|
||||
metadata.PrivateIPv6 = net.ParseIP(eth.IPv6.IPAddress)
|
||||
@ -166,7 +181,6 @@ func (ms *MetadataService) FetchMetadata() (metadata datasource.Metadata, err er
|
||||
for i, key := range m.PublicKeys {
|
||||
metadata.SSHPublicKeys[strconv.Itoa(i)] = key
|
||||
}
|
||||
// metadata.NetworkConfig = m
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -96,8 +96,8 @@ func TestFetchMetadata(t *testing.T) {
|
||||
Interfaces: map[string]netconf.InterfaceConfig{
|
||||
"eth0": netconf.InterfaceConfig{
|
||||
Addresses: []string{
|
||||
"192.168.1.2/255.255.255.0",
|
||||
"fe00::",
|
||||
"192.168.1.2/24",
|
||||
"fe00::/126",
|
||||
},
|
||||
//Netmask: "255.255.255.0",
|
||||
Gateway: "192.168.1.1",
|
||||
|
@ -15,6 +15,7 @@
|
||||
package packet
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strconv"
|
||||
@ -129,6 +130,12 @@ func (ms *MetadataService) FetchMetadata() (metadata datasource.Metadata, err er
|
||||
|
||||
metadata.NetworkConfig = netCfg
|
||||
|
||||
// This is not really the right place - perhaps we should add a call-home function in each datasource to be called after the network is applied
|
||||
//(see the original in cmd/cloudsave/packet)
|
||||
if _, err = http.Post(m.PhoneHomeURL, "application/json", bytes.NewReader([]byte{})); err != nil {
|
||||
log.Errorf("Failed to post to Packet phone home URL: %v", err)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -41,6 +41,7 @@ func parseNetwork(netdata netconf.NetworkConfig, nameservers []net.IP) ([]Interf
|
||||
var interfaces []InterfaceGenerator
|
||||
var addresses []net.IPNet
|
||||
var routes []route
|
||||
// TODO: commented out because we don't use it - should combine with the code we do use...
|
||||
/* for _, netblock := range netdata.Netblocks {
|
||||
addresses = append(addresses, net.IPNet{
|
||||
IP: netblock.Address,
|
||||
|
Loading…
Reference in New Issue
Block a user