diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
index 514cacc..a1fad8a 100644
--- a/app/common/services/api-utils.js
+++ b/app/common/services/api-utils.js
@@ -422,33 +422,6 @@
                   });
           return deferred.promise;
         },
-        chassisPowerOn: function(callback) {
-          $http({
-            method: 'POST',
-            url: DataService.getHost() + '/xyz/openbmc_project/state/host0',
-            headers: {
-              'Accept': 'application/json',
-              'Content-Type': 'application/json'
-            },
-            withCredentials: true,
-            data: JSON.stringify({'data': []})
-          })
-              .then(
-                  function(response) {
-                    var json = JSON.stringify(response.data);
-                    var content = JSON.parse(json);
-                    if (callback) {
-                      return callback(content.data.CurrentPowerState);
-                    }
-                  },
-                  function(error) {
-                    if (callback) {
-                      callback(error);
-                    } else {
-                      console.log(error);
-                    }
-                  });
-        },
         chassisPowerOff: function() {
           var deferred = $q.defer();
           $http({
