首页 文章 精选 留言 我的

精选列表

搜索[二次开发],共2353篇文章
优秀的个人博客,低调大师

Openstack Nova 二次开发之Nova-extend服务实现

主要是讲如何启动openstack nova-extend services,该服务用于Openstack 二次扩展及部分需求开发,例如 ,节点巡检,动态迁移(基于FUSE 文件系统实现,分布式系统,如MooseFS),文件注入,Nova 服务的自身修复,instances IO 控制,instances CPU 隔离技术实现等其他需求开发 第一章:如何create openstack nova-extend service a) 创建python-extend 文件 cp -fr /usr/bin/python /usr/bin/python-extend 用于启动openstack nova-extend 服务,Python 服务启动nova-extend ,socket 模块不能正常果子,具体原因在于协程分装,无法使用socket,threading等模块属性 b)创建启动程序python-extend 文件,保留在/usr/bin/ 1 2 3 4 5 6 7 #!/usr/bin/python-extend #PBRGeneratedfrom'console_scripts' import sys from nova.cmd.extend import main if __name__ = = "__main__" : sys.exit(main()) c)创建from nova.cmd.extend import main程序,调用nova.services.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #vim:tabstop=4shiftwidth=4softtabstop=4 #Copyright2012IBMCorp. # #LicensedundertheApacheLicense,Version2.0(the"License");youmay #notusethisfileexceptincompliancewiththeLicense.Youmayobtain #acopyoftheLicenseat # #http://www.apache.org/licenses/LICENSE-2.0 # #Unlessrequiredbyapplicablelaworagreedtoinwriting,software #distributedundertheLicenseisdistributedonan"ASIS"BASIS,WITHOUT #WARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.Seethe #Licenseforthespecificlanguagegoverningpermissionsandlimitations #undertheLicense. """StarterscriptforNovaExtend.""" import sys from oslo.config import cfg from nova import config from nova import objects from nova.openstack.common import logaslogging from nova import service from nova import utils CONF = cfg.CONF CONF.import_opt( 'topic' , 'nova.extend.api' ,group = 'extend' ) def main(): objects.register_all() config.parse_args(sys.argv) logging.setup( "nova" ) utils.monkey_patch() server = service.Service.create(binary = 'nova-extend' , topic = CONF.extend.topic, manager = CONF.extend.manager) service.serve(server,workers = CONF.extend.workers) service.wait() d) /etc/nova.conf 配置 1 extend_manager = nova.extend.manager.ExtendManager e) 创建openstack-nova-extend 启动服务脚步 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 #!/bin/sh # #openstack-nova-extendOpenStackNovaComputeDBAccessservice # #chkconfig:-9802 #description:ImplementationofanS3-likestorageserverbasedonlocalfiles. ###BEGININITINFO #Provides: #Required-Start:$remote_fs$network$syslog #Required-Stop:$remote_fs$syslog #Default-Stop:016 #Short-Description:OpenStackNovaComputeDBAccessservice #Description:Servicetohandledatabaseaccessforcomputenodes ###ENDINITINFO . /etc/rc .d /init .d /functions suffix=extend prog=openstack-nova-$suffix exec = "/usr/bin/nova-$suffix" config= "/etc/nova/nova.conf" pidfile= "/var/run/nova/nova-$suffix.pid" logfile= "/var/log/nova/$suffix.log" [-e /etc/sysconfig/ $prog]&&. /etc/sysconfig/ $prog lockfile= /var/lock/subsys/ $prog start(){ [-x$ exec ]|| exit 5 [-f$config]|| exit 6 echo -n$ "Starting$prog:" daemon--usernova--pidfile$pidfile "$exec--logfile$logfile&>/dev/null&echo\$!>$pidfile" retval=$? echo [$retval- eq 0]&& touch $lockfile return $retval } stop(){ echo -n$ "Stopping$prog:" killproc-p$pidfile$prog retval=$? echo [$retval- eq 0]&& rm -f$lockfile return $retval } restart(){ stop start } reload(){ restart } force_reload(){ restart } rh_status(){ status-p$pidfile$prog } rh_status_q(){ rh_status> /dev/null 2>&1 } case "$1" in start) rh_status_q&& exit 0 $1 ;; stop) rh_status_q|| exit 0 $1 ;; restart) $1 ;; reload) rh_status_q|| exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q|| exit 0 restart ;; *) echo $ "Usage:$0{start|stop|status|restart|condrestart|try-restart|reload|force-reload}" exit 2 esac exit $? f) 启动openstack-nova-extend服务 1 2 3 4 5 6 7 8 9 [root@athControllercmd] #serviceopenstack-nova-extendrestart [root@athControllercmd] #tar-xzf/var/log/nova/extend.log 2014 - 08 - 04 23 : 18 : 58.325 47419 INFOnova.openstack.common.service[ - ]CaughtSIGTERM,exiting 2014 - 08 - 04 23 : 19 : 00.151 45666 INFOnova.openstack.common.periodic_task[ - ]Skippingperiodictask_periodic_update_dnsbecauseitsinterval is negative 2014 - 08 - 04 23 : 19 : 00.183 45666 AUDITnova.service[ - ]Startingextendnode(version 2013.2 . 1 - 1.el6 ) 2014 - 08 - 04 23 : 19 : 00.513 45666 INFOnova.openstack.common.rpc.common[req - d6b00731 - baaa - 47fa - bfa2 - 75f9ec4ef568 None None ]ConnectedtoAMQPserveron 192.168 . 8.180 : 5672 g) openstack-nova-extend 消息队列信息 1 2 3 4 5 6 7 8 9 [root@athControllercmd] #rabbitmqctllist_queues|grepextend extend 0 extend.athCloud. 8.180 . abs .com.cn 0 extend_fanout_6dbb351ab48445cfaadc9de37e87d68f 0 extend_fanout_e870b14296354eddba09389319a9c590 0 h) nova-manager service list 查看nova-extend服务状态 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [root@athControllercmd] #nova-manageservicelist BinaryHostZoneStatusStateUpdated_At nova - conductorathController. 8.180 . abs .com.cninternalenabled: - ) 2014 - 08 - 04 15 : 22 : 20 nova - consoleauthathController. 8.180 . abs .com.cninternalenabled: - ) 2014 - 08 - 04 15 : 22 : 19 nova - certathController. 8.180 . abs .com.cninternalenabled: - ) 2014 - 08 - 04 15 : 22 : 20 nova - schedulerathController. 8.180 . abs .com.cninternalenabled: - ) 2014 - 08 - 04 15 : 22 : 18 nova - networkathController. 8.180 . abs .com.cninternalenabled: - ) 2014 - 08 - 04 15 : 22 : 11 nova - computeathController. 8.180 . abs .com.cnnovaenabled: - ) 2014 - 08 - 04 15 : 22 : 10 nova - consoleathController. 8.180 . abs .com.cninternalenabled: - ) 2014 - 08 - 04 15 : 22 : 17 nova - extendathController. 8.180 . abs .com.cninternalenabled: - ) 2014 - 08 - 04 15 : 22 : 10 i) 总结 openstack开发其实并不是很难,只要了解nova-compute,nova-api启动过程,参照文档基本都能实现 到此openstack Nova extend 服务启动实现完毕,下一章节将会在下周一撰写openstack nova-extend nova.extend.manager 功能实现,谢谢大家,如有不明白的地方请留言,我会在中午时间一一帮助大家解答,欢迎点评 写的不好的地方还希望大牛们指点,共同学习 本文转自 swq499809608 51CTO博客,原文链接:http://blog.51cto.com/swq499809608/1535750

