github.com/kaleido-io/firefly@v0.0.0-20210622132723-8b4b6aacb971/internal/networkmap/register_node.go (about) 1 // Copyright © 2021 Kaleido, Inc. 2 // 3 // SPDX-License-Identifier: Apache-2.0 4 // 5 // Licensed under the Apache License, Version 2.0 (the "License"); 6 // you may not use this file except in compliance with the License. 7 // You may obtain a copy of the License at 8 // 9 // http://www.apache.org/licenses/LICENSE-2.0 10 // 11 // Unless required by applicable law or agreed to in writing, software 12 // distributed under the License is distributed on an "AS IS" BASIS, 13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 // See the License for the specific language governing permissions and 15 // limitations under the License. 16 17 package networkmap 18 19 import ( 20 "context" 21 22 "github.com/kaleido-io/firefly/internal/config" 23 "github.com/kaleido-io/firefly/internal/i18n" 24 "github.com/kaleido-io/firefly/pkg/fftypes" 25 ) 26 27 func (nm *networkMap) RegisterNode(ctx context.Context) (msg *fftypes.Message, err error) { 28 29 node := &fftypes.Node{ 30 ID: fftypes.NewUUID(), 31 Created: fftypes.Now(), 32 Owner: config.GetString(config.OrgIdentity), 33 Name: config.GetString(config.NodeName), 34 Description: config.GetString(config.NodeDescription), 35 } 36 if node.Name == "" { 37 node.Name = config.GetString(config.OrgIdentity) 38 } 39 if node.Owner == "" || node.Name == "" { 40 return nil, i18n.NewError(ctx, i18n.MsgNodeAndOrgIDMustBeSet) 41 } 42 43 node.DX.Peer, node.DX.Endpoint, err = nm.exchange.GetEndpointInfo(ctx) 44 if err != nil { 45 return nil, err 46 } 47 48 err = node.Validate(ctx, false) 49 if err != nil { 50 return nil, err 51 } 52 53 if err = nm.findOrgsToRoot(ctx, "node", node.Name, node.Owner); err != nil { 54 return nil, err 55 } 56 57 signingIdentity, err := nm.identity.Resolve(ctx, node.Owner) 58 if err != nil { 59 return nil, i18n.WrapError(ctx, err, i18n.MsgInvalidSigningIdentity) 60 } 61 62 return nm.broadcast.BroadcastDefinition(ctx, node, signingIdentity, fftypes.SystemTagDefineNode) 63 }