diff --git a/app/common/directives/app-header.html b/app/common/directives/app-header.html
index d6eb8bc..bc0d744 100644
--- a/app/common/directives/app-header.html
+++ b/app/common/directives/app-header.html
@@ -7,7 +7,7 @@
 <div class="header__functions-wrapper" aria-label="header">
     <div class="logo__wrapper"><img src="assets/images/logo.svg" class="header__logo"  alt="company logo"/></div>
 	<div class="header__server-name">
-		<p class="header__hostname">[[hostname needed]]</p>
+		<p class="header__hostname">{{dataService.hostname}}</p>
 		<p class="header__server-ip courier-bold">BMC IP address {{dataService.server_id}}</p>
 	</div>
     <div class="header__functions">
diff --git a/app/common/directives/app-header.js b/app/common/directives/app-header.js
index a2f510e..6a9493b 100644
--- a/app/common/directives/app-header.js
+++ b/app/common/directives/app-header.js
@@ -15,7 +15,6 @@
 
                     $scope.loadServerStatus = function(){
                         if(!userModel.isLoggedIn()){
-                            //@TODO:some error message?
                             return;
                         }
                         APIUtils.getHostState(function(status){
@@ -28,7 +27,18 @@
                             }
                         });
                     }
+
+                    $scope.loadNetworkInfo = function(){
+                        if(!userModel.isLoggedIn()){
+                            return;
+                        }
+                        APIUtils.getNetworkInfo().then(function(data){
+                            dataService.setNetworkInfo(data);
+                        });
+                    }
+
                     $scope.loadServerStatus();
+                    $scope.loadNetworkInfo();
 
                     $scope.logout = function(){
                         userModel.logout(function(status, error){
@@ -42,6 +52,7 @@
 
                     $scope.refresh = function(){
                         $scope.loadServerStatus();
+                        $scope.loadNetworkInfo();
 
                         //Add flash class to header timestamp on click of refresh
                         var myEl = angular.element( document.querySelector( '.header__refresh' ) );
@@ -54,6 +65,7 @@
 
                     var loginListener = $rootScope.$on('user-logged-in', function(event, arg){
                         $scope.loadServerStatus();
+                        $scope.loadNetworkInfo();
                     });
 
                     $scope.$on('$destroy', function(){
diff --git a/app/common/services/dataService.js b/app/common/services/dataService.js
index 6863621..6640ddb 100644
--- a/app/common/services/dataService.js
+++ b/app/common/services/dataService.js
@@ -31,20 +31,28 @@
             this.path = '';
             this.sensorData = [];
 
+            this.hostname = "";
+            this.mac_address = "";
+
+            this.setNetworkInfo = function(data){
+                this.hostname = data.hostname;
+                this.mac_address = data.mac_address;
+            }
+
             this.setPowerOnState = function(){
                 this.server_state = Constants.HOST_STATE_TEXT.on;
                 this.server_status = Constants.HOST_STATE.on;
-            },
+            }
 
             this.setPowerOffState = function(){
                 this.server_state = Constants.HOST_STATE_TEXT.off;
                 this.server_status = Constants.HOST_STATE.off;
-            },
+            }
 
             this.setBootingState = function(){
                 this.server_state = Constants.HOST_STATE_TEXT.booting;
                 this.server_status = Constants.HOST_STATE.booting;
-            },
+            }
 
             this.setUnreachableState = function(){
                 this.server_state = Constants.HOST_STATE_TEXT.unreachable;
