本文整理汇总了Python中nailgun.task.helpers.TaskHelper.make_slave_name方法的典型用法代码示例。如果您正苦于以下问题:Python TaskHelper.make_slave_name方法的具体用法?Python TaskHelper.make_slave_name怎么用?Python TaskHelper.make_slave_name使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类nailgun.task.helpers.TaskHelper
的用法示例。
在下文中一共展示了TaskHelper.make_slave_name方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: serialize_node
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
def serialize_node(cls, cluster_attrs, node):
"""Serialize a single node."""
serialized_node = {
'uid': node.uid,
'power_address': node.ip,
'name': TaskHelper.make_slave_name(node.id),
# right now it duplicates to avoid possible issues
'slave_name': TaskHelper.make_slave_name(node.id),
'hostname': node.fqdn,
'power_pass': cls.get_ssh_key_path(node),
'profile': cluster_attrs['cobbler']['profile'],
'power_type': 'ssh',
'power_user': 'root',
'name_servers': '\"%s\"' % settings.DNS_SERVERS,
'name_servers_search': '\"%s\"' % settings.DNS_SEARCH,
'netboot_enabled': '1',
# For provisioning phase
'kernel_options': {
'netcfg/choose_interface': node.admin_interface.mac,
'udevrules': cls.interfaces_mapping_for_udev(node)},
'ks_meta': {
'pm_data': {
'ks_spaces': node.attributes.volumes,
'kernel_params': node.kernel_params},
'fuel_version': node.cluster.fuel_version,
'puppet_auto_setup': 1,
'puppet_master': settings.PUPPET_MASTER_HOST,
'puppet_enable': 0,
'mco_auto_setup': 1,
'install_log_2_syslog': 1,
'mco_pskey': settings.MCO_PSKEY,
'mco_vhost': settings.MCO_VHOST,
'mco_host': settings.MCO_HOST,
'mco_user': settings.MCO_USER,
'mco_password': settings.MCO_PASSWORD,
'mco_connector': settings.MCO_CONNECTOR,
'mco_enable': 1,
'auth_key': "\"%s\"" % cluster_attrs.get('auth_key', '')}}
orchestrator_data = objects.Release.get_orchestrator_data_dict(
node.cluster.release)
if orchestrator_data:
serialized_node['ks_meta']['repo_metadata'] = \
orchestrator_data['repo_metadata']
vlan_splinters = cluster_attrs.get('vlan_splinters', None)
if vlan_splinters == 'kernel_lt':
serialized_node['ks_meta']['kernel_lt'] = 1
serialized_node.update(cls.serialize_interfaces(node))
return serialized_node
示例2: node_list
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
def node_list(cls, nodes):
"""Generate nodes list. Represents
as "nodes" parameter in facts.
"""
node_list = []
for node in nodes:
network_data = node.network_data
for role in set(node.pending_roles + node.roles):
node_list.append({
# Yes, uid is really should be a string
'uid': str(node.id),
'fqdn': node.fqdn,
'name': TaskHelper.make_slave_name(node.id),
'role': role,
# Addresses
'internal_address': cls.get_addr(network_data,
'management')['ip'],
'internal_netmask': cls.get_addr(network_data,
'management')['netmask'],
'storage_address': cls.get_addr(network_data,
'storage')['ip'],
'storage_netmask': cls.get_addr(network_data,
'storage')['netmask'],
'public_address': cls.get_addr(network_data,
'public')['ip'],
'public_netmask': cls.get_addr(network_data,
'public')['netmask']})
return node_list
示例3: message
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
def message(cls, task, deploy_task):
nodes_to_stop = db().query(Node).filter(
Node.cluster_id == task.cluster.id
).filter(
not_(Node.status == 'ready')
).yield_per(100)
return {
"method": "stop_deploy_task",
"respond_to": "stop_deployment_resp",
"args": {
"task_uuid": task.uuid,
"stop_task_uuid": deploy_task.uuid,
"nodes": [
{
'uid': n.uid,
'roles': n.roles,
'slave_name': TaskHelper.make_slave_name(n.id)
} for n in nodes_to_stop
],
"engine": {
"url": settings.COBBLER_URL,
"username": settings.COBBLER_USER,
"password": settings.COBBLER_PASSWORD,
}
}
}
示例4: serialize_node
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
def serialize_node(cls, cluster_attrs, node):
"""Serialize a single node."""
serialized_node = {
'power_address': node.ip,
'name': TaskHelper.make_slave_name(node.id),
'hostname': node.fqdn,
'power_pass': cls.get_ssh_key_path(node),
'profile': cluster_attrs['cobbler']['profile'],
'power_type': 'ssh',
'power_user': 'root',
'name_servers': '\"%s\"' % settings.DNS_SERVERS,
'name_servers_search': '\"%s\"' % settings.DNS_SEARCH,
'netboot_enabled': '1',
'ks_meta': {
'ks_spaces': node.attributes.volumes,
'puppet_auto_setup': 1,
'puppet_master': settings.PUPPET_MASTER_HOST,
'puppet_version': settings.PUPPET_VERSION,
'puppet_enable': 0,
'mco_auto_setup': 1,
'install_log_2_syslog': 1,
'mco_pskey': settings.MCO_PSKEY,
'mco_vhost': settings.MCO_VHOST,
'mco_host': settings.MCO_HOST,
'mco_user': settings.MCO_USER,
'mco_password': settings.MCO_PASSWORD,
'mco_connector': settings.MCO_CONNECTOR,
'mco_enable': 1,
'auth_key': "\"%s\"" % cluster_attrs.get('auth_key', '')}}
serialized_node.update(cls.serialize_interfaces(node))
return serialized_node
示例5: test_deploy_and_remove_correct_nodes_and_statuses
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
def test_deploy_and_remove_correct_nodes_and_statuses(self, mocked_rpc):
self.env.create(
cluster_kwargs={},
nodes_kwargs=[
{
"pending_addition": True,
},
{
"status": "error",
"pending_deletion": True
}
]
)
self.env.launch_deployment()
# launch_deployment kicks ClusterChangesHandler
# which in turns launches DeploymentTaskManager
# which runs DeletionTask, ProvisionTask and DeploymentTask.
# DeletionTask is sent to one orchestrator worker and
# ProvisionTask and DeploymentTask messages are sent to
# another orchestrator worker.
# That is why we expect here list of two sets of
# arguments in mocked nailgun.rpc.cast
# The first set of args is for deletion task and
# the second one is for provisioning and deployment.
# remove_nodes method call [0][0][1]
n_rpc_remove = nailgun.task.task.rpc.cast. \
call_args_list[0][0][1]['args']['nodes']
self.assertEquals(len(n_rpc_remove), 1)
self.assertEquals(n_rpc_remove[0]['uid'], self.env.nodes[1].id)
# provision method call [1][0][1][0]
n_rpc_provision = nailgun.task.manager.rpc.cast. \
call_args_list[1][0][1][0]['args']['nodes']
# Nodes will be appended in provision list if
# they 'pending_deletion' = False and
# 'status' in ('discover', 'provisioning') or
# 'status' = 'error' and 'error_type' = 'provision'
# So, only one node from our list will be appended to
# provision list.
self.assertEquals(len(n_rpc_provision), 1)
self.assertEquals(
n_rpc_provision[0]['name'],
TaskHelper.make_slave_name(self.env.nodes[0].id,
self.env.nodes[0].role)
)
# deploy method call [1][0][1][1]
n_rpc_deploy = nailgun.task.manager.rpc.cast. \
call_args_list[1][0][1][1]['args']['nodes']
self.assertEquals(len(n_rpc_deploy), 1)
self.assertEquals(n_rpc_deploy[0]['uid'], self.env.nodes[0].id)
示例6: node_list
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
def node_list(cls, nodes):
"""Generate nodes list. Represents
as "nodes" parameter in facts.
"""
node_list = []
for node in nodes:
for role in node.all_roles:
node_list.append({
'uid': node.uid,
'fqdn': node.fqdn,
'name': TaskHelper.make_slave_name(node.id),
'role': role})
return node_list
示例7: test_deploy_cast_with_right_args
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
#.........这里部分代码省略.........
'gateway': '192.168.0.1',
'netmask': '255.255.255.0',
'dev': 'eth0',
'name': 'management'},
{'brd': '240.0.1.255',
'ip': node_ip_public,
'vlan': 100,
'gateway': '240.0.1.1',
'netmask': '255.255.255.128',
'dev': 'eth0',
'name': u'public'},
{'name': u'storage',
'ip': node_ip_storage,
'vlan': 102,
'dev': 'eth0',
'netmask': '255.255.255.0',
'brd': '172.16.0.255',
'gateway': u'172.16.0.1'},
{'vlan': 100,
'name': 'floating',
'dev': 'eth0'},
{'vlan': 101,
'name': 'fixed',
'dev': 'eth0'},
{'name': u'admin',
'dev': 'eth0'}]})
pnd = {
'profile': cluster_attrs['cobbler']['profile'],
'power_type': 'ssh',
'power_user': 'root',
'power_address': n.ip,
'power_pass': settings.PATH_TO_BOOTSTRAP_SSH_KEY,
'name': TaskHelper.make_slave_name(n.id, n.role),
'hostname': n.fqdn,
'name_servers': '\"%s\"' % settings.DNS_SERVERS,
'name_servers_search': '\"%s\"' % settings.DNS_SEARCH,
'netboot_enabled': '1',
'ks_meta': {
'puppet_auto_setup': 1,
'puppet_master': settings.PUPPET_MASTER_HOST,
'puppet_version': settings.PUPPET_VERSION,
'puppet_enable': 0,
'mco_auto_setup': 1,
'install_log_2_syslog': 1,
'mco_pskey': settings.MCO_PSKEY,
'mco_vhost': settings.MCO_VHOST,
'mco_host': settings.MCO_HOST,
'mco_user': settings.MCO_USER,
'mco_password': settings.MCO_PASSWORD,
'mco_connector': settings.MCO_CONNECTOR,
'mco_enable': 1,
'ks_spaces': "\"%s\"" % json.dumps(
n.attributes.volumes).replace("\"", "\\\""),
'auth_key': "\"%s\"" % cluster_attrs.get('auth_key', ''),
}
}
netmanager = NetworkManager()
netmanager.assign_admin_ips(
n.id,
len(n.meta.get('interfaces', []))
)
admin_ips = set([i.ip_addr for i in self.db.query(IPAddr).
filter_by(node=n.id).
示例8: test_deploy_cast_with_right_args
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
#.........这里部分代码省略.........
'ipaddr': ['127.0.0.1/8']},
'eth1': {
'interface': 'eth1',
'ipaddr': 'none'},
'eth0': {
'interface': 'eth0',
'ipaddr': 'dhcp',
'_name': 'admin'}}}
individual_atts.update(common_attrs)
deployment_info.append(individual_atts)
supertask = self.env.launch_deployment()
deploy_task_uuid = [x.uuid for x in supertask.subtasks
if x.name == 'deployment'][0]
deployment_msg = {'method': 'deploy',
'respond_to': 'deploy_resp',
'args': {}}
deployment_msg['args']['task_uuid'] = deploy_task_uuid
deployment_msg['args']['deployment_info'] = deployment_info
provision_nodes = []
admin_net_id = self.env.network_manager.get_admin_network_id()
for n in sorted(self.env.nodes, key=lambda n: n.id):
pnd = {
'profile': cluster_attrs['cobbler']['profile'],
'power_type': 'ssh',
'power_user': 'root',
'power_address': n.ip,
'power_pass': settings.PATH_TO_BOOTSTRAP_SSH_KEY,
'name': TaskHelper.make_slave_name(n.id),
'hostname': n.fqdn,
'name_servers': '\"%s\"' % settings.DNS_SERVERS,
'name_servers_search': '\"%s\"' % settings.DNS_SEARCH,
'netboot_enabled': '1',
'ks_meta': {
'puppet_auto_setup': 1,
'puppet_master': settings.PUPPET_MASTER_HOST,
'puppet_version': settings.PUPPET_VERSION,
'puppet_enable': 0,
'mco_auto_setup': 1,
'install_log_2_syslog': 1,
'mco_pskey': settings.MCO_PSKEY,
'mco_vhost': settings.MCO_VHOST,
'mco_host': settings.MCO_HOST,
'mco_user': settings.MCO_USER,
'mco_password': settings.MCO_PASSWORD,
'mco_connector': settings.MCO_CONNECTOR,
'mco_enable': 1,
'ks_spaces': "\"%s\"" % json.dumps(
n.attributes.volumes).replace("\"", "\\\""),
'auth_key': "\"%s\"" % cluster_attrs.get('auth_key', ''),
}
}
netmanager = NetworkManager()
netmanager.assign_admin_ips(
n.id,
len(n.meta.get('interfaces', []))
)
admin_ips = set([i.ip_addr for i in self.db.query(IPAddr).
filter_by(node=n.id).
示例9: test_neutron_deploy_cast_with_right_args
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
#.........这里部分代码省略.........
controller_nodes = filter(
lambda node: node['role'] == 'controller',
deployment_info)
controller_nodes[0]['role'] = 'primary-controller'
supertask = self.env.launch_deployment()
deploy_task_uuid = [x.uuid for x in supertask.subtasks
if x.name == 'deployment'][0]
deployment_msg = {'method': 'deploy',
'respond_to': 'deploy_resp',
'args': {}}
deployment_msg['args']['task_uuid'] = deploy_task_uuid
deployment_msg['args']['deployment_info'] = deployment_info
provision_nodes = []
admin_net = self.env.network_manager.get_admin_network_group()
for n in sorted(self.env.nodes, key=lambda n: n.id):
udev_interfaces_mapping = ','.join([
'{0}_{1}'.format(i.mac, i.name) for i in n.interfaces])
eth1_mac = [i.mac for i in n.interfaces if i.name == 'eth1'][0]
pnd = {
'profile': cluster_attrs['cobbler']['profile'],
'power_type': 'ssh',
'power_user': 'root',
'kernel_options': {
'netcfg/choose_interface': eth1_mac,
'udevrules': udev_interfaces_mapping},
'power_address': n.ip,
'power_pass': settings.PATH_TO_BOOTSTRAP_SSH_KEY,
'name': TaskHelper.make_slave_name(n.id),
'hostname': n.fqdn,
'name_servers': '\"%s\"' % settings.DNS_SERVERS,
'name_servers_search': '\"%s\"' % settings.DNS_SEARCH,
'netboot_enabled': '1',
'ks_meta': {
'puppet_auto_setup': 1,
'puppet_master': settings.PUPPET_MASTER_HOST,
'puppet_version': settings.PUPPET_VERSION,
'puppet_enable': 0,
'mco_auto_setup': 1,
'install_log_2_syslog': 1,
'mco_pskey': settings.MCO_PSKEY,
'mco_vhost': settings.MCO_VHOST,
'mco_host': settings.MCO_HOST,
'mco_user': settings.MCO_USER,
'mco_password': settings.MCO_PASSWORD,
'mco_connector': settings.MCO_CONNECTOR,
'mco_enable': 1,
'ks_spaces': n.attributes.volumes,
'auth_key': "\"%s\"" % cluster_attrs.get('auth_key', ''),
}
}
NetworkManager.assign_admin_ips(
n.id,
len(n.meta.get('interfaces', []))
)
admin_ips = set([i.ip_addr
for i in self.db.query(IPAddr).
filter_by(node=n.id).
filter_by(network=admin_net.id)])
示例10: execute
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
def execute(self, task, respond_to='remove_nodes_resp'):
logger.debug("DeletionTask.execute(task=%s)" % task.uuid)
task_uuid = task.uuid
logger.debug("Nodes deletion task is running")
nodes_to_delete = []
nodes_to_delete_constant = []
nodes_to_restore = []
USE_FAKE = settings.FAKE_TASKS or settings.FAKE_TASKS_AMQP
# no need to call naily if there are no nodes in cluster
if respond_to == 'remove_cluster_resp' and \
not list(task.cluster.nodes):
rcvr = rpc.receiver.NailgunReceiver()
rcvr.remove_cluster_resp(
task_uuid=task_uuid,
status='ready',
progress=100
)
return
for node in task.cluster.nodes:
if node.pending_deletion:
nodes_to_delete.append({
'id': node.id,
'uid': node.id,
'roles': node.roles
})
if USE_FAKE:
# only fake tasks
new_node = {}
keep_attrs = (
'id',
'cluster_id',
'roles',
'pending_deletion',
'pending_addition'
)
for prop in object_mapper(node).iterate_properties:
if isinstance(
prop, ColumnProperty
) and prop.key not in keep_attrs:
new_node[prop.key] = getattr(node, prop.key)
nodes_to_restore.append(new_node)
# /only fake tasks
# this variable is used to iterate over it
# and be able to delete node from nodes_to_delete safely
nodes_to_delete_constant = list(nodes_to_delete)
for node in nodes_to_delete_constant:
node_db = db().query(Node).get(node['id'])
slave_name = TaskHelper.make_slave_name(node['id'])
logger.debug("Removing node from database and pending it "
"to clean its MBR: %s", slave_name)
if not node_db.online:
logger.info(
"Node is offline, can't MBR clean: %s", slave_name)
db().delete(node_db)
db().commit()
nodes_to_delete.remove(node)
# only real tasks
engine_nodes = []
if not USE_FAKE:
for node in nodes_to_delete_constant:
slave_name = TaskHelper.make_slave_name(node['id'])
logger.debug("Pending node to be removed from cobbler %s",
slave_name)
engine_nodes.append(slave_name)
try:
node_db = db().query(Node).get(node['id'])
if node_db and node_db.fqdn:
node_hostname = node_db.fqdn
else:
node_hostname = TaskHelper.make_slave_fqdn(node['id'])
logger.info("Removing node cert from puppet: %s",
node_hostname)
cmd = "puppet cert clean {0}".format(node_hostname)
proc = subprocess.Popen(
shlex.split(cmd),
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
p_stdout, p_stderr = proc.communicate()
logger.info(
"'{0}' executed, STDOUT: '{1}',"
" STDERR: '{2}'".format(
cmd,
p_stdout,
p_stderr
)
)
except OSError:
logger.warning(
"'{0}' returned non-zero exit code".format(
#.........这里部分代码省略.........
示例11: execute
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
def execute(self, task, respond_to='remove_nodes_resp'):
logger.debug("DeletionTask.execute(task=%s)" % task.uuid)
task_uuid = task.uuid
logger.debug("Nodes deletion task is running")
nodes_to_delete = []
nodes_to_delete_constant = []
nodes_to_restore = []
USE_FAKE = settings.FAKE_TASKS or settings.FAKE_TASKS_AMQP
# no need to call naily if there are no nodes in cluster
if respond_to == 'remove_cluster_resp' and \
not list(task.cluster.nodes):
rcvr = rpc.receiver.NailgunReceiver()
rcvr.remove_cluster_resp(
task_uuid=task_uuid,
status='ready',
progress=100
)
return
for node in task.cluster.nodes:
if node.pending_deletion:
nodes_to_delete.append({
'id': node.id,
'uid': node.id,
'roles': node.roles,
'slave_name': TaskHelper.make_slave_name(node.id)
})
if USE_FAKE:
# only fake tasks
new_node = {}
keep_attrs = (
'id',
'cluster_id',
'roles',
'pending_deletion',
'pending_addition'
)
for prop in object_mapper(node).iterate_properties:
if isinstance(
prop, ColumnProperty
) and prop.key not in keep_attrs:
new_node[prop.key] = getattr(node, prop.key)
nodes_to_restore.append(new_node)
# /only fake tasks
# this variable is used to iterate over it
# and be able to delete node from nodes_to_delete safely
nodes_to_delete_constant = list(nodes_to_delete)
for node in nodes_to_delete_constant:
node_db = db().query(Node).get(node['id'])
slave_name = TaskHelper.make_slave_name(node['id'])
logger.debug("Removing node from database and pending it "
"to clean its MBR: %s", slave_name)
if node_db.status == 'discover':
logger.info(
"Node is not deployed yet,"
" can't clean MBR: %s", slave_name)
db().delete(node_db)
db().commit()
nodes_to_delete.remove(node)
msg_delete = {
'method': 'remove_nodes',
'respond_to': respond_to,
'args': {
'task_uuid': task.uuid,
'nodes': nodes_to_delete,
'engine': {
'url': settings.COBBLER_URL,
'username': settings.COBBLER_USER,
'password': settings.COBBLER_PASSWORD,
}
}
}
# only fake tasks
if USE_FAKE and nodes_to_restore:
msg_delete['args']['nodes_to_restore'] = nodes_to_restore
# /only fake tasks
logger.debug("Calling rpc remove_nodes method")
rpc.cast('naily', msg_delete)
示例12: message
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
def message(cls, task):
logger.debug("ProvisionTask.message(task=%s)" % task.uuid)
# this variable is used to set 'auth_key' in cobbler ks_meta
cluster_attrs = task.cluster.attributes.merged_attrs_values()
nodes = TaskHelper.nodes_to_provision(task.cluster)
netmanager = NetworkManager()
USE_FAKE = settings.FAKE_TASKS or settings.FAKE_TASKS_AMQP
# TODO: For now we send nodes data to orchestrator
# which is cobbler oriented. But for future we
# need to use more abstract data structure.
nodes_data = []
for node in nodes:
if not node.online:
if not USE_FAKE:
raise Exception(
u"Node '%s' (id=%s) is offline."
" Remove it from environment and try again." %
(node.name, node.id)
)
else:
logger.warning(
u"Node '%s' (id=%s) is offline."
" Remove it from environment and try again." %
(node.name, node.id)
)
node_data = {
'profile': settings.COBBLER_PROFILE,
'power_type': 'ssh',
'power_user': 'root',
'power_address': node.ip,
'name': TaskHelper.make_slave_name(node.id, node.role),
'hostname': node.fqdn,
'name_servers': '\"%s\"' % settings.DNS_SERVERS,
'name_servers_search': '\"%s\"' % settings.DNS_SEARCH,
'netboot_enabled': '1',
'ks_meta': {
'puppet_auto_setup': 1,
'puppet_master': settings.PUPPET_MASTER_HOST,
'puppet_version': settings.PUPPET_VERSION,
'puppet_enable': 0,
'mco_auto_setup': 1,
'install_log_2_syslog': 1,
'mco_pskey': settings.MCO_PSKEY,
'mco_vhost': settings.MCO_VHOST,
'mco_host': settings.MCO_HOST,
'mco_user': settings.MCO_USER,
'mco_password': settings.MCO_PASSWORD,
'mco_connector': settings.MCO_CONNECTOR,
'mco_enable': 1,
'auth_key': "\"%s\"" % cluster_attrs.get('auth_key', ''),
'ks_spaces': "\"%s\"" % json.dumps(
node.attributes.volumes).replace("\"", "\\\"")
}
}
if node.status == "discover":
logger.info(
"Node %s seems booted with bootstrap image",
node.id
)
node_data['power_pass'] = settings.PATH_TO_BOOTSTRAP_SSH_KEY
else:
# If it's not in discover, we expect it to be booted
# in target system.
# TODO: Get rid of expectations!
logger.info(
"Node %s seems booted with real system",
node.id
)
node_data['power_pass'] = settings.PATH_TO_SSH_KEY
# FIXME: move this code (updating) into receiver.provision_resp
if not USE_FAKE:
node.status = "provisioning"
orm().add(node)
orm().commit()
# here we assign admin network IPs for node
# one IP for every node interface
netmanager.assign_admin_ips(
node.id,
len(node.meta.get('interfaces', []))
)
admin_net_id = netmanager.get_admin_network_id()
admin_ips = set([i.ip_addr for i in orm().query(IPAddr).
filter_by(node=node.id).
filter_by(network=admin_net_id)])
for i in node.meta.get('interfaces', []):
if 'interfaces' not in node_data:
node_data['interfaces'] = {}
node_data['interfaces'][i['name']] = {
'mac_address': i['mac'],
'static': '0',
'netmask': settings.ADMIN_NETWORK['netmask'],
'ip_address': admin_ips.pop(),
}
# interfaces_extra field in cobbler ks_meta
# means some extra data for network interfaces
#.........这里部分代码省略.........
示例13: test_nova_deploy_cast_with_right_args
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
#.........这里部分代码省略.........
controller_nodes = filter(
lambda node: node['role'] == 'controller',
deployment_info)
controller_nodes[0]['role'] = 'primary-controller'
supertask = self.env.launch_deployment()
deploy_task_uuid = [x.uuid for x in supertask.subtasks
if x.name == 'deployment'][0]
deployment_msg = {'method': 'deploy',
'respond_to': 'deploy_resp',
'args': {}}
deployment_msg['args']['task_uuid'] = deploy_task_uuid
deployment_msg['args']['deployment_info'] = deployment_info
provision_nodes = []
admin_net = self.env.network_manager.get_admin_network_group()
for n in sorted(self.env.nodes, key=lambda n: n.id):
udev_interfaces_mapping = ','.join([
'{0}_{1}'.format(i.mac, i.name) for i in n.interfaces])
eth1_mac = [i.mac for i in n.interfaces if i.name == 'eth1'][0]
pnd = {
'profile': cluster_attrs['cobbler']['profile'],
'power_type': 'ssh',
'power_user': 'root',
'kernel_options': {
'netcfg/choose_interface': eth1_mac,
'udevrules': udev_interfaces_mapping},
'power_address': n.ip,
'power_pass': settings.PATH_TO_BOOTSTRAP_SSH_KEY,
'name': TaskHelper.make_slave_name(n.id),
'hostname': n.fqdn,
'name_servers': '\"%s\"' % settings.DNS_SERVERS,
'name_servers_search': '\"%s\"' % settings.DNS_SEARCH,
'netboot_enabled': '1',
'ks_meta': {
'puppet_auto_setup': 1,
'puppet_master': settings.PUPPET_MASTER_HOST,
'puppet_version': settings.PUPPET_VERSION,
'puppet_enable': 0,
'mco_auto_setup': 1,
'install_log_2_syslog': 1,
'mco_pskey': settings.MCO_PSKEY,
'mco_vhost': settings.MCO_VHOST,
'mco_host': settings.MCO_HOST,
'mco_user': settings.MCO_USER,
'mco_password': settings.MCO_PASSWORD,
'mco_connector': settings.MCO_CONNECTOR,
'mco_enable': 1,
'ks_spaces': n.attributes.volumes,
'auth_key': "\"%s\"" % cluster_attrs.get('auth_key', ''),
}
}
vlan_splinters = cluster_attrs.get('vlan_splinters', None)
if vlan_splinters == 'kernel_lt':
pnd['ks_meta']['kernel_lt'] = 1
NetworkManager.assign_admin_ips(n.id, 1)
admin_ip = self.env.network_manager.get_admin_ip_for_node(n)
for i in n.interfaces:
示例14: test_nova_deploy_cast_with_right_args
# 需要导入模块: from nailgun.task.helpers import TaskHelper [as 别名]
# 或者: from nailgun.task.helpers.TaskHelper import make_slave_name [as 别名]
#.........这里部分代码省略.........
},
}
individual_atts.update(common_attrs)
individual_atts["glance"]["image_cache_max_size"] = str(
manager.calc_glance_cache_size(node.attributes.volumes)
)
deployment_info.append(deepcopy(individual_atts))
controller_nodes = filter(lambda node: node["role"] == "controller", deployment_info)
controller_nodes[0]["role"] = "primary-controller"
supertask = self.env.launch_deployment()
deploy_task_uuid = [x.uuid for x in supertask.subtasks if x.name == "deployment"][0]
deployment_msg = {"method": "deploy", "respond_to": "deploy_resp", "args": {}}
deployment_msg["args"]["task_uuid"] = deploy_task_uuid
deployment_msg["args"]["deployment_info"] = deployment_info
provision_nodes = []
admin_net = self.env.network_manager.get_admin_network()
for n in sorted(self.env.nodes, key=lambda n: n.id):
udev_interfaces_mapping = ",".join(["{0}_{1}".format(i.mac, i.name) for i in n.interfaces])
pnd = {
"profile": cluster_attrs["cobbler"]["profile"],
"power_type": "ssh",
"power_user": "root",
"kernel_options": {"netcfg/choose_interface": "eth1", "udevrules": udev_interfaces_mapping},
"power_address": n.ip,
"power_pass": settings.PATH_TO_BOOTSTRAP_SSH_KEY,
"name": TaskHelper.make_slave_name(n.id),
"hostname": n.fqdn,
"name_servers": '"%s"' % settings.DNS_SERVERS,
"name_servers_search": '"%s"' % settings.DNS_SEARCH,
"netboot_enabled": "1",
"ks_meta": {
"puppet_auto_setup": 1,
"puppet_master": settings.PUPPET_MASTER_HOST,
"puppet_version": settings.PUPPET_VERSION,
"puppet_enable": 0,
"mco_auto_setup": 1,
"install_log_2_syslog": 1,
"mco_pskey": settings.MCO_PSKEY,
"mco_vhost": settings.MCO_VHOST,
"mco_host": settings.MCO_HOST,
"mco_user": settings.MCO_USER,
"mco_password": settings.MCO_PASSWORD,
"mco_connector": settings.MCO_CONNECTOR,
"mco_enable": 1,
"ks_spaces": n.attributes.volumes,
"auth_key": '"%s"' % cluster_attrs.get("auth_key", ""),
},
}
NetworkManager.assign_admin_ips(n.id, len(n.meta.get("interfaces", [])))
admin_ips = set(
[i.ip_addr for i in self.db.query(IPAddr).filter_by(node=n.id).filter_by(network=admin_net.id)]
)
for i in n.meta.get("interfaces", []):
if "interfaces" not in pnd:
pnd["interfaces"] = {}