Merge pull request #735 from ayyoob/new-master

fixed device stats page loading issue
4.x.x
Amal Gunatilake 8 years ago committed by GitHub
commit b277777728

@ -107,42 +107,4 @@ public interface DeviceTypePublisherAdminService {
required = true) required = true)
@PathParam("type") String type); @PathParam("type") String type);
@GET
@Path("/deploy/{type}/status")
@ApiOperation(
httpMethod = "GET",
value = "Check the status of device type artifact\n",
notes = "This is an API that can be used to check the status of the artifact",
response = Response.class,
tags = "Devicetype Status Service",
extensions = {
@Extension(properties = {
@ExtensionProperty(name = Constants.SCOPE, value = "perm:devicetype:deployment")
})
})
@ApiResponses(value = {
@ApiResponse(
code = 201,
message = "OK. \n Successfully deployed the artifacts.",
response = Response.class),
@ApiResponse(
code = 400,
message = "Bad Request. \n Invalid request or validation error.",
response = ErrorResponse.class),
@ApiResponse(
code = 404,
message = "Not Found. \n The specified resource does not exist."),
@ApiResponse(
code = 415,
message = "Unsupported media type. \n The entity of the request was in a not supported format."),
@ApiResponse(
code = 500,
message = "Internal Server Error. \n Server error occurred while checking the authorization" +
" for a specified set of devices.",
response = ErrorResponse.class)
})
Response getStatus(@PathParam("type") String deviceType);
} }

