Created
May 22, 2018 17:10
-
-
Save khangngu/6eef06a21e64d65b4d09eee55eabeec9 to your computer and use it in GitHub Desktop.
sdc-server setup errors
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
HTTP/1.1 200 OK | |
request-id: 3a0c2beb-f025-4b0e-9920-ef11f1fa0702 | |
Content-Type: application/json | |
Content-Length: 23872 | |
Access-Control-Allow-Origin: * | |
Access-Control-Allow-Headers: Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, Api-Version, Response-Time | |
Access-Control-Allow-Methods: GET, HEAD | |
Access-Control-Expose-Headers: Api-Version, Request-Id, Response-Time | |
Connection: Keep-Alive | |
Content-MD5: U1sDuq5ehF7y6b5x/97Raw== | |
Date: Tue, 22 May 2018 17:05:08 GMT | |
Server: WorkflowAPI | |
Response-Time: 15 | |
x-request-id: c0626481-bd3b-4262-bf44-67e5f7a01f9f | |
x-response-time: 16 | |
x-server-name: 5519fac8-94de-4ffc-b8bb-3113f9474d22 | |
{ | |
"execution": "failed", | |
"chain_results": [ | |
{ | |
"result": "All parameters OK!", | |
"error": "", | |
"name": "cnapi.validate_params", | |
"started_at": "2018-05-22T16:19:52.089Z", | |
"finished_at": "2018-05-22T16:19:52.145Z" | |
}, | |
{ | |
"result": "No nics specified", | |
"error": "", | |
"name": "napi.validate_nic_params", | |
"started_at": "2018-05-22T16:19:52.287Z", | |
"finished_at": "2018-05-22T16:19:52.327Z" | |
}, | |
{ | |
"result": "4 nics retrieved from NAPI", | |
"error": "", | |
"name": "napi.get_current_nics", | |
"started_at": "2018-05-22T16:19:52.467Z", | |
"finished_at": "2018-05-22T16:19:52.709Z" | |
}, | |
{ | |
"result": "No nics to get changes for", | |
"error": "", | |
"name": "napi.apply_nic_updates", | |
"started_at": "2018-05-22T16:19:52.836Z", | |
"finished_at": "2018-05-22T16:19:52.873Z" | |
}, | |
{ | |
"result": "No nics to update", | |
"error": "", | |
"name": "napi.update_nics", | |
"started_at": "2018-05-22T16:19:53.012Z", | |
"finished_at": "2018-05-22T16:19:53.050Z" | |
}, | |
{ | |
"result": "OK", | |
"error": "", | |
"name": "cnapi.mark_as_setting_up", | |
"started_at": "2018-05-22T16:19:53.127Z", | |
"finished_at": "2018-05-22T16:19:53.248Z" | |
}, | |
{ | |
"result": "OK", | |
"error": "", | |
"name": "cnapi.fetch_setup_files", | |
"started_at": "2018-05-22T16:19:53.337Z", | |
"finished_at": "2018-05-22T16:19:53.596Z" | |
}, | |
{ | |
"result": "OK", | |
"error": "", | |
"name": "cnapi.execute_joysetup_script", | |
"started_at": "2018-05-22T16:19:53.677Z", | |
"finished_at": "2018-05-22T16:20:49.589Z" | |
}, | |
{ | |
"result": "OK", | |
"error": "", | |
"name": "cnapi.execute_agentsetup_script", | |
"started_at": "2018-05-22T16:20:49.681Z", | |
"finished_at": "2018-05-22T16:23:34.705Z" | |
}, | |
{ | |
"result": "No nics to update", | |
"error": "", | |
"name": "cnapi.update_nics", | |
"started_at": "2018-05-22T16:23:34.767Z", | |
"finished_at": "2018-05-22T16:23:34.810Z" | |
}, | |
{ | |
"result": "No tasks to poll", | |
"error": "", | |
"name": "cnapi.poll_tasks", | |
"started_at": "2018-05-22T16:23:34.887Z", | |
"finished_at": "2018-05-22T16:23:34.926Z" | |
}, | |
{ | |
"result": "OK", | |
"error": "", | |
"name": "cnapi.touch_setup_complete", | |
"started_at": "2018-05-22T16:23:35.007Z", | |
"finished_at": "2018-05-22T16:23:35.251Z" | |
}, | |
{ | |
"result": "OK", | |
"error": "", | |
"name": "cnapi.refresh_server_sysinfo", | |
"started_at": "2018-05-22T16:23:35.337Z", | |
"finished_at": "2018-05-22T16:23:38.533Z" | |
}, | |
{ | |
"result": "OK", | |
"error": "", | |
"name": "cnapi.reboot_server", | |
"started_at": "2018-05-22T16:23:38.606Z", | |
"finished_at": "2018-05-22T16:23:38.830Z" | |
}, | |
{ | |
"result": "", | |
"error": "task timeout error", | |
"name": "cnapi.wait_for_reboot", | |
"started_at": "2018-05-22T16:23:38.967Z", | |
"finished_at": "2018-05-22T16:43:38.900Z" | |
} | |
], | |
"params": { | |
"nic_action": "update", | |
"amqp_host": "rabbitmq.qalab.joyent.us", | |
"cnapi_url": "http://10.99.99.22", | |
"assets_url": "http://10.99.99.8", | |
"server_uuid": "78d2a308-983c-6bd3-f662-e157c96d5346", | |
"overprovision_ratio": 1, | |
"hostname": "qacn1", | |
"server_nics": [ | |
{ | |
"belongs_to_type": "server", | |
"belongs_to_uuid": "78d2a308-983c-6bd3-f662-e157c96d5346", | |
"mac": "42:98:51:62:ff:d4", | |
"owner_uuid": "930896af-bf8c-48d4-885c-6573a94b1853", | |
"primary": false, | |
"state": "provisioning", | |
"created_timestamp": "2018-05-22T16:15:49.129Z", | |
"modified_timestamp": "2018-05-22T16:15:49.129Z" | |
}, | |
{ | |
"belongs_to_type": "server", | |
"belongs_to_uuid": "78d2a308-983c-6bd3-f662-e157c96d5346", | |
"mac": "62:27:de:d0:67:38", | |
"owner_uuid": "930896af-bf8c-48d4-885c-6573a94b1853", | |
"primary": false, | |
"state": "provisioning", | |
"created_timestamp": "2018-05-22T16:15:49.129Z", | |
"modified_timestamp": "2018-05-22T16:15:49.129Z" | |
}, | |
{ | |
"belongs_to_type": "server", | |
"belongs_to_uuid": "78d2a308-983c-6bd3-f662-e157c96d5346", | |
"mac": "62:69:75:b6:a6:7b", | |
"owner_uuid": "930896af-bf8c-48d4-885c-6573a94b1853", | |
"primary": false, | |
"state": "provisioning", | |
"created_timestamp": "2018-05-22T16:15:49.129Z", | |
"modified_timestamp": "2018-05-22T16:15:49.129Z" | |
}, | |
{ | |
"belongs_to_type": "server", | |
"belongs_to_uuid": "78d2a308-983c-6bd3-f662-e157c96d5346", | |
"mac": "32:ea:a7:72:82:bf", | |
"owner_uuid": "930896af-bf8c-48d4-885c-6573a94b1853", | |
"primary": false, | |
"state": "provisioning", | |
"created_timestamp": "2018-05-22T16:12:39.145Z", | |
"modified_timestamp": "2018-05-22T16:15:48.940Z", | |
"ip": "10.222.222.9", | |
"mtu": 1500, | |
"netmask": "255.255.255.0", | |
"nic_tag": "admin_rack99", | |
"resolvers": [ | |
"10.99.99.11" | |
], | |
"vlan_id": 0, | |
"routes": { | |
"10.99.99.0/24": "10.222.222.1" | |
}, | |
"network_uuid": "57dd350b-dfaf-4b0e-b6a5-a8f76f47768a", | |
"nic_tags_provided": [ | |
"admin_rack99" | |
] | |
} | |
] | |
}, | |
"server_uuid": "78d2a308-983c-6bd3-f662-e157c96d5346", | |
"target": "78d2a308-983c-6bd3-f662-e157c96d5346", | |
"workflow": "d92b38ad-e20c-48b4-aa75-ebc726dfe11b", | |
"exec_after": null, | |
"num_attempts": 0, | |
"name": "server-setup-1.0.3", | |
"version": "1.0.3", | |
"timeout": 7200, | |
"onerror": [ | |
{ | |
"name": "onerror", | |
"body": "function (job, cb) {\n cb(new Error('Error executing job'));\n }" | |
} | |
], | |
"chain": [ | |
{ | |
"name": "cnapi.validate_params", | |
"timeout": 10, | |
"retry": 1, | |
"body": "function validateParams(job, callback) {\n if (!job.params.server_uuid) {\n callback(new Error('Must specify server_uuid'));\n return;\n }\n\n if (!job.params.cnapi_url) {\n callback(new Error('Must specify cnapi_url'));\n return;\n }\n\n if (!job.params.assets_url) {\n callback(new Error('Must specify assets_url'));\n return;\n }\n\n if (!job.params.amqp_host) {\n callback(new Error('Must specify amqp_host'));\n return;\n }\n\n callback(null, 'All parameters OK!');\n}" | |
}, | |
{ | |
"name": "napi.validate_nic_params", | |
"timeout": 10, | |
"retry": 1, | |
"body": "function validateNicParams(job, callback) {\n var filtered = [];\n\n if (!job.params.nics) {\n return callback(null, 'No nics specified');\n }\n\n if (!napiUrl) {\n callback(new Error('No napiUrl workflow parameter'));\n return;\n }\n\n if ((typeof (job.params.nics) !== 'object') ||\n !job.params.nics.hasOwnProperty('length')) {\n return callback(new Error('nics object must be an array'));\n }\n\n for (var n in job.params.nics) {\n var nicObj = job.params.nics[n];\n if (typeof (nicObj) !== 'object' ||\n nicObj.hasOwnProperty('length')) {\n return callback(\n new Error('nics object must be an array of objects'));\n }\n\n if (nicObj.hasOwnProperty('mac') &&\n nicObj.hasOwnProperty('nic_tags_provided')) {\n filtered.push({\n mac: nicObj.mac,\n nic_tags_provided: nicObj.nic_tags_provided\n });\n }\n }\n\n job.params.nics = filtered;\n\n callback(null, 'nic parameters OK!');\n}" | |
}, | |
{ | |
"name": "napi.get_current_nics", | |
"timeout": 120, | |
"retry": 1, | |
"body": "function getServerNics(job, callback) {\n // XXX: if something is set in job.params, return here\n if (!job.params.server_uuid) {\n return callback(new Error('No server_uuid specified'));\n }\n\n var napi = new sdcClients.NAPI({ url: napiUrl });\n napi.listNics({ belongs_to_uuid: job.params.server_uuid },\n function (err, res) {\n if (err) {\n job.log.error(err,\n 'error listing server nics for server: '\n + job.params.server_uuid);\n return callback(err);\n }\n\n\n job.log.debug(res, 'successfully got nics for server: '\n + job.params.server_uuid);\n job.params.server_nics = res;\n\n return callback(null, res.length + ' nics retrieved from NAPI');\n });\n}" | |
}, | |
{ | |
"name": "napi.apply_nic_updates", | |
"timeout": 10, | |
"retry": 1, | |
"body": "function applyNicUpdates(job, callback) {\n if (!job.params.nics || job.params.nics.length === 0) {\n return callback(null, 'No nics to get changes for');\n }\n\n if (!job.params.nic_action) {\n return callback(new Error('No nic action specified'));\n }\n\n if (job.params.nic_action === 'replace') {\n return callback(null, 'replacing nic values');\n }\n\n if (!job.params.server_nics) {\n return callback(new Error('No server nics to update'));\n }\n\n var oldNics = {};\n job.params.server_nics.forEach(function (nic) {\n oldNics[nic.mac] = nic;\n });\n\n job.log.debug(oldNics, 'old nics');\n for (var n in job.params.nics) {\n var newNic = job.params.nics[n];\n if (!newNic.hasOwnProperty('mac') ||\n !oldNics.hasOwnProperty(newNic.mac)) {\n job.log.warn(newNic, 'missing mac or unknown nic');\n continue;\n }\n\n // Only allow updating nic_tags_provided for now\n if (!newNic.hasOwnProperty('nic_tags_provided')) {\n job.log.warn(newNic, 'missing nic_tags_provided');\n continue;\n }\n\n var oldNic = oldNics[newNic.mac];\n\n if (job.params.nic_action === 'delete') {\n var afterDeletes = [];\n\n // No nic tags to begin with, so there's nothing to delete\n if (!oldNic.nic_tags_provided) {\n continue;\n }\n\n oldNic.nic_tags_provided.forEach(function (tag) {\n if (newNic.nic_tags_provided.indexOf(tag) === -1) {\n afterDeletes.push(tag);\n }\n });\n\n oldNic.nic_tags_provided = afterDeletes;\n continue;\n }\n\n if (job.params.nic_action === 'update') {\n newNic.nic_tags_provided.forEach(function (tag) {\n if (!oldNic.nic_tags_provided) {\n oldNic.nic_tags_provided = [];\n }\n\n if (oldNic.nic_tags_provided.indexOf(tag) === -1) {\n oldNic.nic_tags_provided.push(tag);\n }\n });\n }\n }\n\n var newNicParams = [];\n for (var o in oldNics) {\n newNicParams.push({\n mac: o,\n nic_tags_provided: oldNics[o].nic_tags_provided\n });\n }\n\n var msg = 'applied nic ' + job.params.nic_action + 's';\n job.log.info(newNicParams, msg);\n job.params.nics = newNicParams;\n return callback(null, msg);\n}" | |
}, | |
{ | |
"name": "napi.update_nics", | |
"timeout": 120, | |
"retry": 1, | |
"body": "function updateNics(job, callback) {\n if (!job.params.nics || job.params.nics.length === 0) {\n return callback(null, 'No nics to update');\n }\n\n var napi = new sdcClients.NAPI({ url: napiUrl });\n return async.forEach(job.params.nics, function (nic, cb) {\n var mac = nic.mac;\n napi.updateNic(mac, nic, function (err, res) {\n if (err) {\n job.log.error(err, 'error updating nic: ' + mac);\n return cb(err);\n }\n\n job.log.debug(res, 'successfully updated nic: ' + mac);\n return cb();\n });\n }, function (err) {\n if (err) {\n return callback(err);\n }\n\n return callback(null, 'nics updated in NAPI successfully');\n });\n}" | |
}, | |
{ | |
"name": "cnapi.mark_as_setting_up", | |
"timeout": 10, | |
"retry": 1, | |
"body": "function markServerAsSettingUp(job, callback) {\n var cnapiUrl = job.params.cnapi_url;\n var cnapi = restify.createJsonClient({ url: cnapiUrl});\n var serverUrl = '/servers/' + job.params.server_uuid;\n\n var payload = {\n setting_up: true\n };\n\n cnapi.post(serverUrl, payload, function (error, req, res) {\n if (error) {\n job.log.info('Error setting server as setting_up');\n job.log.info(error.stack.toString());\n callback(error);\n return;\n }\n callback();\n });\n}" | |
}, | |
{ | |
"name": "cnapi.fetch_setup_files", | |
"timeout": 10, | |
"retry": 1, | |
"body": "function fetchSetupFiles(job, callback) {\n var urUrl = '/servers/' + job.params.server_uuid + '/execute';\n var cnapiUrl = job.params.cnapi_url;\n var assetsUrl = job.params.assets_url;\n var cnapi = restify.createJsonClient({ url: cnapiUrl});\n var overprovision_ratio = job.params.overprovision_ratio || '1.0';\n var nodeConfigDir = 'config-' + job.params.server_uuid;\n var diskCfg = '';\n if (job.params.disk_layout) {\n diskCfg += 'echo \"layout=\\'' + job.params.disk_layout + '\\'\"; ';\n }\n if (job.params.hasOwnProperty('disk_cache')) {\n diskCfg += 'echo \"cache=\\'' + job.params.disk_cache + '\\'\"; ';\n }\n if (job.params.hasOwnProperty('disk_spares')) {\n diskCfg += 'echo \"spares=' + job.params.disk_spares + '\"; ';\n }\n\n var script = [\n '#!/bin/bash',\n 'set -o xtrace',\n 'cd /var/tmp',\n 'mkdir /var/tmp/node.config',\n 'mkdir /var/tmp/' + nodeConfigDir,\n '(echo \"overprovision_ratio=\\'' + overprovision_ratio + '\\'\"; ' +\n diskCfg +\n 'curl $1/extra/joysetup/node.config) | tee ' + nodeConfigDir +\n '/node.config node.config/node.config >&-',\n 'curl -O $1/extra/joysetup/joysetup.sh',\n 'curl -O $1/extra/joysetup/agentsetup.sh',\n 'chmod +x *.sh'\n ].join('\\n');\n\n var payload = {\n script: script,\n args: [assetsUrl]\n };\n\n cnapi.post(urUrl, payload, function (error, req, res) {\n if (error) {\n job.log.info('Error fetching setup files: ' + error.message);\n job.log.info(error.stack.toString());\n callback(error);\n return;\n }\n callback();\n });\n}" | |
}, | |
{ | |
"name": "cnapi.execute_joysetup_script", | |
"timeout": 3600, | |
"retry": 1, | |
"body": "function executeJoysetupScript(job, callback) {\n var urUrl = '/servers/' + job.params.server_uuid + '/execute';\n var cnapiUrl = job.params.cnapi_url;\n var cnapi = restify.createJsonClient({ url: cnapiUrl});\n\n var script = [\n '#!/bin/bash',\n 'set -o xtrace',\n 'cd /var/tmp',\n './joysetup.sh'\n ].join('\\n');\n\n var payload = {\n script: script\n };\n\n cnapi.post(urUrl, payload, function (error, req, res) {\n if (error) {\n job.log.info('Error executing joysetup: ' + error.message);\n job.log.info(error.stack.toString());\n callback(error);\n return;\n }\n job.log.info('Successfully executed joysetup script');\n callback();\n });\n}" | |
}, | |
{ | |
"name": "cnapi.execute_agentsetup_script", | |
"timeout": 3600, | |
"retry": 1, | |
"body": "function executeAgentSetupScript(job, callback) {\n var urUrl = '/servers/' + job.params.server_uuid + '/execute';\n var cnapiUrl = job.params.cnapi_url;\n var assetsUrl = job.params.assets_url;\n var cnapi = restify.createJsonClient({ url: cnapiUrl});\n\n var script = [\n '#!/bin/bash',\n 'set -o xtrace',\n 'cd /var/tmp',\n 'echo ASSETS_URL = $ASSETS_URL',\n './agentsetup.sh'\n ].join('\\n');\n\n var payload = {\n script: script,\n env: { ASSETS_URL: assetsUrl }\n };\n\n cnapi.post(urUrl, payload, function (error, req, res) {\n if (error) {\n job.log.info('Error executing agent setup via CNAPI:'\n + error.message);\n job.log.info(error.stack.toString());\n callback(error);\n return;\n }\n callback();\n });\n}" | |
}, | |
{ | |
"name": "cnapi.update_nics", | |
"timeout": 3600, | |
"retry": 1, | |
"body": "function nicUpdate(job, callback) {\n if (!job.params.nics || job.params.nics.length === 0) {\n return callback(null, 'No nics to update');\n }\n\n var cnapi = new sdcClients.CNAPI({ url: cnapiUrl });\n var endpoint = '/servers/' + job.params.server_uuid + '/nics/update';\n job.params.taskIDs = [];\n\n job.log.debug(job.params.nics, 'Updating rules on server \"%s\"',\n job.params.server_uuid);\n\n return cnapi.post(endpoint, { nics: job.params.nics },\n function (err, task) {\n if (err) {\n return callback(err);\n }\n\n job.log.debug(task, 'Server \"%s\": nic update task \"%s\"',\n job.params.server_uuid, task.id);\n job.params.taskIDs.push({ server_uuid: job.params.server_uuid,\n task_id: task.id});\n return callback(null, 'Started nic update task on server');\n });\n}" | |
}, | |
{ | |
"name": "cnapi.poll_tasks", | |
"timeout": 3600, | |
"retry": 1, | |
"body": "function pollTasks(job, callback) {\n if (!job.params.taskIDs || job.params.taskIDs.length === 0) {\n return callback(null, 'No tasks to poll');\n }\n\n var cnapi = new sdcClients.CNAPI({ url: cnapiUrl });\n\n job.params.taskSuccesses = [];\n job.params.taskFailures = [];\n\n return async.forEach(job.params.taskIDs, function (detail, cb) {\n var timeout = null;\n\n function pollOne() {\n cnapi.getTask(detail.task_id, function onCnapi(err, task) {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (err) {\n return cb(err);\n }\n\n job.log.debug(task, 'retrieved task for server \"%s\"',\n detail.server_uuid);\n if (task.status == 'failure') {\n job.params.taskFailures.push(detail);\n return cb(new Error('CNAPI task \"' + detail.task_id\n + '\" failed for server \"' + detail.server_uuid + '\"'));\n }\n\n if (task.status == 'complete') {\n job.params.taskSuccesses.push(detail);\n return cb(null);\n }\n\n timeout = setTimeout(pollOne, 1000);\n });\n }\n\n pollOne();\n }, function (err) {\n if (err) {\n return callback(err);\n }\n\n return callback(null, 'All server tasks returned successfully');\n });\n}" | |
}, | |
{ | |
"name": "cnapi.touch_setup_complete", | |
"timeout": 1000, | |
"retry": 1, | |
"body": "function touchSetupComplete(job, callback) {\n var urUrl = '/servers/' + job.params.server_uuid + '/execute';\n var cnapiUrl = job.params.cnapi_url;\n var cnapi = restify.createJsonClient({ url: cnapiUrl});\n\n var script = [\n '#!/bin/bash',\n 'touch /var/svc/setup_complete'\n ].join('\\n');\n\n var payload = {\n script: script\n };\n\n cnapi.post(urUrl, payload, function (error, req, res) {\n if (error) {\n job.log.info('Error posting to Ur via CNAPI:' + error.message);\n job.log.info(error.stack.toString());\n callback(error);\n return;\n }\n callback();\n });\n}" | |
}, | |
{ | |
"name": "cnapi.refresh_server_sysinfo", | |
"timeout": 1000, | |
"retry": 1, | |
"body": "function refreshServerSysinfo(job, callback) {\n var cnapi = restify.createJsonClient({ url: cnapiUrl});\n var serverUrl = '/servers/' + job.params.server_uuid + '/sysinfo-refresh';\n\n cnapi.post(serverUrl, {}, function (error, req, res) {\n if (error) {\n job.log.info('Error refreshing server sysinfo');\n job.log.info(error.stack.toString());\n callback(error);\n return;\n }\n callback();\n });\n}" | |
}, | |
{ | |
"name": "cnapi.reboot_server", | |
"timeout": 600, | |
"retry": 1, | |
"body": "function rebootServer(job, callback) {\n var cnapiUrl = job.params.cnapi_url;\n var cnapi = restify.createJsonClient({ url: cnapiUrl});\n var urUrl = '/servers/' + job.params.server_uuid + '/execute';\n\n var payload = {\n script: '#!/bin/bash\\nexit 113'\n };\n\n job.log.info('rebootServer');\n\n if (!job.params.hostname) {\n job.log.info('No need to reboot, hostname not set');\n callback();\n return;\n }\n\n cnapi.post(urUrl, payload, function (error, req, res) {\n job.log.info('rebootServer (post)');\n if (error) {\n job.log.info('Error posting to Ur via CNAPI:' + error.message);\n job.log.info(error.stack.toString());\n callback(error);\n return;\n }\n callback();\n });\n}" | |
}, | |
{ | |
"name": "cnapi.wait_for_reboot", | |
"timeout": 1200, | |
"retry": 1, | |
"body": "function waitForReboot(job, callback) {\n var cnapiUrl = job.params.cnapi_url;\n var cnapi = restify.createJsonClient({ url: cnapiUrl});\n var timer;\n var serverUrl = '/servers/' + job.params.server_uuid;\n\n job.log.info('waitForReboot()');\n\n if (!job.params.hostname) {\n job.log.info('No need to wait for reboot, hostname not set');\n callback();\n return;\n }\n\n function checkRebooted() {\n cnapi.get(serverUrl, function (err, req, res, server) {\n var cn_state;\n var created_at;\n var last_boot;\n\n if (err) {\n job.log.info(\n 'Error getting server info from CNAPI:' + err.message);\n job.log.info(err.stack.toString());\n clearTimeout(timer);\n callback(err);\n return;\n }\n\n job.log.info('waitForReboot() got result from CNAPI');\n\n cn_state = server.status;\n job.log.info('cn_state: ' + cn_state);\n created_at = (new Date(job.created_at).getTime() / 1000);\n job.log.info('created_at: ' + created_at);\n last_boot = (new Date(server.last_boot).getTime() / 1000);\n job.log.info('last_boot: ' + last_boot);\n\n if (cn_state === 'running' && (last_boot > created_at)) {\n clearTimeout(timer);\n callback();\n return;\n }\n timer = setTimeout(checkRebooted, 5000);\n });\n }\n\n timer = setTimeout(checkRebooted, 5000);\n}" | |
}, | |
{ | |
"name": "cnapi.run_postsetup_script", | |
"timeout": 1000, | |
"retry": 1, | |
"body": "function runPostSetupScript(job, callback) {\n var urUrl = '/servers/' + job.params.server_uuid + '/execute';\n var cnapiUrl = job.params.cnapi_url;\n var cnapi = restify.createJsonClient({ url: cnapiUrl});\n\n if (!job.params.postsetup_script) {\n callback();\n return;\n }\n\n var payload = {\n script: job.params.postsetup_script\n };\n\n cnapi.post(urUrl, payload, function (error, req, res) {\n if (error) {\n job.log.info('Error posting to Ur via CNAPI:' + error.message);\n job.log.info(error.stack.toString());\n callback(error);\n return;\n }\n callback();\n });\n}" | |
}, | |
{ | |
"name": "cnapi.restart_ur", | |
"timeout": 1000, | |
"retry": 1, | |
"body": "function restartUr(job, callback) {\n var cnapiUrl = job.params.cnapi_url;\n var cnapi = restify.createJsonClient({ url: cnapiUrl});\n var urUrl = '/servers/' + job.params.server_uuid + '/execute';\n\n var payload = {\n script:\n '#!/bin/bash\\n'+\n 'nohup /bin/bash -c ' +\n '\"(/usr/bin/sleep 5; /usr/sbin/svcadm restart ur) &\"'\n };\n\n job.log.info('restartUr');\n\n cnapi.post(urUrl, payload, function (error, req, res) {\n job.log.info('restartUr (post)');\n if (error) {\n job.log.info('Error posting to Ur via CNAPI:' + error.message);\n job.log.info(error.stack.toString());\n callback(error);\n return;\n }\n callback();\n });\n}" | |
}, | |
{ | |
"name": "cnapi.mark_server_as_setup", | |
"timeout": 1000, | |
"retry": 1, | |
"body": "function markServerAsSetup(job, callback) {\n var cnapiUrl = job.params.cnapi_url;\n var cnapi = restify.createJsonClient({ url: cnapiUrl});\n var serverUrl = '/servers/' + job.params.server_uuid;\n\n var payload = {\n setup: true,\n setting_up: false\n };\n\n cnapi.post(serverUrl, payload, function (error, req, res) {\n if (error) {\n job.log.info('Error setting server as setup');\n job.log.info(error.stack.toString());\n callback(error);\n return;\n }\n callback();\n });\n}" | |
} | |
], | |
"workflow_uuid": "d92b38ad-e20c-48b4-aa75-ebc726dfe11b", | |
"created_at": "2018-05-22T16:19:51.761Z", | |
"onerror_results": [ | |
{ | |
"result": "", | |
"error": { | |
"name": "Error", | |
"message": "Error executing job" | |
}, | |
"name": "onerror", | |
"started_at": "2018-05-22T16:43:39.032Z", | |
"finished_at": "2018-05-22T16:43:39.074Z" | |
} | |
], | |
"started": 1527005992088, | |
"elapsed": 1427.123, | |
"uuid": "3a0c2beb-f025-4b0e-9920-ef11f1fa0702" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment