mirror of https://github.com/portainer/portainer
88 lines
2.9 KiB
JavaScript
88 lines
2.9 KiB
JavaScript
|
angular.module('portainer.azure')
|
||
|
.controller('AzureCreateContainerInstanceController', ['$q', '$scope', '$state', 'AzureService', 'Notifications',
|
||
|
function ($q, $scope, $state, AzureService, Notifications) {
|
||
|
|
||
|
var allResourceGroups = [];
|
||
|
var allProviders = [];
|
||
|
|
||
|
$scope.state = {
|
||
|
actionInProgress: false,
|
||
|
selectedSubscription: null,
|
||
|
selectedResourceGroup: null
|
||
|
};
|
||
|
|
||
|
$scope.changeSubscription = function() {
|
||
|
var selectedSubscription = $scope.state.selectedSubscription;
|
||
|
updateResourceGroupsAndLocations(selectedSubscription, allResourceGroups, allProviders);
|
||
|
};
|
||
|
|
||
|
$scope.addPortBinding = function() {
|
||
|
$scope.model.Ports.push({ host: '', container: '', protocol: 'TCP' });
|
||
|
};
|
||
|
|
||
|
$scope.removePortBinding = function(index) {
|
||
|
$scope.model.Ports.splice(index, 1);
|
||
|
};
|
||
|
|
||
|
$scope.create = function() {
|
||
|
var model = $scope.model;
|
||
|
var subscriptionId = $scope.state.selectedSubscription.Id;
|
||
|
var resourceGroupName = $scope.state.selectedResourceGroup.Name;
|
||
|
|
||
|
$scope.state.actionInProgress = true;
|
||
|
AzureService.createContainerGroup(model, subscriptionId, resourceGroupName)
|
||
|
.then(function success(data) {
|
||
|
Notifications.success('Container successfully created', model.Name);
|
||
|
$state.go('azure.containerinstances');
|
||
|
})
|
||
|
.catch(function error(err) {
|
||
|
Notifications.error('Failure', err, 'Unable to create container');
|
||
|
})
|
||
|
.finally(function final() {
|
||
|
$scope.state.actionInProgress = false;
|
||
|
});
|
||
|
};
|
||
|
|
||
|
function updateResourceGroupsAndLocations(subscription, resourceGroups, providers) {
|
||
|
$scope.state.selectedResourceGroup = resourceGroups[subscription.Id][0];
|
||
|
$scope.resourceGroups = resourceGroups[subscription.Id];
|
||
|
|
||
|
var currentSubLocations = providers[subscription.Id].Locations;
|
||
|
$scope.model.Location = currentSubLocations[0];
|
||
|
$scope.locations = currentSubLocations;
|
||
|
}
|
||
|
|
||
|
function initView() {
|
||
|
var model = new ContainerGroupDefaultModel();
|
||
|
|
||
|
AzureService.subscriptions()
|
||
|
.then(function success(data) {
|
||
|
var subscriptions = data;
|
||
|
$scope.state.selectedSubscription = subscriptions[0];
|
||
|
$scope.subscriptions = subscriptions;
|
||
|
|
||
|
return $q.all({
|
||
|
resourceGroups: AzureService.resourceGroups(subscriptions),
|
||
|
containerInstancesProviders: AzureService.containerInstanceProvider(subscriptions)
|
||
|
});
|
||
|
})
|
||
|
.then(function success(data) {
|
||
|
var resourceGroups = data.resourceGroups;
|
||
|
allResourceGroups = resourceGroups;
|
||
|
|
||
|
var containerInstancesProviders = data.containerInstancesProviders;
|
||
|
allProviders = containerInstancesProviders;
|
||
|
|
||
|
$scope.model = model;
|
||
|
|
||
|
var selectedSubscription = $scope.state.selectedSubscription;
|
||
|
updateResourceGroupsAndLocations(selectedSubscription, resourceGroups, containerInstancesProviders);
|
||
|
})
|
||
|
.catch(function error(err) {
|
||
|
Notifications.error('Failure', err, 'Unable to retrieve Azure resources');
|
||
|
});
|
||
|
}
|
||
|
|
||
|
initView();
|
||
|
}]);
|