summaryrefslogtreecommitdiffstats
path: root/deploy/cloud/configure_nodes.py
diff options
context:
space:
mode:
authorMichal Skalski <mskalski@mirantis.com>2016-09-15 05:09:53 +0200
committerMichal Skalski <mskalski@mirantis.com>2016-09-16 00:08:38 +0200
commit8eeadbc08d8ae2efd5958fd639f910b77071d002 (patch)
tree66e4e0ae48e503323c16f00dff71b09588b5028d /deploy/cloud/configure_nodes.py
parentc5df35d8bac8d5091d60f2f170668de4152952a0 (diff)
Stop using network transformation
Due the bug in code we did not apply network transformation to created environments, but still Fuel base on chosen segmentation type and networks to NICs assigment has been generated network schema itself. Since we don't use custom network schema we can remove transformation defintions from dea pod overrides files. However there is a need to configure NIC properties in case of dpdk deployment. JIRA: FUEL-192 Change-Id: Ib7dab4d61910ac8c44b6d91e0c486c9693034823 Signed-off-by: Michal Skalski <mskalski@mirantis.com>
Diffstat (limited to 'deploy/cloud/configure_nodes.py')
-rw-r--r--deploy/cloud/configure_nodes.py60
1 files changed, 44 insertions, 16 deletions
diff --git a/deploy/cloud/configure_nodes.py b/deploy/cloud/configure_nodes.py
index 20ecc1724..ea50307b1 100644
--- a/deploy/cloud/configure_nodes.py
+++ b/deploy/cloud/configure_nodes.py
@@ -45,9 +45,6 @@ class ConfigureNodes(object):
exec_cmd('fuel node set --node-id %s --role %s --env %s'
% (node_id, roles_blade[0], self.env_id))
- # Download the unmodified default deployment configuration, because we
- # need it for the network config.
- self.download_deployment_config()
for node_id, roles_blade in self.node_id_roles_dict.iteritems():
# Modify node attributes
self.download_attributes(node_id)
@@ -56,13 +53,18 @@ class ConfigureNodes(object):
# Modify interfaces configuration
self.download_interface_config(node_id)
self.modify_node_interface(node_id, roles_blade)
- self.modify_node_network_schemes(node_id, roles_blade)
self.upload_interface_config(node_id)
+ # Currently not used, we use default deployment facts
+ # which are generated by fuel based on type segmentation
+ # and network to nic assignment
+ #
# Download our modified deployment configuration, which includes our
# changes to network topology etc.
- self.download_deployment_config()
- self.upload_deployment_config()
+ #self.download_deployment_config()
+ #for node_id, roles_blade in self.node_id_roles_dict.iteritems():
+ # self.modify_node_network_schemes(node_id, roles_blade)
+ #self.upload_deployment_config()
def modify_node_network_schemes(self, node_id, roles_blade):
log('Modify network transformations for node %s' % node_id)
@@ -71,14 +73,14 @@ class ConfigureNodes(object):
deployment_dir = '%s/deployment_%s' % (
self.yaml_config_dir, self.env_id)
backup(deployment_dir)
- for node_file in glob.glob(deployment_dir + '/*_%s.yaml' % node_id):
- with io.open(node_file) as stream:
- node = yaml.load(stream)
+ node_file = ('%s/%s.yaml' % (deployment_dir, node_id))
+ with io.open(node_file) as stream:
+ node = yaml.load(stream)
- node['network_scheme'].update(transformations)
+ node['network_scheme'].update(transformations)
- with io.open(node_file, 'w') as stream:
- yaml.dump(node, stream, default_flow_style=False)
+ with io.open(node_file, 'w') as stream:
+ yaml.dump(node, stream, default_flow_style=False)
def download_deployment_config(self):
log('Download deployment config for environment %s' % self.env_id)
@@ -129,6 +131,22 @@ class ConfigureNodes(object):
with open(attributes_yaml, 'w') as stream:
yaml.dump(result_attributes, stream, default_flow_style=False)
+ # interface configuration can
+ # looks like this:
+ #
+ # interfaces_dpdk:
+ # ens3:
+ # - fuelweb_admin
+ # ens4:
+ # - storage
+ # - management
+ # ens5:
+ # - interface_properties:
+ # dpdk:
+ # enabled: true
+ # - private
+ # ens6:
+ # - public
def modify_node_interface(self, node_id, roles_blade):
log('Modify interface config for node %s' % node_id)
interface_yaml = ('%s/node_%s/interfaces.yaml'
@@ -150,11 +168,21 @@ class ConfigureNodes(object):
for interface in interfaces:
interface['assigned_networks'] = []
if interface['name'] in interface_config:
- for net_name in interface_config[interface['name']]:
+ for prop in interface_config[interface['name']]:
net = {}
- net['id'] = net_name_id[net_name]
- net['name'] = net_name
- interface['assigned_networks'].append(net)
+ #net name
+ if isinstance(prop, six.string_types):
+ net['id'] = net_name_id[prop]
+ net['name'] = prop
+ interface['assigned_networks'].append(net)
+ #network properties
+ elif isinstance(prop, dict):
+ if not 'interface_properties' in prop:
+ log('Interface configuration contain unknow dict: %s' % prop)
+ continue
+ interface['interface_properties'] = \
+ self._merge_dicts(interface.get('interface_properties', {}),
+ prop.get('interface_properties', {}))
with io.open(interface_yaml, 'w') as stream:
yaml.dump(interfaces, stream, default_flow_style=False)