1717 */ 
1818package  org .apache .hadoop .ozone .protocol .commands ;
1919
20- import  com .google .common .base .Preconditions ;
20+ import  com .google .common .base .Strings ;
21+ import  org .apache .hadoop .hdds .protocol .DatanodeDetails ;
2122import  org .apache .hadoop .hdds .protocol .proto 
2223    .StorageContainerDatanodeProtocolProtos .SCMRegisteredResponseProto ;
2324import  org .apache .hadoop .hdds .protocol .proto 
2829 * Response to Datanode Register call. 
2930 */ 
3031public  class  RegisteredCommand  {
31-   private  String  datanodeUUID ;
3232  private  String  clusterID ;
3333  private  ErrorCode  error ;
34-   private  String  hostname ;
35-   private  String  ipAddress ;
34+   private  DatanodeDetails  datanode ;
3635
37-   public  RegisteredCommand (final  ErrorCode  error , final  String   datanodeUUID ,
36+   public  RegisteredCommand (final  ErrorCode  error , final  DatanodeDetails   node ,
3837      final  String  clusterID ) {
39-     this (error , datanodeUUID , clusterID , null , null );
40-   }
41-   public  RegisteredCommand (final  ErrorCode  error , final  String  datanodeUUID ,
42-       final  String  clusterID , final  String  hostname , final  String  ipAddress ) {
43-     this .datanodeUUID  = datanodeUUID ;
38+     this .datanode  = node ;
4439    this .clusterID  = clusterID ;
4540    this .error  = error ;
46-     this .hostname  = hostname ;
47-     this .ipAddress  = ipAddress ;
4841  }
4942
5043  /** 
@@ -57,12 +50,12 @@ public static Builder newBuilder() {
5750  }
5851
5952  /** 
60-    * Returns datanode UUID . 
53+    * Returns datanode. 
6154   * 
62-    * @return - Datanode ID . 
55+    * @return - Datanode. 
6356   */ 
64-   public  String   getDatanodeUUID () {
65-     return  datanodeUUID ;
57+   public  DatanodeDetails   getDatanode () {
58+     return  datanode ;
6659  }
6760
6861  /** 
@@ -83,79 +76,54 @@ public ErrorCode getError() {
8376    return  error ;
8477  }
8578
86-   /** 
87-    * Returns the hostname. 
88-    * 
89-    * @return - hostname 
90-    */ 
91-   public  String  getHostName () {
92-     return  hostname ;
93-   }
94- 
95-   /** 
96-    * Returns the ipAddress of the dataNode. 
97-    */ 
98-   public  String  getIpAddress () {
99-     return  ipAddress ;
100-   }
101- 
10279  /** 
10380   * Gets the protobuf message of this object. 
10481   * 
10582   * @return A protobuf message. 
10683   */ 
107-   public  byte []  getProtoBufMessage () {
84+   public  SCMRegisteredResponseProto  getProtoBufMessage () {
10885    SCMRegisteredResponseProto .Builder  builder  =
10986        SCMRegisteredResponseProto .newBuilder ()
87+             // TODO : Fix this later when we have multiple SCM support. 
88+             // .setAddressList(addressList) 
11089            .setClusterID (this .clusterID )
111-             .setDatanodeUUID (this .datanodeUUID )
90+             .setDatanodeUUID (this .datanode . getUuidString () )
11291            .setErrorCode (this .error );
113-     if  (hostname  != null  && ipAddress  != null ) {
114-       builder .setHostname (hostname ).setIpAddress (ipAddress );
92+     if  (!Strings .isNullOrEmpty (datanode .getHostName ())) {
93+       builder .setHostname (datanode .getHostName ());
94+     }
95+     if  (!Strings .isNullOrEmpty (datanode .getIpAddress ())) {
96+       builder .setIpAddress (datanode .getIpAddress ());
97+     }
98+     if  (!Strings .isNullOrEmpty (datanode .getNetworkName ())) {
99+       builder .setNetworkName (datanode .getNetworkName ());
115100    }
116-     return  builder .build ().toByteArray ();
101+     if  (!Strings .isNullOrEmpty (datanode .getNetworkLocation ())) {
102+       builder .setNetworkLocation (datanode .getNetworkLocation ());
103+     }
104+ 
105+     return  builder .build ();
117106  }
118107
119108  /** 
120109   * A builder class to verify all values are sane. 
121110   */ 
122111  public  static  class  Builder  {
123-     private  String   datanodeUUID ;
112+     private  DatanodeDetails   datanode ;
124113    private  String  clusterID ;
125114    private  ErrorCode  error ;
126-     private  String  ipAddress ;
127-     private  String  hostname ;
128115
129116    /** 
130-      * sets UUID . 
117+      * sets datanode details . 
131118     * 
132-      * @param dnUUID  - datanode UUID  
119+      * @param node  - datanode details  
133120     * @return Builder 
134121     */ 
135-     public  Builder  setDatanodeUUID ( String   dnUUID ) {
136-       this .datanodeUUID  = dnUUID ;
122+     public  Builder  setDatanode ( DatanodeDetails   node ) {
123+       this .datanode  = node ;
137124      return  this ;
138125    }
139126
140-     /** 
141-      * Create this object from a Protobuf message. 
142-      * 
143-      * @param response - RegisteredCmdResponseProto 
144-      * @return RegisteredCommand 
145-      */ 
146-     public   RegisteredCommand  getFromProtobuf (SCMRegisteredResponseProto 
147-                                                         response ) {
148-       Preconditions .checkNotNull (response );
149-       if  (response .hasHostname () && response .hasIpAddress ()) {
150-         return  new  RegisteredCommand (response .getErrorCode (),
151-             response .getDatanodeUUID (), response .getClusterID (),
152-             response .getHostname (), response .getIpAddress ());
153-       } else  {
154-         return  new  RegisteredCommand (response .getErrorCode (),
155-             response .getDatanodeUUID (), response .getClusterID ());
156-       }
157-     }
158- 
159127    /** 
160128     * Sets cluster ID. 
161129     * 
@@ -178,38 +146,19 @@ public Builder setErrorCode(ErrorCode errorCode) {
178146      return  this ;
179147    }
180148
181-     /** 
182-      * sets the hostname. 
183-      */ 
184-     public  Builder  setHostname (String  host ) {
185-       this .hostname  = host ;
186-       return  this ;
187-     }
188- 
189-     public  Builder  setIpAddress (String  ipAddr ) {
190-       this .ipAddress  = ipAddr ;
191-       return  this ;
192-     }
193- 
194149    /** 
195150     * Build the command object. 
196151     * 
197152     * @return RegisteredCommand 
198153     */ 
199154    public  RegisteredCommand  build () {
200-       if  ((this .error  == ErrorCode .success ) && (this .datanodeUUID  == null 
201-           || this .datanodeUUID . isEmpty ()) || ( this . clusterID  ==  null 
202-           || this .clusterID . isEmpty ( ))) {
155+       if  ((this .error  == ErrorCode .success ) && (this .datanode  == null 
156+           || Strings . isNullOrEmpty ( this .datanode . getUuidString ())
157+           || Strings . isNullOrEmpty ( this .clusterID ))) {
203158        throw  new  IllegalArgumentException ("On success, RegisteredCommand " 
204159            + "needs datanodeUUID and ClusterID." );
205160      }
206-       if  (hostname  != null  && ipAddress  != null ) {
207-         return  new  RegisteredCommand (this .error , this .datanodeUUID ,
208-             this .clusterID , this .hostname , this .ipAddress );
209-       } else  {
210-         return  new  RegisteredCommand (this .error , this .datanodeUUID ,
211-             this .clusterID );
212-       }
161+       return  new  RegisteredCommand (this .error , this .datanode , this .clusterID );
213162    }
214163  }
215164}
0 commit comments