Ejemplo n.º 1
0
 def info(self, node_name):
     """Display node information"""
     server = jenkins_server.get_jenkins_server()
     if node_name == 'master':
         node_name = '(master)'
     info = server.get_node_info(node_name)
     return info
Ejemplo n.º 2
0
 def create(self, job_name, config_xml):
     """Create a job"""
     server = jenkins_server.get_jenkins_server()
     try:
         server.create_job(job_name, config_xml.strip())
     except Exception as e:
         return '创建任务%s失败:%s' % (job_name, str(e))
     return '创建任务%s成功' % job_name
Ejemplo n.º 3
0
 def copy(self, from_name, to_name):
     """Copy a job"""
     server = jenkins_server.get_jenkins_server()
     try:
         server.copy_job(from_name, to_name)
     except Exception as e:
         return '复制任务%s到%s失败' % (from_name, to_name)
     return '复制任务%s到%s成功' % (from_name, to_name)
Ejemplo n.º 4
0
 def delete(self, job_name):
     """Delete a job"""
     server = jenkins_server.get_jenkins_server()
     try:
         server.delete_job(job_name)
     except JenkinsException as e:
         return '删除任务' + job_name + '失败'
     return '删除任务%s成功' % job_name
Ejemplo n.º 5
0
 def has(self, plugin_name):
     """Whether a plugin has installed"""
     server = jenkins_server.get_jenkins_server(type='jenkinsapi')
     has = server.has_plugin(plugin_name)
     if has:
         return '插件%s已安装' % plugin_name
     else:
         return '插件%s未安装' % plugin_name
Ejemplo n.º 6
0
 def report(self, job_name, build_number):
     """Display test report of a build"""
     server = jenkins_server.get_jenkins_server()
     try:
         report = server.get_build_test_report(job_name, build_number)
     except JenkinsException as e:
         return '%s#%d不存在' % (job_name, build_number)
     return report
Ejemplo n.º 7
0
 def info(self, job_name):
     """Display job information"""
     server = jenkins_server.get_jenkins_server()
     try:
         job_info = server.get_job_info(job_name)
     except JenkinsException as e:
         return '操作失败,错误信息:%s' % str(e)
     return job_info
Ejemplo n.º 8
0
 def has(self, job_name):
     """Whether has a job """
     server = jenkins_server.get_jenkins_server()
     exists = server.job_exists(job_name)
     if exists:
         return '任务%s存在' % job_name
     else:
         return '任务%s不存在' % job_name
Ejemplo n.º 9
0
 def xml(self, job_name):
     """Display content of job's config.xml file"""
     server = jenkins_server.get_jenkins_server()
     try:
         config_xml = server.get_job_config(job_name)
     except Exception as e:
         return '获取任务%s的config.xml内容失败:%s' % (job_name, str(e))
     return config_xml.replace(" ", "").replace("\n", "")
Ejemplo n.º 10
0
 def env(self, job_name, build_number):
     """Display env vars of a build"""
     server = jenkins_server.get_jenkins_server()
     try:
         env = server.get_build_env_vars(job_name, build_number)
     except JenkinsException as e:
         return '%s#%d不存在' % (job_name, build_number)
     return env
Ejemplo n.º 11
0
 def ls(self):
     """List tasks in queue"""
     server = jenkins_server.get_jenkins_server()
     queue = server.get_queue_info()
     print('任务ID\t%s\t原因' % '任务链接'.ljust(50))
     for q in queue:
         print('%d\t%s\t%s' %
               (q['id'], q['task']['url'].ljust(50), q['why']))
Ejemplo n.º 12
0
 def rename(self, from_name, to_name):
     """Rename a job"""
     server = jenkins_server.get_jenkins_server()
     try:
         server.rename_job(from_name, to_name)
     except JenkinsException as e:
         return '重命名%s为%s失败,错误信息:%s' % (from_name, to_name, str(e))
     return '重命名%s为%s成功' % (from_name, to_name)
