@Override public List<CloudVmInstanceStatus> check(AuthenticatedContext ac, List<CloudInstance> vms) { List<CloudVmInstanceStatus> statuses = new ArrayList<>(); AzureRMClient azureRMClient = armClient.getClient(ac.getCloudCredential()); String stackName = armTemplateUtils.getStackName(ac.getCloudContext()); for (CloudInstance vm : vms) { try { Map<String, Object> virtualMachine = azureRMClient.getVirtualMachineInstanceView(stackName, vm.getInstanceId()); List<Map<String, Object>> vmStatuses = (List) virtualMachine.get("statuses"); for (Map<String, Object> vmStatuse : vmStatuses) { String statusCode = vmStatuse.get("code").toString(); if (statusCode.startsWith("PowerState")) { statusCode = statusCode.replace("PowerState/", ""); statuses.add(new CloudVmInstanceStatus(vm, ArmInstanceStatus.get(statusCode))); break; } } } catch (Exception e) { statuses.add(new CloudVmInstanceStatus(vm, InstanceStatus.TERMINATED)); } } return statuses; }
@Override public List<CloudVmInstanceStatus> stop( AuthenticatedContext ac, List<CloudResource> resources, List<CloudInstance> vms) { AzureRMClient azureRMClient = armClient.getClient(ac.getCloudCredential()); String stackName = armTemplateUtils.getStackName(ac.getCloudContext()); List<CloudVmInstanceStatus> statuses = new ArrayList<>(); for (CloudInstance vm : vms) { try { azureRMClient.stopVirtualMachine(stackName, vm.getInstanceId()); statuses.add(new CloudVmInstanceStatus(vm, InstanceStatus.IN_PROGRESS)); } catch (HttpResponseException e) { statuses.add( new CloudVmInstanceStatus( vm, InstanceStatus.FAILED, e.getResponse().getData().toString())); } catch (Exception e) { statuses.add(new CloudVmInstanceStatus(vm, InstanceStatus.FAILED, e.getMessage())); } } return statuses; }