优秀的个人博客,低调大师

TFS二次开发系列:一、TFS体系结构和概念

TFS是Team Fundation Server的简称,是微软VSTS的一部分,它是Microsoft应用程序生命周期管理(ALM)工具的核心协作平台,简单的说它是管理和开发软件项目的整个生命周期的平台工具。 TFS的分为客户端层、应用层、数据层。 他们的数据模型流转如下图: 客户端层分为架构师客户端、开发人员客户端、测试人员客户端等。 应用层分为:版本控制、团队生成、团队站点(SharePoint)、工作项跟踪、团队报告(Sql Server Reporting Service)、项目管理、TFS API接口(Web Service)。 数据层:配置数据库、仓库数据库、分析数据库、团队项目集合数据库 TFS的本地部署的Web 服务、应用程序和数据库的概要视图如下: 网络端口和协议图如下: 部署的网络通讯图如下: TFS中的主要概念如下: 应用层、数据层、客户端层:组成TFS的逻辑层,这些层可以在同一台计算机上,也可以在多态计算机上。 团队项目集合:TFS所有数据的主要组织单位,它可以包含一个或者多个团队项目 团队项目:团队用于共享开发软件的团队活动的中心区域。 TFS管理控制台:TFS管理员集中管理工具,可以通过它管理用户和权限、团队项目集合、添加和管理SharePoint 团队网站、创建和管理虚拟机实验室以及检查服务器状态。 SharePoint:基于Web的团队门户管理。 Sql Server和SQL Server Reporting Services:TFS的配置、团队流程的保存区域、数据中心和团队报告数据。 工作项:所有需要做的事情。 本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/p/3137402.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Openfire开发配置,Openfire源代码配置,OpenFire二次开发配置