@ -185,14 +185,6 @@ public class DeviceTypePublisherAdminServiceImpl implements DeviceTypePublisherA
if (receiverFileList != null) { if (receiverFileList != null) {
publishDynamicEventReceivers(type, tenantDomain, receiverFileList); publishDynamicEventReceivers(type, tenantDomain, receiverFileList);
} }
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
Registry registry = DeviceMgtAPIUtils.getRegistryService().getConfigSystemRegistry(tenantId);
if (!registry.resourceExists(DEFAULT_RESOURCE_LOCATION + type + ".exist")) {
Resource resource = new ResourceImpl();
resource.setContent("</exist>");
resource.setMediaType(MEDIA_TYPE_XML);
registry.put(DEFAULT_RESOURCE_LOCATION + type + ".exist", resource);
}
return Response.status(Response.Status.CREATED).entity("\"OK. \\n Successfully uploaded the artifacts.\"") return Response.status(Response.Status.CREATED).entity("\"OK. \\n Successfully uploaded the artifacts.\"")
.build(); .build();
} catch (AxisFault e) { } catch (AxisFault e) {
@ -227,6 +219,7 @@ public class DeviceTypePublisherAdminServiceImpl implements DeviceTypePublisherA
if (directory.isDirectory() && directory.exists()) { if (directory.isDirectory() && directory.exists()) {
UploadedFileItem[] uploadedFileItems = loadCappFromFileSystem(type); UploadedFileItem[] uploadedFileItems = loadCappFromFileSystem(type);
if (uploadedFileItems.length > 0) { if (uploadedFileItems.length > 0) {
if (DEVICE_MANAGEMENT_TYPE.equals(type.toLowerCase())) {
carbonAppUploaderStub = new CarbonAppUploaderStub(Utils.replaceSystemProperty( carbonAppUploaderStub = new CarbonAppUploaderStub(Utils.replaceSystemProperty(
IOT_MGT_URL)); IOT_MGT_URL));
Options appUploaderOptions = carbonAppUploaderStub._getServiceClient().getOptions(); Options appUploaderOptions = carbonAppUploaderStub._getServiceClient().getOptions();
@ -235,15 +228,16 @@ public class DeviceTypePublisherAdminServiceImpl implements DeviceTypePublisherA
} }
appUploaderOptions.setProperty(HTTPConstants.HTTP_HEADERS, list); appUploaderOptions.setProperty(HTTPConstants.HTTP_HEADERS, list);
appUploaderOptions.setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER appUploaderOptions.setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER
, new Protocol(DEFAULT_HTTP_PROTOCOL, (ProtocolSocketFactory) new SSLProtocolSocketFactory , new Protocol(DEFAULT_HTTP_PROTOCOL,
(sslContext), Integer.parseInt(Utils.replaceSystemProperty(IOT_MGT_PORT)))); (ProtocolSocketFactory) new SSLProtocolSocketFactory
(sslContext), Integer.parseInt(Utils.replaceSystemProperty(
IOT_MGT_PORT))));
carbonAppUploaderStub._getServiceClient().setOptions(appUploaderOptions); carbonAppUploaderStub._getServiceClient().setOptions(appUploaderOptions);
carbonAppUploaderStub.uploadApp(uploadedFileItems); carbonAppUploaderStub.uploadApp(uploadedFileItems);
} else {
if (!DEVICE_MANAGEMENT_TYPE.equals(type.toLowerCase())) {
carbonAppUploaderStub = new CarbonAppUploaderStub(Utils.replaceSystemProperty(DAS_URL)); carbonAppUploaderStub = new CarbonAppUploaderStub(Utils.replaceSystemProperty(DAS_URL));
appUploaderOptions = carbonAppUploaderStub._getServiceClient().getOptions(); Options appUploaderOptions = carbonAppUploaderStub._getServiceClient().getOptions();
if (appUploaderOptions == null) { if (appUploaderOptions == null) {
appUploaderOptions = new Options(); appUploaderOptions = new Options();
} }
@ -266,27 +260,6 @@ public class DeviceTypePublisherAdminServiceImpl implements DeviceTypePublisherA
} }
} }
@GET
@Path("/deploy/{type}/status")
@Override
public Response getStatus(@PathParam("type") String deviceType) {
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
Registry registry;
try {
registry = DeviceMgtAPIUtils.getRegistryService().getConfigSystemRegistry(tenantId);
if (registry.resourceExists(DEFAULT_RESOURCE_LOCATION + deviceType + ".exist")) {
return Response.status(Response.Status.OK).entity("Exist").build();
} else {
return Response.status(Response.Status.NO_CONTENT).entity("Does not Exist").build();
}
} catch (RegistryException e) {
log.error("Registry failed to load." + e.getMessage(), e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
"\"Error, Artifact status check has failed\"").build();
}
}
private void publishDynamicEventReceivers(String deviceType, String tenantDomain, List<String> receiversList) private void publishDynamicEventReceivers(String deviceType, String tenantDomain, List<String> receiversList)
throws IOException, UserStoreException, JWTClientException { throws IOException, UserStoreException, JWTClientException {

@ -612,6 +612,9 @@ var userModule = function () {
if (publicMethods.isAuthorized("/permission/admin/device-mgt/devices/change-status")) { if (publicMethods.isAuthorized("/permission/admin/device-mgt/devices/change-status")) {
permissions["CHANGE_DEVICE_STATUS"] = true; permissions["CHANGE_DEVICE_STATUS"] = true;
} }
if (publicMethods.isAuthorized("/permission/admin/device-mgt")) {
permissions["IS_ADMIN"] = true;
}
return permissions; return permissions;
}; };

@ -456,15 +456,18 @@ $(document).ready(function () {
function statisticLoad(redirectUrl) { function statisticLoad(redirectUrl) {
var contentType = "application/json"; var contentType = "application/json";
var uri = backendEndBasePath + "/admin/devicetype/deploy/device_management/status";
var defaultStatusClasses = "fw fw-stack-1x"; var defaultStatusClasses = "fw fw-stack-1x";
var content = $("#statistic-response-template").find(".content"); var content = $("#statistic-response-template").find(".content");
var title = content.find("#title"); var title = content.find("#title");
var statusIcon = content.find("#status-icon"); var statusIcon = content.find("#status-icon");
invokerUtil.get(uri, function (data, textStatus, jqXHR) { $.ajax({
if (jqXHR.status == 204) { url: redirectUrl,
type: "GET",
success: function () {
window.location.href = redirectUrl;
},
error: function() {
var urix = backendEndBasePath + "/admin/devicetype/deploy/device_management"; var urix = backendEndBasePath + "/admin/devicetype/deploy/device_management";
var device = {}; var device = {};
invokerUtil.post(urix, device, function (data) { invokerUtil.post(urix, device, function (data) {
@ -472,25 +475,39 @@ function statisticLoad(redirectUrl) {
statusIcon.attr("class", defaultStatusClasses + " fw-check"); statusIcon.attr("class", defaultStatusClasses + " fw-check");
$(modalPopupContent).html(content.html()); $(modalPopupContent).html(content.html());
showPopup(); showPopup();
setTimeout(function () { poll(redirectUrl);
hidePopup();
// location.reload(true);
location.href = redirectUrl;
}, 20000);
}, function (jqXHR) { }, function (jqXHR) {
title.html("Failed to deploy artifacts, Please contact administrator."); title.html("Failed to deploy artifacts, Please contact administrator.");
statusIcon.attr("class", defaultStatusClasses + " fw-error"); statusIcon.attr("class", defaultStatusClasses + " fw-error");
$(modalPopupContent).html(content.html()); $(modalPopupContent).html(content.html());
showPopup(); showPopup();
}, contentType); }, contentType);
}
});
}
var pollingCount = 15;
function poll(portalUrl) {
var content = $("#statistic-response-template").find(".content");
var title = content.find("#title");
var defaultStatusClasses = "fw fw-stack-1x";
var statusIcon = content.find("#status-icon");
$.ajax({
url: portalUrl,
type: "GET",
success: function (data) {
window.location.href = portalUrl;
},
dataType: "json",
error: setTimeout(function () {
pollingCount = pollingCount - 1;
if (pollingCount > 0) {
poll(portalUrl);
} else { } else {
location.href = redirectUrl; window.location.href = portalUrl;
} }
}, function (jqXHR) { }, 5000),
title.html("Failed to connect with server, Please contact administrator."); timeout: 5000
statusIcon.attr("class", defaultStatusClasses + " fw-error"); });
$(modalPopupContent).html(content.html());
showPopup();
}, contentType);
} }

Loading…
Cancel
Save