Ejemplo n.º 13
0
 def info(self, job_name, build_number):
     """Display info of a build"""
     server = jenkins_server.get_jenkins_server()
     try:
         build_info = server.get_build_info(job_name, build_number)
     except JenkinsException as e:
         return '%s#%d不存在' % (job_name, build_number)
     return build_info
Ejemplo n.º 14
0
 def cancle(self, queue_id):
     """Cancel a task in queue"""
     server = jenkins_server.get_jenkins_server()
     try:
         server.cancel_queue(queue_id)
     except Exception as e:
         return '取消队列中任务%d失败' % queue_id
     return '取消队列中任务%d成功' % queue_id
Ejemplo n.º 15
0
 def log(self, job_name, build_number):
     """Display log of a build"""
     server = jenkins_server.get_jenkins_server()
     try:
         console_text = server.get_build_console_output(job_name, build_number)
     except JenkinsException as e:
         return '%s#%d不存在' % (job_name, build_number)
     return console_text
Ejemplo n.º 16
0
 def install(self, plugin_name):
     """Install a plugin and its dependencies"""
     server = jenkins_server.get_jenkins_server()
     restart_required = server.install_plugin(plugin_name)
     if restart_required:
         return '插件%s安装成功,重启后生效' % plugin_name
     else:
         return '插件%s安装成功并生效' % plugin_name
Ejemplo n.º 17
0
 def num(self, node_name):
     """
     Display executor number of a node
     """
     server = jenkins_server.get_jenkins_server(type="jenkinsapi")
     if node_name == 'master':
         node_name = '(master)'
     executors = server.get_executors(node_name)
     print('执行器个数为: %d' % executors.count)
Ejemplo n.º 18
0
 def whoami(self):
     """
     Display who am i
     """
     server = jenkins_server.get_jenkins_server()
     try:
         i = server.get_whoami()
     except Exception as e:
         return '操作失败:连接服务器失败'
     return i['fullName']
Ejemplo n.º 19
0
 def build(self, job_name, parameters=None):
     """Build a job"""
     try:
         server = jenkins_server.get_jenkins_server()
     except ConnectionError as e:
         return 'Error: %s' % str(e)
     build_number = server.build_job(job_name, parameters=parameters)
     next_build_number = server.get_job_info(job_name)['nextBuildNumber']
     return '任务%s已加入队列,队列ID:%d,下次构建号:%d' % (job_name, build_number,
                                            next_build_number)
Ejemplo n.º 20
0
 def ls(self):
     """List credentials"""
     server = jenkins_server.get_jenkins_server(type="jenkinsapi")
     credentials = server.get_credentials().credentials
     print('%s%s%s%s' %
           ('ID'.ljust(40), '名称'.ljust(30), '类型'.ljust(60), '描述'))
     for credential in credentials:
         print(credential.ljust(40),
               credentials[credential].displayname.ljust(30),
               str(type(credentials[credential])).ljust(60),
               credentials[credential].description)
Ejemplo n.º 21
0
 def ls(self):
     """List all installed plugins"""
     server = jenkins_server.get_jenkins_server()
     plugins = server.get_plugins()
     plugins_list_content = '插件名称'.ljust(32) + '类型'.ljust(68) + '版本\n'
     plugins_list_content += '--------'.ljust(36) + '--------'.ljust(
         70) + '--------\n'
     for key in plugins.keys():
         plugins_list_content += key[0].ljust(36) + key[1].ljust(
             70) + plugins[key[0]]['version'] + '\n'
     return plugins_list_content
