| /* |
| * Copyright © 2016-2017 European Support Limited |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| 'use strict' |
| |
| const fs = require('fs'); |
| |
| var pathToRoot = process.env.TESTS_BASE; |
| if (!pathToRoot.endsWith("/")) { |
| pathToRoot += "/"; |
| } |
| var envConfig = require(pathToRoot + 'config.json'); |
| var protocol = (process.env.PROTOCOL !== undefined) ? process.env.PROTOCOL : 'https'; |
| |
| try { |
| envConfig = require(pathToRoot + 'environments/dockerConfig.json'); |
| } catch (e) { |
| } |
| |
| function run() { |
| var inputArgs = process.argv.slice(2); |
| let changeConfig = false; |
| if (process.env.K8S_CONF_PATH !== undefined) { |
| console.log('updating with kubernetes services'); |
| let k8sConfig = require(pathToRoot + process.env.K8S_CONF_PATH); |
| mapK8sPod2Docker(k8sConfig, inputArgs[0], inputArgs[1]); |
| changeConfig = true; |
| } else { |
| console.log('not updating at all'); |
| } |
| if (changeConfig) { |
| let data = JSON.stringify(envConfig, null, 2); |
| console.log('writing config file: ' + pathToRoot+'environments/dockerConfig.json'); |
| console.log(data); |
| fs.writeFileSync(pathToRoot+'environments/dockerConfig.json', data); |
| } |
| } |
| |
| function mapK8sPod2Docker(k8sConfig, id, k8sid) { |
| let item = k8sConfig.items.find(item => { |
| if (item.spec !== undefined && item.spec.ports !== undefined) { |
| let spec = item.spec.ports.find(port => { |
| if (port.name === k8sid) { |
| return true; |
| } |
| }); |
| return (spec !== undefined); |
| } else { |
| return false; |
| } |
| }); |
| |
| item.spec.ports.forEach(port => { |
| if (port.name === k8sid) { |
| envConfig[id].port = port.nodePort; |
| let rancherData = JSON.parse(item.metadata.annotations["field.cattle.io/publicEndpoints"]); |
| let address = rancherData.find(address => { |
| return address.port === port.nodePort; |
| }); |
| envConfig[id].port = address.port; |
| envConfig[id].server = address.addresses[0]; |
| envConfig[id].protocol = protocol; |
| envConfig[id].user = process.env.SDC_USER_ID; |
| } |
| }); |
| |
| } |
| |
| run(); |