fluke/devops-service/migrations/convert_deploy_envs_devops_3.js

41 lines
1.5 KiB
JavaScript
Raw Normal View History

2018-04-04 22:44:39 +03:00
function convert_ec2(env) {
var category = {"id": "instance",
"provider":{"name":"aws", "account":"default", "flavor":env.flavor, "image":env.image, "groups":env.groups, "stack_template": env.stack_template}
, "cm_tool":{"name": "chef"}};
category.provider["vpc_id"] = "";
category.provider["subnet"] = env.subnets[0];
category.cm_tool["bootstrap_template"] = db.images.findOne({"_id": env.image}).bootstrap_template
var new_env = {"id": env.identifier, "run_list": env.run_list, "expires": env.expires, "users":env.users, "categories":[category]};
return new_env;
}
function convert_openstack(env) {
return false;
}
function convert_static(env) {
var category = {"id": "instance", "provider":{"name":"static", "account":"default"}, "cm_tool":{"name": "chef"}};
var new_env = {"id": env.identifier, "run_list": env.run_list, "expires": env.expires, "users":env.users, "categories":[category]};
return new_env;
}
db.projects.find().forEach(function(project) {
var deploy_envs = project.deploy_envs;
project.deploy_envs = [];
while(deploy_envs.length != 0) {
var env = deploy_envs.pop();
var new_env;
if (env.provider == "ec2") {
new_env = convert_ec2(env);
} else if (env.provider == "openstack") {
new_env = convert_openstack(env);
} else if (env.provider == "static") {
new_env = convert_static(env);
}
if (new_env) {
project.deploy_envs.push(new_env);
}
}
db.projects.update({_id: project._id}, {
'$set': {'environments': project.deploy_envs},
'$unset': {'deploy_envs': 1}
})
})