12
12
// See the License for the specific language governing permissions and
13
13
// limitations under the License.
14
14
15
+ import { stateName as replicasetliststate } from 'replicasetlist/replicasetlist_state' ;
16
+
15
17
/**
16
18
* Controller for the deploy from file directive.
17
19
*
18
20
* @final
19
21
*/
20
22
export default class DeployFromFileController {
21
- /** @ngInject */
22
- constructor ( ) {
23
+ /**
24
+ * @param {!angular.$log } $log
25
+ * @param {!ui.router.$state } $state
26
+ * @param {!angular.$resource } $resource
27
+ * @param {!angular.$q } $q
28
+ * @ngInject */
29
+ constructor ( $log , $state , $resource , $q , errorDialog ) {
23
30
/**
24
31
* It initializes the scope output parameter
25
32
*
@@ -33,5 +40,55 @@ export default class DeployFromFileController {
33
40
* @export {{name:string, content:string}}
34
41
*/
35
42
this . file = { name : '' , content : '' } ;
43
+
44
+ /** @private {!angular.$q} */
45
+ this . q_ = $q ;
46
+
47
+ /** @private {!angular.$resource} */
48
+ this . resource_ = $resource ;
49
+
50
+ /** @private {!angular.$log} */
51
+ this . log_ = $log ;
52
+
53
+ /** @private {!ui.router.$state} */
54
+ this . state_ = $state ;
55
+
56
+ /**
57
+ * TODO (cheld) Set correct type after fixing issue #159
58
+ * @private {!Object}
59
+ */
60
+ this . errorDialog_ = errorDialog ;
61
+ }
62
+
63
+ /**
64
+ * Deploys the application based on the state of the controller.
65
+ *
66
+ * @export
67
+ * @return {angular.$q.Promise }
68
+ */
69
+ deploy ( ) {
70
+ /** @type {!backendApi.AppDeploymentFromFileSpec } */
71
+ let deploymentSpec = {
72
+ name : this . file . name ,
73
+ content : this . file . content ,
74
+ } ;
75
+
76
+ let defer = this . q_ . defer ( ) ;
77
+
78
+ /** @type {!angular.Resource<!backendApi.AppDeploymentFromFileSpec> } */
79
+ let resource = this . resource_ ( 'api/appdeploymentfromfile' ) ;
80
+ resource . save (
81
+ deploymentSpec ,
82
+ ( savedConfig ) => {
83
+ defer . resolve ( savedConfig ) ; // Progress ends
84
+ this . log_ . info ( 'Successfully deployed application: ' , savedConfig ) ;
85
+ this . state_ . go ( replicasetliststate ) ;
86
+ } ,
87
+ ( err ) => {
88
+ defer . reject ( err ) ; // Progress ends
89
+ this . log_ . error ( 'Error deploying application:' , err ) ;
90
+ this . errorDialog_ . open ( 'Deploying file has failed' , err . data ) ;
91
+ } ) ;
92
+ return defer . promise ;
36
93
}
37
94
}
0 commit comments