3 * Copyright 2016 RIFT.IO Inc
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
19 var request
= require('request');
20 var Promise
= require('bluebird');
21 var rp
= require('request-promise');
22 var utils
= require('../../../framework/core/api_utils/utils.js');
23 var constants
= require('../../../framework/core/api_utils/constants.js');
24 var _
= require('underscore');
25 var Cloud
= require('./cloud_account/cloudAccount')
26 var Sdn
= require('./sdn_account/sdnAccount')
27 var ConfigAgent
= require('./config_agent/configAgent')
32 'config-agent': 'config-agent'
34 Accounts
.get = function(req
) {
35 return new Promise(function(resolve
, reject
) {
36 if (req
.params
.type
|| req
.params
.name
) {
38 .then(function(data
) {
41 data
: Object
.assign(data
, {
49 getAll(req
, resolve
, reject
);
53 function getAll(req
, resolve
, reject
) {
58 ]).then(function(result
) {
62 'config-agent': result
[2]
64 ReturnData
.cloud
.type
= 'cloud';
65 ReturnData
.sdn
.type
= 'sdn';
66 ReturnData
['config-agent'].type
= 'config';
77 Accounts
.update
= updateAccount
;
78 Accounts
.create
= updateAccount
;
79 Accounts
.delete = deleteAccount
;
80 Accounts
.refreshAccountConnectionStatus
= refreshAccountConnectionStatus
81 function getAccount(req
) {
82 return new Promise(function(resolve
, reject
) {
84 var api_server
= req
.query
["api_server"];
85 var id
= req
.params
.id
|| req
.params
.name
;
86 var requestHeaders
= {};
87 var type
= nameSpace
[req
.params
.type
];
88 var url
= utils
.confdPort(api_server
) + '/api/operational/' + type
;
89 //SDN model doesn't follow convention
90 if (type
!= 'sdn-account') {
99 id
? constants
.HTTP_HEADERS
.accept
.data
: constants
.HTTP_HEADERS
.accept
.collection
, {
100 'Authorization': req
.get('Authorization')
107 headers
: requestHeaders
,
108 forever
: constants
.FOREVER_ON
,
109 rejectUnauthorized
: false
111 function(error
, response
, body
) {
113 var objKey
= 'rw-' + type
+ ':account';
114 //SDN model doesn't follow convention
115 if (type
== 'sdn-account') {
116 objKey
= 'rw-sdn:sdn-account';
118 if (utils
.validateResponse(type
.toUpperCase() + '.get', error
, response
, body
, resolve
, reject
)) {
120 data
= JSON
.parse(response
.body
);
122 data
= data
.collection
;
127 console
.log('Problem with "' + type
.toUpperCase() + '.get"', e
);
129 err
.statusCode
= 500;
131 error
: 'Problem with "' + type
.toUpperCase() + '.get": ' + e
136 statusCode
: response
.statusCode
,
144 function updateAccount(req
) {
146 var id
= req
.params
.id
|| req
.params
.name
;
147 var api_server
= req
.query
["api_server"];
148 var type
= nameSpace
[req
.params
.type
];
150 var requestHeaders
= {};
152 var url
= utils
.confdPort(api_server
) + '/api/config/' + type
;
155 if (type
== 'sdn-account') {
157 'sdn-account': Array
.isArray(data
) ? data
: [data
]
161 'account': Array
.isArray(data
) ? data
: [data
]
164 console
.log('Creating ' + type
+ ' account: ', createData
);
167 if (type
== 'sdn-account') {
169 createData
['rw-sdn:sdn-account'] = Array
.isArray(data
) ? data
: [data
];
172 url
+= '/account/' + id
;
173 createData
['rw-' + type
+ ':account'] = Array
.isArray(data
) ? data
: [data
];
175 //createData = createData[0];
180 return new Promise(function(resolve
, reject
) {
181 _
.extend(requestHeaders
,
182 constants
.HTTP_HEADERS
.accept
.data
,
183 constants
.HTTP_HEADERS
.content_type
.data
, {
184 'Authorization': req
.get('Authorization')
189 headers
: requestHeaders
,
190 forever
: constants
.FOREVER_ON
,
191 rejectUnauthorized
: false,
193 }, function(error
, response
, body
) {
194 if (utils
.validateResponse(type
.toUpperCase() + '.' + method
, error
, response
, body
, resolve
, reject
)) {
196 statusCode
: response
.statusCode
,
197 data
: JSON
.stringify(response
.body
)
204 function deleteAccount(req
) {
206 var id
= req
.params
.id
|| req
.params
.name
;
207 var api_server
= req
.query
["api_server"];
208 var type
= nameSpace
[req
.params
.type
];
210 var requestHeaders
= {};
212 var url
= utils
.confdPort(api_server
) + '/api/config/' + type
;
213 if (type
== 'sdn-account') {
216 url
+= '/account/' + id
;
218 return new Promise(function(resolve
, reject
) {
219 _
.extend(requestHeaders
,
220 constants
.HTTP_HEADERS
.accept
.data
,
221 constants
.HTTP_HEADERS
.content_type
.data
, {
222 'Authorization': req
.get('Authorization')
227 headers
: requestHeaders
,
228 forever
: constants
.FOREVER_ON
,
229 rejectUnauthorized
: false,
230 }, function(error
, response
, body
) {
231 if (utils
.validateResponse(type
.toUpperCase() + '.DELETE', error
, response
, body
, resolve
, reject
)) {
233 statusCode
: response
.statusCode
,
234 data
: JSON
.stringify(response
.body
)
241 function refreshAccountConnectionStatus (req
) {
242 var api_server
= req
.query
['api_server'];
243 var Name
= req
.params
.name
;
244 var Type
= req
.params
.type
;
250 label
: 'sdn-account',
251 rpc
: 'update-sdn-status'
254 label
: 'cfg-agent-account',
255 rpc
: 'update-cfg-agent-status'
258 label
: 'cloud-account',
259 rpc
: 'update-cloud-status'
262 jsonData
.input
[rpcInfo
[Type
].label
] = Name
;
263 var headers
= _
.extend({},
264 constants
.HTTP_HEADERS
.accept
.data
,
265 constants
.HTTP_HEADERS
.content_type
.data
, {
266 'Authorization': req
.get('Authorization')
269 return new Promise(function(resolve
, reject
) {
272 uri
: utils
.confdPort(api_server
) + '/api/operations/' + rpcInfo
[Type
].rpc
,
275 forever
: constants
.FOREVER_ON
,
276 rejectUnauthorized
: false,
278 }, function(error
, response
, body
) {
279 if (utils
.validateResponse('RPC.refreshAccountConnectionStatus', error
, response
, body
, resolve
, reject
)) {
282 statusCode
: response
.statusCode
,
287 }).catch(function(error
) {
288 console
.log('Error refreshing account info');
292 module
.exports
= Accounts
;