diff options
Diffstat (limited to 'deploy/cloud/configure_nodes.py')
-rw-r--r-- | deploy/cloud/configure_nodes.py | 60 |
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) |