Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions smartcontract/sdk/go/serviceability/influx_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,11 +154,11 @@ func TestToLineProtocol(t *testing.T) {
"env": "testnet",
},
expected: `links,code=link-01,contributor_pubkey=` + pubKey1B58 +
`,env=testnet,link_type=WAN,owner=` + pubKey1B58 +
`,env=testnet,link_desired_status=pending,link_type=WAN,owner=` + pubKey1B58 +
`,pubkey=` + pubKey1B58 +
`,side_a_iface_name=xe-0/0/0,side_a_pubkey=` + pubKey1B58 +
`,side_z_iface_name=xe-0/0/1,side_z_pubkey=` + pubKey1B58 +
`,status=activated,tunnel_id=42,tunnel_net=172.16.0.0/24 bandwidth=1000,delay_ns=1e+06,delay_override_ns=2e+06,jitter_ns=500000,mtu=1500`,
`,status=activated,tunnel_id=42,tunnel_net=172.16.0.0/24 bandwidth=1000,delay_ns=1e+06,delay_override_ns=2e+06,jitter_ns=500000,link_health="pending",mtu=1500`,
expectErr: false,
},
{
Expand All @@ -185,11 +185,11 @@ func TestToLineProtocol(t *testing.T) {
"env": "testnet",
},
expected: `links,code=link-empty,contributor_pubkey=` + pubKey1B58 +
`,env=testnet,link_type=DZX,owner=` + pubKey1B58 +
`,env=testnet,link_desired_status=pending,link_type=DZX,owner=` + pubKey1B58 +
`,pubkey=` + pubKey1B58 +
`,side_a_pubkey=` + pubKey1B58 +
`,side_z_pubkey=` + pubKey1B58 +
`,status=pending,tunnel_id=7 bandwidth=0,delay_ns=0,delay_override_ns=0,jitter_ns=0,mtu=0`,
`,status=pending,tunnel_id=7 bandwidth=0,delay_ns=0,delay_override_ns=0,jitter_ns=0,link_health="pending",mtu=0`,
expectErr: false,
},
{
Expand Down
177 changes: 140 additions & 37 deletions smartcontract/sdk/go/serviceability/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ const (
DeviceStatusSuspended
DeviceStatusDeleted
DeviceStatusRejected
DeviceStatusDrained
)

func (d DeviceStatus) String() string {
Expand All @@ -131,13 +132,61 @@ func (d DeviceStatus) String() string {
"suspended",
"deleted",
"rejected",
"drained",
}[d]
}

func (d DeviceStatus) MarshalJSON() ([]byte, error) {
return json.Marshal(d.String())
}

type DeviceHealth uint8

const (
DeviceHealthPending DeviceHealth = iota
DeviceHealthReadyForLinks
DeviceHealthReadyForUsers
DeviceHealthImpaired
)

func (d DeviceHealth) String() string {
return [...]string{
"pending",
"ready_for_links",
"ready_for_users",
"impaired",
}[d]
}

func (d DeviceHealth) MarshalJSON() ([]byte, error) {
return json.Marshal(d.String())
}

type DeviceDesiredStatus uint8

const (
DeviceDesiredStatusPending DeviceDesiredStatus = iota
DeviceDesiredStatusActivated = 1
DeviceDesiredStatusDrained = 6
)

func (d DeviceDesiredStatus) String() string {
switch d {
case DeviceDesiredStatusPending:
return "pending"
case DeviceDesiredStatusActivated:
return "activated"
case DeviceDesiredStatusDrained:
return "drained"
default:
return "unknown"
}
}

func (d DeviceDesiredStatus) MarshalJSON() ([]byte, error) {
return json.Marshal(d.String())
}

type InterfaceStatus uint8

const (
Expand Down Expand Up @@ -316,24 +365,26 @@ const CurrentInterfaceVersion = 2

type Device struct {
AccountType AccountType
Owner [32]uint8 `influx:"tag,owner,pubkey"`
Index Uint128 `influx:"-"`
Bump_seed uint8 `influx:"-"`
LocationPubKey [32]uint8 `influx:"tag,location_pubkey,pubkey"`
ExchangePubKey [32]uint8 `influx:"tag,exchange_pubkey,pubkey"`
DeviceType DeviceDeviceType `influx:"tag,device_type"`
PublicIp [4]uint8 `influx:"tag,public_ip,ip"`
Status DeviceStatus `influx:"tag,status"`
Code string `influx:"tag,code"`
DzPrefixes [][5]uint8 `influx:"field,dz_prefixes,cidr"`
MetricsPublisherPubKey [32]uint8 `influx:"tag,metrics_publisher_pubkey,pubkey"`
ContributorPubKey [32]byte `influx:"tag,contributor_pubkey,pubkey"`
MgmtVrf string `influx:"field,mgmt_vrf"`
Interfaces []Interface `influx:"-"`
ReferenceCount uint32 `influx:"field,reference_count"`
UsersCount uint16 `influx:"field,users_count"`
MaxUsers uint16 `influx:"field,max_users"`
PubKey [32]byte `influx:"tag,pubkey,pubkey"`
Owner [32]uint8 `influx:"tag,owner,pubkey"`
Index Uint128 `influx:"-"`
Bump_seed uint8 `influx:"-"`
LocationPubKey [32]uint8 `influx:"tag,location_pubkey,pubkey"`
ExchangePubKey [32]uint8 `influx:"tag,exchange_pubkey,pubkey"`
DeviceType DeviceDeviceType `influx:"tag,device_type"`
PublicIp [4]uint8 `influx:"tag,public_ip,ip"`
Status DeviceStatus `influx:"tag,status"`
Code string `influx:"tag,code"`
DzPrefixes [][5]uint8 `influx:"field,dz_prefixes,cidr"`
MetricsPublisherPubKey [32]uint8 `influx:"tag,metrics_publisher_pubkey,pubkey"`
ContributorPubKey [32]byte `influx:"tag,contributor_pubkey,pubkey"`
MgmtVrf string `influx:"field,mgmt_vrf"`
Interfaces []Interface `influx:"-"`
ReferenceCount uint32 `influx:"field,reference_count"`
UsersCount uint16 `influx:"field,users_count"`
MaxUsers uint16 `influx:"field,max_users"`
DeviceHealth DeviceHealth `influx:"field,device_health"`
DeviceDesiredStatus DeviceDesiredStatus `influx:"tag,device_desired_status"`
PubKey [32]byte `influx:"tag,pubkey,pubkey"`
}

func (d Device) MarshalJSON() ([]byte, error) {
Expand All @@ -350,6 +401,8 @@ func (d Device) MarshalJSON() ([]byte, error) {
ContributorPubKey string `json:"ContributorPubKey"`
PubKey string `json:"PubKey"`
Status string `json:"Status"`
DeviceHealth string `json:"DeviceHealth"`
DeviceDesiredStatus string `json:"DeviceDesiredStatus"`
}{
DeviceAlias: DeviceAlias(d),
}
Expand All @@ -369,6 +422,8 @@ func (d Device) MarshalJSON() ([]byte, error) {
}
jsonDevice.DzPrefixes = prefixes
jsonDevice.Status = d.Status.String()
jsonDevice.DeviceHealth = d.DeviceHealth.String()
jsonDevice.DeviceDesiredStatus = d.DeviceDesiredStatus.String()

return json.Marshal(jsonDevice)
}
Expand Down Expand Up @@ -425,27 +480,71 @@ func (l LinkStatus) MarshalJSON() ([]byte, error) {
return json.Marshal(l.String())
}

type LinkHealth uint8

const (
LinkHealthPending LinkHealth = iota
LinkHealthReadyForService
LinkHealthImpaired
)

func (l LinkHealth) String() string {
return [...]string{
"pending",
"ready_for_service",
"impaired",
}[l]
}

func (l LinkHealth) MarshalJSON() ([]byte, error) {
return json.Marshal(l.String())
}

type LinkDesiredStatus uint8

const (
LinkDesiredStatusPending LinkDesiredStatus = iota
LinkDesiredStatusActivated
LinkDesiredStatusHardDrained
LinkDesiredStatusSoftDrained
)

func (l LinkDesiredStatus) String() string {
return [...]string{
"pending",
"activated",
"hard-drained",
"soft-drained",
}[l]
}

func (l LinkDesiredStatus) MarshalJSON() ([]byte, error) {
return json.Marshal(l.String())
}

type Link struct {
AccountType AccountType
Owner [32]uint8 `influx:"tag,owner,pubkey"`
Index Uint128 `influx:"-"`
Bump_seed uint8 `influx:"-"`
SideAPubKey [32]uint8 `influx:"tag,side_a_pubkey,pubkey"`
SideZPubKey [32]uint8 `influx:"tag,side_z_pubkey,pubkey"`
LinkType LinkLinkType `influx:"tag,link_type"`
Bandwidth uint64 `influx:"field,bandwidth"`
Mtu uint32 `influx:"field,mtu"`
DelayNs uint64 `influx:"field,delay_ns"`
JitterNs uint64 `influx:"field,jitter_ns"`
TunnelId uint16 `influx:"tag,tunnel_id"`
TunnelNet [5]uint8 `influx:"tag,tunnel_net,cidr"`
Status LinkStatus `influx:"tag,status"`
Code string `influx:"tag,code"`
ContributorPubKey [32]uint8 `influx:"tag,contributor_pubkey,pubkey"`
SideAIfaceName string `influx:"tag,side_a_iface_name"`
SideZIfaceName string `influx:"tag,side_z_iface_name"`
DelayOverrideNs uint64 `influx:"field,delay_override_ns"`
PubKey [32]byte `influx:"tag,pubkey,pubkey"`
Owner [32]uint8 `influx:"tag,owner,pubkey"`
Index Uint128 `influx:"-"`
Bump_seed uint8 `influx:"-"`
SideAPubKey [32]uint8 `influx:"tag,side_a_pubkey,pubkey"`
SideZPubKey [32]uint8 `influx:"tag,side_z_pubkey,pubkey"`
LinkType LinkLinkType `influx:"tag,link_type"`
Bandwidth uint64 `influx:"field,bandwidth"`
Mtu uint32 `influx:"field,mtu"`
DelayNs uint64 `influx:"field,delay_ns"`
JitterNs uint64 `influx:"field,jitter_ns"`
TunnelId uint16 `influx:"tag,tunnel_id"`
TunnelNet [5]uint8 `influx:"tag,tunnel_net,cidr"`
Status LinkStatus `influx:"tag,status"`
Code string `influx:"tag,code"`
ContributorPubKey [32]uint8 `influx:"tag,contributor_pubkey,pubkey"`
SideAIfaceName string `influx:"tag,side_a_iface_name"`
SideZIfaceName string `influx:"tag,side_z_iface_name"`
DelayOverrideNs uint64 `influx:"field,delay_override_ns"`
LinkHealth LinkHealth `influx:"field,link_health"`
LinkDesiredStatus LinkDesiredStatus `influx:"tag,link_desired_status"`
PubKey [32]byte `influx:"tag,pubkey,pubkey"`
}

func (l Link) MarshalJSON() ([]byte, error) {
Expand All @@ -460,6 +559,8 @@ func (l Link) MarshalJSON() ([]byte, error) {
ContributorPubKey string `json:"ContributorPubKey"`
PubKey string `json:"PubKey"`
Status string `json:"Status"`
LinkHealth string `json:"LinkHealth"`
LinkDesiredStatus string `json:"LinkDesiredStatus"`
}{
LinkAlias: LinkAlias(l),
}
Expand All @@ -470,6 +571,8 @@ func (l Link) MarshalJSON() ([]byte, error) {
jsonLink.ContributorPubKey = base58.Encode(l.ContributorPubKey[:])
jsonLink.PubKey = base58.Encode(l.PubKey[:])
jsonLink.Status = l.Status.String()
jsonLink.LinkHealth = l.LinkHealth.String()
jsonLink.LinkDesiredStatus = l.LinkDesiredStatus.String()

jsonLink.TunnelNet = onChainNetToString(l.TunnelNet)

Expand Down
10 changes: 10 additions & 0 deletions smartcontract/sdk/go/serviceability/state_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ func TestCustomJSONMarshal(t *testing.T) {
"Bump_seed": 255,
"SideAPubKey": "` + dummyPubKeyB58 + `",
"SideZPubKey": "` + dummyPubKeyB58 + `",
"LinkDesiredStatus":"pending",
"LinkHealth":"pending",
"LinkType": "WAN",
"Bandwidth": 1000000000,
"Mtu": 1500,
Expand Down Expand Up @@ -103,6 +105,8 @@ func TestCustomJSONMarshal(t *testing.T) {
"Bump_seed": 1,
"SideAPubKey": "` + dummyPubKeyB58 + `",
"SideZPubKey": "` + dummyPubKeyB58 + `",
"LinkDesiredStatus":"pending",
"LinkHealth":"pending",
"LinkType": "DZX",
"Bandwidth": 2000000000,
"Mtu": 9000,
Expand Down Expand Up @@ -132,6 +136,8 @@ func TestCustomJSONMarshal(t *testing.T) {
"Bump_seed": 0,
"SideAPubKey": "11111111111111111111111111111111",
"SideZPubKey": "11111111111111111111111111111111",
"LinkDesiredStatus":"pending",
"LinkHealth":"pending",
"LinkType": "",
"Bandwidth": 0,
"Mtu": 0,
Expand Down Expand Up @@ -191,6 +197,8 @@ func TestCustomJSONMarshal(t *testing.T) {
"Bump_seed": 254,
"LocationPubKey": "` + dummyPubKeyB58 + `",
"ExchangePubKey": "` + dummyPubKeyB58 + `",
"DeviceDesiredStatus": "pending",
"DeviceHealth": "pending",
"DeviceType": 1,
"PublicIp": "8.8.8.8",
"Status": "activated",
Expand Down Expand Up @@ -273,6 +281,8 @@ func TestCustomJSONMarshal(t *testing.T) {
"Bump_seed": 254,
"LocationPubKey": "` + dummyPubKeyB58 + `",
"ExchangePubKey": "` + dummyPubKeyB58 + `",
"DeviceDesiredStatus": "pending",
"DeviceHealth": "pending",
"DeviceType": 1,
"PublicIp": "8.8.8.8",
"Status": "activated",
Expand Down
Loading