Ejemplo n.º 22
0
    def ls(self):
        """List nodes"""
        server = jenkins_server.get_jenkins_server()
        nodes = server.get_nodes()
        print('%s%s%s%s%s%s' %
              ('节点名称'.ljust(27), '架构'.ljust(18), '可用交换空间'.ljust(16),
               '可用内存空间'.ljust(15), '可用临时空间'.ljust(15), '可用磁盘空间'.ljust(20)))
        print(
            '%s%s%s%s%s%s' %
            ('--------'.ljust(30), '--------'.ljust(20), '--------'.ljust(20),
             '--------'.ljust(20), '--------'.ljust(20), '--------'.ljust(20)))
        for node in nodes:
            if node['name'] == 'master':
                node['name'] = '(master)'
            # TODO: 修复jenkinsapi的bug后,可直接调用接口
            node_info = server.get_node_info(node['name'])

            architecture = node_info['monitorData'][
                'hudson.node_monitors.ArchitectureMonitor']

            swap_space_monitor = node_info['monitorData'][
                'hudson.node_monitors.SwapSpaceMonitor']
            available_swap_space = swap_space_monitor['availableSwapSpace']
            total_swap_space = swap_space_monitor['totalSwapSpace']
            available_physical_memory = swap_space_monitor[
                'availablePhysicalMemory']
            total_physical_memory = swap_space_monitor['totalPhysicalMemory']

            temporary_space = node_info['monitorData'][
                'hudson.node_monitors.TemporarySpaceMonitor']['size']

            disk_space = node_info['monitorData'][
                'hudson.node_monitors.DiskSpaceMonitor']['size']

            clock_diff = node_info['monitorData'][
                'hudson.node_monitors.ClockMonitor']['diff']

            swap_space = str(round(
                available_swap_space / 1024 / 1024, 2)) + '/' + str(
                    round(total_swap_space / 1024 / 1024, 2)) + ' MB'
            physical_memory = str(round(available_physical_memory/1024/1024, 2))\
                              + '/' + str(round(total_physical_memory/1024/1024, 2)) + ' MB'

            temporary = str(round(temporary_space / 1024 / 1024)) + ' MB'
            disk = str(round(disk_space / 1024 / 1024)) + ' MB'

            print('%s%s%s%s%s%s' %
                  (node['name'].ljust(30), architecture.ljust(20),
                   swap_space.ljust(20), physical_memory.ljust(20),
                   temporary.ljust(20), disk.ljust(20)))
Ejemplo n.º 23
0
 def ls(self):
     """List jobs"""
     try:
         server = jenkins_server.get_jenkins_server()
     except ConnectionError as e:
         return '无法连接到Jenkins master,请确认Jenkins服务已启动并可正常访问!'
     job_list_content = '任务名称'.ljust(26) + '类型'.ljust(28) + '链接\n'
     job_list_content += '--------'.ljust(30) + '--------'.ljust(
         30) + '--------\n'
     all_jobs = server.get_all_jobs()
     for job in all_jobs:
         job_list_content += job['fullname'].ljust(30) + job[
             '_class'].split('.')[-1].ljust(30) + job['url'] + '\n'
     return job_list_content
Ejemplo n.º 24
0
 def search(self, key_word):
     """Search update center for plugins"""
     server = jenkins_server.get_jenkins_server(type='jenkinsapi')
     update_center = 'http://updates.jenkins-zh.cn/update-center.json'
     jsonp = requests.get(update_center).content.decode('utf-8')
     update_center_plugins_dict = json.loads(
         jsonp_to_json(jsonp))['plugins']
     plugin_names = update_center_plugins_dict.keys()
     for plugin_name in plugin_names:
         if key_word in plugin_name:
             print('%s%s- %s' %
                   (plugin_name.ljust(50),
                    update_center_plugins_dict[plugin_name]
                    ['version'].ljust(10),
                    update_center_plugins_dict[plugin_name]['excerpt']))
Ejemplo n.º 25
0
 def disable(self, job_name):
     """Disable a job"""
     server = jenkins_server.get_jenkins_server()
     server.disable_job(job_name)
     return '禁用任务%s成功' % job_name
Ejemplo n.º 26
0
 def uninstall(self, plugin_name):
     """Uninstall a plugin"""
     server = jenkins_server.get_jenkins_server()
     server.delete_plugin(plugin_name)
     return '插件%s卸载成功' % plugin_name
Ejemplo n.º 27
0
 def enable(self, job_name):
     """Enable a job"""
     server = jenkins_server.get_jenkins_server()
     server.enable_job(job_name)
     return '启用任务%s成功' % job_name
Ejemplo n.º 28
0
 def version(self):
     """Display Jenkins server version"""
     server = jenkins_server.get_jenkins_server(type='jenkinsapi')
     version = server.version
     return 'Jenkins server version: %s' % version