1、下载源代码:http://www.igniterealtime.org/downloads/source.jsp 2、把源代码解压出的openfire_src文件夹放至eclipse workplace(注意:若是变更了解压出来的文件名,则接下来所有用到文件名的地方都要作出相应更改,否则会报错!) 3、把openfire_src文件夹里的三个无用的html文件删除 4、打开eclipse,新建一个名为openfire_src的Java Project,然后finish 注:此处的默认路径为openfire_src文件夹的绝对路径 5、项目建好后如图所示,其中有几个目录报错,是由于缺少3个jar包:coherence.jar、coherence-work.jar、tangosol.jar 6、下载这几个jar包,然后复制到/openfire_src/build/lib目录下,下载地址 7、选中3个新添加的jar包,点击右键,选择Build Path -> Add to Build Path 8、把jar包编译后还是会有报错,如图,解决办法是直接找到java源文件SipCommRouter.java和SipManager.java ,使用eclipse的自动修复,把错误修复,一般是没有实现抽象方法和没有处理异常。 9、点击Window -> Show View -> Ant,在Ant中选择Add Buildfiles,将build目录下的build.xml选中,然后ok 10、把Java JDK的lib目录下的tools.jar包拷贝到 Java JRE的lib目录下 11、运行选中的文件 12、运行成功后,刷新工程,目录多出两个文件夹 13、将target/lib目录下的所有jar包选中,单击右键,选择Build Path –> Add to Build Path(和步骤7相似) 14、选中项目,点击run -> run configurations 15、选择run configurations左边的Java Application,单击右键,选择New 16、选中Main选项卡,点击Browse选择openfire_src项目;单击Search选择ServerStarter - org.jivesoftware.openfire.starter,结果如下 17、选中Arguments选项卡,在VM arguments中填入-DopenfireHome="${workspace_loc:openfire_src}/target/openfire" 18、选中Classpath选项卡,选中User Entries,点击右边的Advanced按钮 19、在弹出的框中选中Add Folders,选中src/i18n文件夹,点击ok 20、重复上一步骤把src/resources选中添加,结果如下:User Entries下多了两个文件夹 21、选中Common选项卡,将Debug和Run打钩,然后点击apply,再点击run 22、成功运行结果 23、在浏览器中输入上图的地址http://127.0.0.1:9090 24、选择中文,然后继续。服务器设置可直接跳过。数据库设置选择标准数据库连接,点击继续 25、在数据库设置-标准连接设置界面,选择数据库驱动mysql,更改数据库url,其中需要更改的有服务器ip地址,还有数据库名,建议单独建立一个名为openfire的数据库。输入数据库管理员的账号和密码,下一步。 26、数据库连接成功后界面,直接点击继续。 27、管理员账户设置界面,输入管理员的邮箱地址,还有管理员的账号的密码,初始账号为admin。 28、完成设置,登录到管理控制台,初始账户名admin密码为上一步设置的密码。 29、登陆成功后显示 30、检测服务器是否配置成功,到http://www.igniterealtime.org/downloads/index.jsp下载Spark 31、安装Spark,一路next,然后finish。运行Spark,创建Spark账号 32、使用创建的账号登陆Spark,登陆成功可在Openfire管理控制台的用户组看到新注册的用户和在线状态

优秀的个人博客,低调大师

MyEMS 开源二次开发,零碳园区定制化碳管理功能开发实录

园区物业经理每月要交两份报告。一份是能耗报告:本月用电12万度、用气800立方米、用水1500吨,交给上级主管部门。另一份是碳排放报告:本月排放二氧化碳约70吨,交给第三方核查机构。能耗数据来自园区的能源管理系统,碳排放数据来自外聘的碳咨询公司。两份报告的数字经常对不上——能耗报告说本月用电量涨了5%,碳排放报告却说碳排降了3%。领导问哪个对,没人答得上来。

优秀的个人博客,低调大师

Taoify API二次开发:实现商品、订单数据自动化同步

跨境独立站运营中,人工维护商品、订单、库存数据效率极低,还容易出现数据错乱、库存超卖、订单漏同步等问题。很多使用Taoify的商家,只用到了可视化建站能力,忽略了官方开放的完整API接口,浪费了自动化运营的能力。我在落地多个项目时,基于Taoify开放API实现了商品批量同步、订单自动推送、库存实时更新全自动化,大幅降低人工运营成本。今天详细讲解Taoify API的授权、调用、实战开发流程,附带可直接上线的代码案例。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册