一种TOSCA规范的java实现方法与流程

文档序号:13427478阅读:653来源:国知局
本发明涉及数据处理领域,尤其涉及一种tosca规范的java实现方法。
背景技术
:应用编排支持it人员跨异构环境创建、维护和复用基础架构、中间件和应用程序模板,无论是自动化一个业务流程还是整个数据中心。这些编排模板是提供应用程序拓扑的一种方式,效率比手动脚本编制更高,同时为标准化流程提供构建块,也为更快速的服务交付提供创建可重复性。在后台,编排解决方案还应与现有开发和服务管理工作流集成。这些解决方案应通过应用程序编程接口(api)支持即插即用集成。tosca(云应用的拓扑编排标准,topologyorchestrationspecificationforcloudapplications)是由oasis组织(xml的制定者)管理的。从tosca编排工具的跟踪记录和发展速度上看,已经发展得相当成熟,许多组织正在投注和促进其成功。同时在商业和开源项目中吸引眼球,博得了诸如cloudify、ibmcloudorchestrator和openstackheat的芳心。同时也被电信供应商领袖阿尔卡特-朗讯、华为和思科所采纳。但是目前还没有基于java的使用来实现tosca编排规范。技术实现要素:为了克服上述现有技术中的不足,本发明提供一种tosca规范的java实现方法,方法包括:读取用于自定义类型的yaml文件;基于snakeyaml对文件流进行解析;根据系统事件类型将解析后的文件进行分解;读取分解后的文件,将分解后的文件保存在全局对象topology中。优选地,步骤基于snakeyaml对文件流进行解析还包括:获取文件流的文件流开始事件和文件流结束事件,并从文件流的开始事件开始解析,逐一判断事件类型,直至文件流结束事件。优选地,逐一判断事件类型还包括:解析每个事件的键值;每个事件的键值包括:tosca_definitions_version模块为事件的版本、description模块为事件中字符类型、datatype_definitions模块、node_types模块、topology_template模块均为对象类型。优选地,分别对datatype_definitions模块、node_types模块、topology_template模块进行解析;分别解析datatype_definitions模块、node_types模块和topology_template模块的继承自那个类型,表明继承关系;对datatype_definitions模块、node_types模块、topology_template模块进行属性描述,属性描述包括有表明类型和默认值字段;分别读取完datatype_definitions模块、node_types模块和topology_template模块属性和默认值字段后,将其datatype_definitions模块、node_types模块、topology_template模块放入datatypes列表中供其他属性使用。优选地,分别解析datatype_definitions模块、node_types模块、topology_template模块的字段;node_type模块保存自定义的节点类型供node_template模块扩展使用,且规定node_template模块仅使用定义好的node_type模块定义的字段类型。即node_type模块是节点定义,node_template模块为节点实例;node_template模块包含properties、attributes、interfaces和requirements四个属性;其中properties为对象属性;attributes为存储的标识,是32位uuid;interfaces包含implements脚本实现、dependencies依赖和inputs输入参数三个元素;node_type模块和node_template模块按语法格式解析完成后保存于node_types寄存器和node_templates寄存器中,并统一放入全局对象topology中,整个tosca规范解析完成。优选地,步骤读取用于自定义类型的yaml文件之前包括:建立tosca规范的数据模型,数据模型包括topology_template模块,node_templates模块,attributes模块,artifacts模块,interfaces模块,requirements模块;topology_template模块用来描述整个拓扑结构的总称,node_template模块描述节点模板的详细信息,节点模板的详细信息包括属性attributes,外部文件attifacts,接口interfaces,和依赖requirements。优选地,步骤读取用于自定义类型的yaml文件之前还包括:自定义类型的yaml文件包括:系统提供的,用来定义数据类型的normative_types.yaml和用户输入的描述自己应用拓扑的topology.yaml;先解析normative_types.yaml保存数据类型,并将数据类型保存在全局对象中,供解析topology.yaml文件时使用。优选地,步骤获取文件流的文件流开始事件和文件流结束事件,并从文件流的开始事件开始解析,逐一判断事件类型,直至文件流结束事件还包括:获取文件流事件中的文档的开始事件和文档的结束事件,从文档的开始事件开始解析,,直至文档的结束事件;解析文件流中的对象类型数据的开始和结束事件,从对象类型数据的开始事件开始解析,直至对象类型数据的结束事件;解析文件流中的字符类型数据的开始和结束事件,从字符类型数据的开始事件开始解析,直至字符类型数据的结束事件;解析文件流中的列表类型数据的开始和结束事件,从列表类型数据的开始事件开始解析,直至列表类型数据的结束事件。优选地,步骤读取分解后的文件,将分解后的文件保存在全局对象topology中之后还包括:分解后的文件为data_type类型时,读取文件中定义的基本类型数据,将文件中定义的基本类型数据保存至全局对象topology中;分解后的文件为node_type类型数据时,保存至全局对象topology中。优选地,步骤读取分解后的文件,将分解后的文件保存在全局对象topology中之后还包括:读取用户的topology.yaml文件;根据用户的事件类型将用户的topology.yaml文件进行分解;分别读取分解后的用户topology.yaml文件,用户topology.yaml文件包括:node_template模块,topology.yaml文件信息,topology.yaml文件版本以及topology.yaml文件名称;将分解后的用户topology.yaml文件保存至全局对象topology中。从以上技术方案可以看出,本发明具有以下优点:通过tosca规范的java实现方法,使java实现tosca规范,支持的数据结构包括:数据对象,数据数组以及数据纯量。通过snakeyaml的解析yaml文件的方式来解析一种符合tosca规范的文档,其中数据类型可以自定义,且方便扩展。可以通过实现符合tosca规范的文件的解析方法。实现了基于java的使用来实现tosca编排规范。附图说明为了更清楚地说明本发明的技术方案,下面将对描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为tosca规范的java实现方法流程图;图2为tosca规范的java实现方法实施例流程图。具体实施方式为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将运用具体的实施例及附图,对本发明保护的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本专利中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利保护的范围。本实施例提供一种tosca规范的java实现方法,如图1所示,方法包括:s11,读取用于自定义类型的yaml文件;s12,基于snakeyaml对文件流进行解析;具体的,获取文件流的文件流开始事件和文件流结束事件,并从文件流的开始事件开始解析,逐一判断事件类型,直至文件流结束事件。获取文件流事件中的文档的开始事件和文档的结束事件,从文档的开始事件开始解析,,直至文档的结束事件;解析文件流中的对象类型数据的开始和结束事件,从对象类型数据的开始事件开始解析,直至对象类型数据的结束事件;解析文件流中的字符类型数据的开始和结束事件,从字符类型数据的开始事件开始解析,直至字符类型数据的结束事件;解析文件流中的列表类型数据的开始和结束事件,从列表类型数据的开始事件开始解析,直至列表类型数据的结束事件。逐一判断事件类型还包括:解析每个事件的键值;每个事件的键值包括:tosca_definitions_version模块为事件的版本、description模块为事件中字符类型、datatype_definitions模块、node_types模块、topology_template模块均为对象类型。分别对datatype_definitions模块、node_types模块、topology_template模块进行解析;分别解析datatype_definitions模块、node_types模块和topology_template模块的继承自那个类型,表明继承关系;对datatype_definitions模块、node_types模块、topology_template模块进行属性描述,属性描述包括有表明类型和默认值字段;分别读取完datatype_definitions模块、node_types模块和topology_template模块属性和默认值字段后,将其datatype_definitions模块、node_types模块、topology_template模块放入datatypes列表中供其他属性使用。分别解析datatype_definitions模块、node_types模块、topology_template模块的字段;node_type模块保存自定义的节点类型供node_template模块扩展使用,且规定node_template模块仅使用定义好的node_type模块定义的字段类型。即node_type模块是节点定义,node_template模块为节点实例;node_template模块包含properties、attributes、interfaces和requirements四个属性;其中properties为对象属性;attributes为存储的标识,是32位uuid;interfaces包含implements脚本实现、dependencies依赖和inputs输入参数三个元素;node_type模块和node_template模块按语法格式解析完成后保存于node_types寄存器和node_templates寄存器中,并统一放入全局对象topology中,整个tosca规范解析完成。本发明所述的yaml是用来写配置文件的语言。yaml支持的数据结构有三种:对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary);数组:一组按次序排列的值,又称为序列(sequence)/列表(list);纯量(scalars):单个的、不可再分的值。yaml根据tosca规范建立相应的数据模型,包括topology_template,node_templates,attributes,artifacts,interfaces,requirements等。其中topology_template用来描述整个拓扑结构的总称,node_template描述节点模板的详细信息,其中包括属性attributes,外部文件attifacts,接口interfaces,和依赖requirements。node_template表:一个节点模板的信息。序号字段信息说明1attributes存储的唯一标识,32位uuid2artifacts存储的名称3interfaces存储的总容量,单位为gb4requirements存储的已用容量,单位为gbs13,根据系统事件类型将解析后的文件进行分解;s14,读取分解后的文件,将分解后的文件保存在全局对象topology中。在本发明中,步骤读取用于自定义类型的yaml文件之前包括:建立tosca规范的数据模型,数据模型包括topology_template模块,node_templates模块,attributes模块,artifacts模块,interfaces模块,requirements模块;topology_template模块用来描述整个拓扑结构的总称,node_template模块描述节点模板的详细信息,节点模板的详细信息包括属性attributes,外部文件attifacts,接口interfaces,和依赖requirements。在本发明中,步骤读取用于自定义类型的yaml文件之前还包括:自定义类型的yaml文件包括:系统提供的,用来定义数据类型的normative_types.yaml和用户输入的描述自己应用拓扑的topology.yaml;先解析normative_types.yaml保存数据类型,并将数据类型保存在全局对象中,供解析topology.yaml文件时使用。在本发明中,还有一实施例为:s21,读取用于自定义类型的yaml文件;s22,基于snakeyaml对文件流进行解析;s221,分解后的文件为data_type类型时,读取文件中定义的基本类型数据,将文件中定义的基本类型数据保存至全局对象topology中;s222,分解后的文件为node_type类型数据时,保存至全局对象topology中。s23,读取分解后的文件,将分解后的文件保存在全局对象topology中s24,读取用户的topology.yaml文件;s25,根据用户的事件类型将用户的topology.yaml文件进行分解;s26,分别读取分解后的用户topology.yaml文件,用户topology.yaml文件包括:node_template模块,topology.yaml文件信息,topology.yaml文件版本以及topology.yaml文件名称;s27,将分解后的用户topology.yaml文件保存至全局对象topology中。在本发明中,yaml文件解析包含两个文件,一个是系统提供的,用来定义数据类型的normative_types.yaml和用户输入的描述自己应用拓扑的topology.yaml。所以需要先解析normative_types.yaml保存数据类型,并将数据类型保存在全局对象中,供解析topology.yaml文件时使用。使用snakeyaml的parse方法来解析文档,返回解析事件event的的迭代器iterator,事件包括以下几种:documentend,documentstart,mappingend,mappingstart,scalar,sequenceend,sequencestart,streamend,streamstart。其中streamstart和streamend为读取文件流的开始和结束事件,documentstart和documentend为解析文档开始和结束的事件,mappingstart和mappingend为读取对象类型数据的开始和结束事件,scalar为读取字符类型数据的事件,sequencestart和sequenceend为读取列表类型数据开始和结束的事件标识,由yaml介绍可知,这些事件包含了所有的一个yaml包含的可能的数据类型。本发明通过解析方法可以定义一种符合tosca规范的yaml文档格式。然后,tosca规范为标准的云应用编排规范,基于此可灵活编排云应用的拓扑结构。而且实现方法也简单、容易理解,方便扩展。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1