Moving forward we want to use the API from the UI.
To interface with the API, please observe the following best practice:
Do: In your Angular controller or factory, inject the API service.
Don't Use the Rails controller.
This is possible by an API token that is created in addition to a normal session on user login.
Injection example:
ManageIQ.angular.app.controller('arbitrationProfileFormController', ['$scope', '$location', 'arbitrationProfileFormId', 'miqService', 'postService', 'API', 'arbitrationProfileDataFactory', function($scope, $location, arbitrationProfileFormId, miqService, postService, API, arbitrationProfileDataFactory) {
then you can use the API. GET example:
API.get(url).then(function(response) {
$scope.cloud_subnets = response.cloud_subnets;
$scope.security_groups = response.security_groups;
$scope._cloud_subnet = _.find($scope.cloud_subnets, {id: $scope.arbitrationProfileModel.cloud_subnet_id})
$scope._security_group = _.find($scope.security_groups, {id: $scope.arbitrationProfileModel.security_group_id})
})
POST example:
API.post(url, {"action" : "create", "resource" : resource}).then(function (response) {
'use strict';
$scope.deployInProgress = false;
$scope.deployComplete = true;
$scope.deployFailed = response.error !== undefined;
if (response.error) {
if (response.error.message) {
$scope.deployFailureMessage = response.error.message;
}
else {
$scope.deployFailureMessage = __("An unknown error has occurred.");
}
}
});