def _deploy_tripleo_heat_templates(self, stack, parsed_args): """Deploy the fixed templates in TripleO Heat Templates""" clients = self.app.client_manager network_client = clients.network parameters = self._update_paramaters(parsed_args, network_client, stack) tht_root = parsed_args.templates print("Deploying templates in the directory {0}".format( os.path.abspath(tht_root))) self.log.debug("Creating Environment file") env_path = utils.create_environment_file() if stack is None: self.log.debug("Creating Keystone certificates") keystone_pki.generate_certs_into_json(env_path, False) resource_registry_path = os.path.join(tht_root, RESOURCE_REGISTRY_NAME) environments = [resource_registry_path, env_path] if parsed_args.rhel_reg: reg_env = self._create_registration_env(parsed_args) environments.extend(reg_env) if parsed_args.environment_files: environments.extend(parsed_args.environment_files) overcloud_yaml = os.path.join(tht_root, OVERCLOUD_YAML_NAME) self._heat_deploy(stack, overcloud_yaml, parameters, environments, parsed_args.timeout)
def _deploy_tripleo_heat_templates(self, stack, parsed_args): """Deploy the fixed templates in TripleO Heat Templates""" clients = self.app.client_manager network_client = clients.network parameters = self._update_paramaters( parsed_args, network_client, stack) tht_root = parsed_args.templates print("Deploying templates in the directory {0}".format( os.path.abspath(tht_root))) self.log.debug("Creating Environment file") env_path = utils.create_environment_file() if stack is None: self.log.debug("Creating Keystone certificates") keystone_pki.generate_certs_into_json(env_path, False) resource_registry_path = os.path.join(tht_root, RESOURCE_REGISTRY_NAME) environments = [resource_registry_path, env_path] if parsed_args.rhel_reg: reg_env = self._create_registration_env(parsed_args) environments.extend(reg_env) if parsed_args.environment_files: environments.extend(parsed_args.environment_files) overcloud_yaml = os.path.join(tht_root, OVERCLOUD_YAML_NAME) self._heat_deploy(stack, overcloud_yaml, parameters, environments, parsed_args.timeout)
def _deploy_tripleo_heat_templates(self, stack, parsed_args): """Deploy the fixed templates in TripleO Heat Templates""" clients = self.app.client_manager network_client = clients.network parameters = self._update_paramaters(parsed_args, network_client, stack) utils.check_nodes_count( self.app.client_manager.tripleoclient.baremetal(), stack, parameters, { 'ControllerCount': 1, 'ComputeCount': 1, 'ObjectStorageCount': 0, 'BlockStorageCount': 0, 'CephStorageCount': 0, }) tht_root = parsed_args.templates print("Deploying templates in the directory {0}".format( os.path.abspath(tht_root))) self.log.debug("Creating Environment file") # TODO(jprovazn): env file generated by create_environment_file() # is not very usable any more, scale params are included in # parameters and keystone cert is generated on create only env_path = utils.create_environment_file() environments = [] add_registry = False if stack is None: self.log.debug("Creating Keystone certificates") keystone_pki.generate_certs_into_json(env_path, False) environments.append(env_path) add_registry = True environments.extend(self._create_parameters_env(parameters)) if parsed_args.rhel_reg: reg_env = self._create_registration_env(parsed_args) environments.extend(reg_env) add_registry = True if parsed_args.environment_files: environments.extend(parsed_args.environment_files) add_registry = True if add_registry: # default resource registry file should be passed only # when creating a new stack, or when custom environments are # specified, otherwise it might overwrite # resource_registries in existing stack resource_registry_path = os.path.join( tht_root, constants.RESOURCE_REGISTRY_NAME) environments.insert(0, resource_registry_path) overcloud_yaml = os.path.join(tht_root, constants.OVERCLOUD_YAML_NAME) self._heat_deploy(stack, parsed_args.stack, overcloud_yaml, parameters, environments, parsed_args.timeout)
def main(): args = parse_args() environment._configure_logging(args) if args.heatenv: keystone_pki.generate_certs_into_json(args.heatenv, args.seed) else: keystone_pki.create_and_write_ca_and_signing_pairs(args.directory)
def _deploy_tripleo_heat_templates(self, stack, parsed_args): """Deploy the fixed templates in TripleO Heat Templates""" clients = self.app.client_manager network_client = clients.network workflow_client = clients.workflow_engine parameters = self._update_parameters( parsed_args, network_client, stack) tht_root = os.path.abspath(parsed_args.templates) plans = plan_management.list_deployment_plans(workflow_client) # TODO(d0ugal): We need to put a more robust strategy in place here to # handle updating plans. if parsed_args.stack in plans: # Upload the new plan templates to swift to replace the existing # templates. plan_management.update_plan_from_templates( clients, parsed_args.stack, tht_root) else: plan_management.create_plan_from_templates( clients, parsed_args.stack, tht_root) print("Deploying templates in the directory {0}".format( os.path.abspath(tht_root))) self.log.debug("Creating Environment file") # TODO(jprovazn): env file generated by create_environment_file() # is not very usable any more, scale params are included in # parameters and keystone cert is generated on create only env_path = utils.create_environment_file() env = {} created_env_files = [] if stack is None: self.log.debug("Creating Keystone certificates") keystone_pki.generate_certs_into_json(env_path, False) created_env_files.append(env_path) if parsed_args.environment_directories: created_env_files.extend(self._load_environment_directories( parsed_args.environment_directories)) env.update(self._create_parameters_env(parameters)) if parsed_args.rhel_reg: reg_env_files, reg_env = self._create_registration_env(parsed_args) created_env_files.extend(reg_env_files) template_utils.deep_update(env, reg_env) if parsed_args.environment_files: created_env_files.extend(parsed_args.environment_files) self._try_overcloud_deploy_with_compat_yaml( tht_root, stack, parsed_args.stack, parameters, created_env_files, parsed_args.timeout, env)
def _deploy_tripleo_heat_templates(self, stack, parsed_args): """Deploy the fixed templates in TripleO Heat Templates""" clients = self.app.client_manager network_client = clients.network parameters = self._update_paramaters( parsed_args, network_client, stack) utils.check_nodes_count( self.app.client_manager.tripleoclient.baremetal(), stack, parameters, { 'ControllerCount': 1, 'ComputeCount': 1, 'ObjectStorageCount': 0, 'BlockStorageCount': 0, 'CephStorageCount': 0, } ) tht_root = parsed_args.templates print("Deploying templates in the directory {0}".format( os.path.abspath(tht_root))) self.log.debug("Creating Environment file") # TODO(jprovazn): env file generated by create_environment_file() # is not very usable any more, scale params are included in # parameters and keystone cert is generated on create only env_path = utils.create_environment_file() environments = [] if stack is None: self.log.debug("Creating Keystone certificates") keystone_pki.generate_certs_into_json(env_path, False) # default resource registry file should be passed only # when creating a new stack, otherwise it might overwrite # resource_registries in existing stack resource_registry_path = os.path.join(tht_root, RESOURCE_REGISTRY_NAME) environments.extend([resource_registry_path, env_path]) environments.extend(self._create_parameters_env(parameters)) if parsed_args.rhel_reg: reg_env = self._create_registration_env(parsed_args) environments.extend(reg_env) if parsed_args.environment_files: environments.extend(parsed_args.environment_files) overcloud_yaml = os.path.join(tht_root, OVERCLOUD_YAML_NAME) self._heat_deploy(stack, parsed_args.stack, overcloud_yaml, parameters, environments, parsed_args.timeout)
def _deploy_tripleo_heat_templates(self, stack, parsed_args): """Deploy the fixed templates in TripleO Heat Templates""" clients = self.app.client_manager network_client = clients.network parameters = self._update_parameters( parsed_args, network_client, stack) tht_root = parsed_args.templates print("Deploying templates in the directory {0}".format( os.path.abspath(tht_root))) self.log.debug("Creating Environment file") # TODO(jprovazn): env file generated by create_environment_file() # is not very usable any more, scale params are included in # parameters and keystone cert is generated on create only env_path = utils.create_environment_file() environments = [] add_registry = False if stack is None: self.log.debug("Creating Keystone certificates") keystone_pki.generate_certs_into_json(env_path, False) environments.append(env_path) add_registry = True if parsed_args.environment_directories: environments.extend(self._load_environment_directories( parsed_args.environment_directories)) environments.extend(self._create_parameters_env(parameters)) if parsed_args.rhel_reg: reg_env = self._create_registration_env(parsed_args) environments.extend(reg_env) add_registry = True if parsed_args.environment_files: environments.extend(parsed_args.environment_files) add_registry = True if add_registry: # default resource registry file should be passed only # when creating a new stack, or when custom environments are # specified, otherwise it might overwrite # resource_registries in existing stack resource_registry_path = os.path.join( tht_root, constants.RESOURCE_REGISTRY_NAME) environments.insert(0, resource_registry_path) self._try_overcloud_deploy_with_compat_yaml( tht_root, stack, parsed_args.stack, parameters, environments, parsed_args.timeout)
def test_generate_certs_into_json(self, mock_json, open_, create_signing, create_ca, isfile): create_ca.return_value = ('mock_ca_key', 'mock_ca_cert') create_signing.return_value = ('mock_signing_key', 'mock_signing_cert') isfile.return_value = False keystone_pki.generate_certs_into_json('/jsonfile', False) params = mock_json.call_args[0][0]['parameter_defaults'] self.assertEqual(params['KeystoneCACertificate'], 'mock_ca_cert') self.assertEqual(params['KeystoneSigningKey'], 'mock_signing_key') self.assertEqual(params['KeystoneSigningCertificate'], 'mock_signing_cert')
def test_generate_certs_into_json( self, mock_json, open_, create_signing, create_ca, isfile): create_ca.return_value = ('mock_ca_key', 'mock_ca_cert') create_signing.return_value = ('mock_signing_key', 'mock_signing_cert') isfile.return_value = False keystone_pki.generate_certs_into_json('/jsonfile', False) params = mock_json.call_args[0][0]['parameters'] self.assertEqual(params['KeystoneCACertificate'], 'mock_ca_cert') self.assertEqual(params['KeystoneSigningKey'], 'mock_signing_key') self.assertEqual(params['KeystoneSigningCertificate'], 'mock_signing_cert')
def test_generate_certs_into_json_with_existing_certs( self, mock_json_dump, mock_json_load, open_, create_signing, create_ca, isfile): create_ca.return_value = ('mock_ca_key', 'mock_ca_cert') create_signing.return_value = ('mock_signing_key', 'mock_signing_cert') isfile.return_value = True mock_json_load.return_value = { 'KeystoneCACertificate': 'mock_ca_cert', 'KeystoneSigningKey': 'mock_signing_key', 'KeystoneSigningCertificate': 'mock_signing_cert' } keystone_pki.generate_certs_into_json('/jsonfile', False) mock_json_dump.assert_not_called()
def main(): args = parse_args() if args.heatenv: keystone_pki.generate_certs_into_json(args.heatenv, args.seed) else: keystone_pki.create_and_write_ca_and_signing_pairs(args.directory)
def _deploy_tripleo_heat_templates(self, stack, parsed_args, tht_root, user_tht_root): """Deploy the fixed templates in TripleO Heat Templates""" clients = self.app.client_manager network_client = clients.network workflow_client = clients.workflow_engine parameters = self._update_parameters( parsed_args, network_client, stack) plans = plan_management.list_deployment_plans(workflow_client) # TODO(d0ugal): We need to put a more robust strategy in place here to # handle updating plans. if parsed_args.stack in plans: # Upload the new plan templates to swift to replace the existing # templates. plan_management.update_plan_from_templates( clients, parsed_args.stack, tht_root, parsed_args.roles_file) else: plan_management.create_plan_from_templates( clients, parsed_args.stack, tht_root, parsed_args.roles_file) # Get any missing (e.g j2 rendered) files from the plan to tht_root added_files = self._download_missing_files_from_plan( tht_root, parsed_args.stack) print("Deploying templates in the directory {0}".format( os.path.abspath(tht_root))) self.log.debug("Creating Environment file") # TODO(jprovazn): env file generated by create_environment_file() # is not very usable any more, scale params are included in # parameters and keystone cert is generated on create only env_path = utils.create_environment_file() env = {} created_env_files = [] if stack is None: self.log.debug("Creating Keystone certificates") keystone_pki.generate_certs_into_json(env_path, False) created_env_files.append(env_path) if parsed_args.environment_directories: created_env_files.extend(self._load_environment_directories( parsed_args.environment_directories)) env.update(self._create_parameters_env(parameters)) if parsed_args.rhel_reg: reg_env_files, reg_env = self._create_registration_env(parsed_args) created_env_files.extend(reg_env_files) template_utils.deep_update(env, reg_env) if parsed_args.environment_files: created_env_files.extend(parsed_args.environment_files) self.log.debug("Processing environment files %s" % created_env_files) env_files, localenv = self._process_multiple_environments( created_env_files, added_files, tht_root, user_tht_root, cleanup=not parsed_args.no_cleanup) template_utils.deep_update(env, localenv) self._try_overcloud_deploy_with_compat_yaml( tht_root, stack, parsed_args.stack, parameters, env_files, parsed_args.timeout, env, parsed_args.update_plan_only)