def _render(self): ''' create a temporary work directory for creating and caching dynmaically generated userdata templates. temp directory and its contents are deleted automatically by context manager after cloud template is returned ''' with make_temp_directory() as temp_work_dir: # prepare arguments for cloud template cloud_template_args = self.get_core_template_args() cloud_template_args.update({'user_data': self._preprocess_user_data(temp_work_dir)}) # render primary template, extending searchpath to temporary dir # holding role-based userdata jinja templates cloud_template = render_template( searchpath=self.get_template_searchpath(extrapath=temp_work_dir), source_template=self._get_template_filename(self.template_name, 'jinja2'), **cloud_template_args) return cloud_template
def _render(self): ''' create a temporary work directory for creating and caching dynmaically generated userdata templates. temp directory and its contents are deleted automatically by context manager after cloud template is returned ''' with make_temp_directory() as temp_work_dir: # prepare arguments for cloud template cloud_template_args = self.get_core_template_args() cloud_template_args.update( {'user_data': self._preprocess_user_data(temp_work_dir)}) # render primary template, extending searchpath to temporary dir # holding role-based userdata jinja templates cloud_template = render_template( searchpath=self.get_template_searchpath( extrapath=temp_work_dir), source_template=self._get_template_filename( self.template_name, 'jinja2'), **cloud_template_args) return cloud_template
def salt_grains_transfer(planet=None, service=None, runtime=None, system=None): salt_grain_filename = 'grains' # retrieve provision object storage type prov_obj_store_type = planet.services['prov-object-store'].get('type') result = dict() for stack_id in service.deploy.stack_launch_list: result[stack_id] = dict() for role_name in service.deploy.get_stack_roles(stack_id): skybase_id = '-'.join([ planet.definition['planet'], service.metadata['app_name'], runtime.tag, stack_id, role_name, ]) # generate custom salt grains for minion minion_grains = { 'skybase': { 'skybase_id': skybase_id, 'planet': planet.definition['planet'], 'service': service.metadata['app_name'], 'tag': runtime.tag, 'stack': stack_id, 'role': role_name, 'version': service.metadata['app_version'], 'build': service.metadata['build_id'], 'source_artiball': service.metadata['source_artiball'], } } # initialze results container for stack/role result[stack_id][role_name] = dict() result[stack_id][role_name]['grains'] = minion_grains # upload grains to service namespace if runtime.apply: # create temporary directory and file with make_temp_directory() as tdir: with open(os.path.join(tdir, salt_grain_filename), 'w') as grains_file: # dump salt grains as YAML file and reset file marker to top grains_file.write( yaml.safe_dump(minion_grains, default_flow_style=False)) grains_file.seek(0) # generate service namespace path to salt folder key_path = '{0}/{1}'.format( get_target_path(planet, service, runtime, stack_id, role_name), 'salt') # upload grains archive file to provider object store result[stack_id][role_name][ 'upload_to_object_store'] = upload_to_object_store( obj_store_type=prov_obj_store_type, local_tar_src=grains_file.name, planet=planet, key_path=key_path, archive_file='grains.tar.gz') return result
def salt_grains_transfer(planet=None, service=None, runtime=None, system=None): salt_grain_filename = 'grains' # retrieve provision object storage type prov_obj_store_type = planet.services['prov-object-store'].get('type') result = dict() for stack_id in service.deploy.stack_launch_list: result[stack_id] = dict() for role_name in service.deploy.get_stack_roles(stack_id): skybase_id = '-'.join([ planet.definition['planet'], service.metadata['app_name'], runtime.tag, stack_id, role_name, ]) # generate custom salt grains for minion minion_grains = { 'skybase': { 'skybase_id': skybase_id, 'planet': planet.definition['planet'], 'service': service.metadata['app_name'], 'tag': runtime.tag, 'stack': stack_id, 'role': role_name, 'version': service.metadata['app_version'], 'build': service.metadata['build_id'], 'source_artiball': service.metadata['source_artiball'], } } # initialze results container for stack/role result[stack_id][role_name] = dict() result[stack_id][role_name]['grains'] = minion_grains # upload grains to service namespace if runtime.apply: # create temporary directory and file with make_temp_directory() as tdir: with open(os.path.join(tdir, salt_grain_filename), 'w') as grains_file: # dump salt grains as YAML file and reset file marker to top grains_file.write(yaml.safe_dump(minion_grains, default_flow_style=False)) grains_file.seek(0) # generate service namespace path to salt folder key_path = '{0}/{1}'.format( get_target_path(planet, service, runtime, stack_id, role_name), 'salt' ) # upload grains archive file to provider object store result[stack_id][role_name]['upload_to_object_store'] = upload_to_object_store( obj_store_type = prov_obj_store_type, local_tar_src=grains_file.name, planet=planet, key_path=key_path, archive_file='grains.tar.gz') return result