Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
dd912e89
Commit
dd912e89
authored
Dec 01, 2015
by
halcyon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
asset list and add system_arch
parent
f72c5753
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
31 additions
and
109 deletions
+31
-109
asset_api.py
jasset/asset_api.py
+9
-80
forms.py
jasset/forms.py
+2
-1
models.py
jasset/models.py
+1
-0
mytags.py
jumpserver/templatetags/mytags.py
+5
-0
cmdb_excel_2015_12_01_22_17.xlsx
static/files/excels/cmdb_excel_2015_12_01_22_17.xlsx
+0
-0
asset_detail.html
templates/jasset/asset_detail.html
+5
-1
asset_edit.html
templates/jasset/asset_edit.html
+3
-0
asset_list.html
templates/jasset/asset_list.html
+6
-27
No files found.
jasset/asset_api.py
View file @
dd912e89
# coding: utf-8
from
__future__
import
division
import
xlrd
import
xlsxwriter
from
django.db.models
import
AutoField
...
...
@@ -75,83 +76,6 @@ def db_asset_update(**kwargs):
Asset
.
objects
.
filter
(
id
=
asset_id
)
.
update
(
**
kwargs
)
#
#
# def batch_host_edit(host_alter_dic, j_user='', j_password=''):
# """ 批量修改主机函数 """
# j_id, j_ip, j_idc, j_port, j_type, j_group, j_dept, j_active, j_comment = host_alter_dic
# groups, depts = [], []
# is_active = {u'是': '1', u'否': '2'}
# login_types = {'LDAP': 'L', 'MAP': 'M'}
# a = Asset.objects.get(id=j_id)
# if '...' in j_group[0].split():
# groups = a.bis_group.all()
# else:
# for group in j_group[0].split():
# c = BisGroup.objects.get(name=group.strip())
# groups.append(c)
#
# if '...' in j_dept[0].split():
# depts = a.dept.all()
# else:
# for d in j_dept[0].split():
# p = DEPT.objects.get(name=d.strip())
# depts.append(p)
#
# j_type = login_types[j_type]
# j_idc = IDC.objects.get(name=j_idc)
# if j_type == 'M':
# if a.password != j_password:
# j_password = cryptor.decrypt(j_password)
# a.ip = j_ip
# a.port = j_port
# a.login_type = j_type
# a.idc = j_idc
# a.is_active = j_active
# a.comment = j_comment
# a.username = j_user
# a.password = j_password
# else:
# a.ip = j_ip
# a.port = j_port
# a.idc = j_idc
# a.login_type = j_type
# a.is_active = is_active[j_active]
# a.comment = j_comment
# a.save()
# a.bis_group = groups
# a.dept = depts
# a.save()
#
#
# def db_host_delete(request, host_id):
# """ 删除主机操作 """
# if is_group_admin(request) and not validate(request, asset=[host_id]):
# return httperror(request, '删除失败, 您无权删除!')
#
# asset = Asset.objects.filter(id=host_id)
# if asset:
# asset.delete()
# else:
# return httperror(request, '删除失败, 没有此主机!')
#
#
# def db_idc_delete(request, idc_id):
# """ 删除IDC操作 """
# if idc_id == 1:
# return httperror(request, '删除失败, 默认IDC不能删除!')
#
# default_idc = IDC.objects.get(id=1)
#
# idc = IDC.objects.filter(id=idc_id)
# if idc:
# idc_class = idc[0]
# idc_class.asset_set.update(idc=default_idc)
# idc.delete()
# else:
# return httperror(request, '删除失败, 没有这个IDC!')
def
sort_ip_list
(
ip_list
):
""" ip地址排序 """
ip_list
.
sort
(
key
=
lambda
s
:
map
(
int
,
s
.
split
(
'.'
)))
...
...
@@ -389,7 +313,6 @@ def get_ansible_asset_info(asset_ip, setup_info):
for
disk_name
,
disk_info
in
disk_all
.
iteritems
():
if
disk_name
.
startswith
(
'sd'
)
or
disk_name
.
startswith
(
'hd'
)
or
disk_name
.
startswith
(
'vd'
):
disk_need
[
disk_name
]
=
disk_info
.
get
(
"size"
)
all_ip
=
setup_info
.
get
(
"ansible_all_ipv4_addresses"
)
other_ip_list
=
all_ip
.
remove
(
asset_ip
)
if
asset_ip
in
all_ip
else
[]
other_ip
=
','
.
join
(
other_ip_list
)
if
other_ip_list
else
''
...
...
@@ -401,12 +324,17 @@ def get_ansible_asset_info(asset_ip, setup_info):
cpu_cores
=
setup_info
.
get
(
"ansible_processor_count"
)
cpu
=
cpu_type
+
' * '
+
unicode
(
cpu_cores
)
memory
=
setup_info
.
get
(
"ansible_memtotal_mb"
)
try
:
memory_format
=
round
((
int
(
memory
)
/
1000
),
1
)
except
Exception
:
memory_format
=
memory
disk
=
disk_need
system_type
=
setup_info
.
get
(
"ansible_distribution"
)
system_version
=
setup_info
.
get
(
"ansible_distribution_version"
)
system_arch
=
setup_info
.
get
(
"ansible_architecture"
)
# asset_type = setup_info.get("ansible_system")
sn
=
setup_info
.
get
(
"ansible_product_serial"
)
asset_info
=
[
other_ip
,
mac
,
cpu
,
memory
,
disk
,
sn
,
system_type
,
system_version
,
brand
]
asset_info
=
[
other_ip
,
mac
,
cpu
,
memory
_format
,
disk
,
sn
,
system_type
,
system_version
,
brand
,
system_arch
]
return
asset_info
...
...
@@ -422,7 +350,7 @@ def asset_ansible_update(obj_list, name=''):
continue
else
:
asset_info
=
get_ansible_asset_info
(
asset
.
ip
,
setup_info
)
other_ip
,
mac
,
cpu
,
memory
,
disk
,
sn
,
system_type
,
system_version
,
brand
=
asset_info
other_ip
,
mac
,
cpu
,
memory
,
disk
,
sn
,
system_type
,
system_version
,
brand
,
system_arch
=
asset_info
asset_dic
=
{
"other_ip"
:
other_ip
,
"mac"
:
mac
,
"cpu"
:
cpu
,
...
...
@@ -431,6 +359,7 @@ def asset_ansible_update(obj_list, name=''):
"sn"
:
sn
,
"system_type"
:
system_type
,
"system_version"
:
system_version
,
"system_arch"
:
system_arch
,
"brand"
:
brand
}
...
...
jasset/forms.py
View file @
dd912e89
...
...
@@ -12,7 +12,8 @@ class AssetForm(forms.ModelForm):
fields
=
[
"ip"
,
"other_ip"
,
"hostname"
,
"port"
,
"group"
,
"username"
,
"password"
,
"use_default_auth"
,
"idc"
,
"mac"
,
"remote_ip"
,
"brand"
,
"cpu"
,
"memory"
,
"disk"
,
"system_type"
,
"system_version"
,
"cabinet"
,
"position"
,
"number"
,
"status"
,
"asset_type"
,
"env"
,
"sn"
,
"is_active"
,
"comment"
"cabinet"
,
"position"
,
"number"
,
"status"
,
"asset_type"
,
"env"
,
"sn"
,
"is_active"
,
"comment"
,
"system_arch"
]
...
...
jasset/models.py
View file @
dd912e89
...
...
@@ -78,6 +78,7 @@ class Asset(models.Model):
disk
=
models
.
CharField
(
max_length
=
128
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'硬盘'
)
system_type
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"系统类型"
)
system_version
=
models
.
CharField
(
max_length
=
8
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"系统版本号"
)
system_arch
=
models
.
CharField
(
max_length
=
16
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"系统平台"
)
cabinet
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'机柜号'
)
position
=
models
.
IntegerField
(
blank
=
True
,
null
=
True
,
verbose_name
=
u'机器位置'
)
number
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'资产编号'
)
...
...
jumpserver/templatetags/mytags.py
View file @
dd912e89
...
...
@@ -272,3 +272,8 @@ def get_push_info(push_id, arg):
return
[
role
.
name
for
role
in
push
.
role
.
all
()]
else
:
return
[]
@register.filter
(
name
=
'get_cpu_core'
)
def
get_cpu_core
(
cpu_info
):
return
cpu_info
.
split
(
'* '
)[
1
]
if
cpu_info
else
''
static/files/excels/cmdb_excel_2015_12_01_22_17.xlsx
0 → 100644
View file @
dd912e89
File added
templates/jasset/asset_detail.html
View file @
dd912e89
...
...
@@ -97,7 +97,7 @@
</tr>
<tr>
<td
class=
"text-navy"
>
内存
</td>
<td>
{{ asset.memory|default_if_none:"" }}{% if asset.memory %}
M
{% endif %}
</td>
<td>
{{ asset.memory|default_if_none:"" }}{% if asset.memory %}
G
{% endif %}
</td>
</tr>
<tr>
<td
class=
"text-navy"
>
硬盘
</td>
...
...
@@ -129,6 +129,10 @@
<td
class=
"text-navy"
>
系统版本
</td>
<td>
{{ asset.system_type|default_if_none:"" }} {{ asset.system_version|default_if_none:"" }}
</td>
</tr>
<tr>
<td
class=
"text-navy"
>
系统平台
</td>
<td>
{{ asset.system_arch|default_if_none:"" }}
</td>
</tr>
<tr>
<td
class=
"text-navy"
>
运行环境
</td>
<td>
{{ asset.get_env_display|default_if_none:"" }}
</td>
...
...
templates/jasset/asset_edit.html
View file @
dd912e89
...
...
@@ -105,6 +105,9 @@
<div
class=
"hr-line-dashed"
></div>
{{ af.system_version|bootstrap_horizontal }}
<div
class=
"hr-line-dashed"
></div>
{{ af.system_arch|bootstrap_horizontal }}
<div
class=
"hr-line-dashed"
></div>
{{ af.number|bootstrap_horizontal }}
...
...
templates/jasset/asset_list.html
View file @
dd912e89
...
...
@@ -96,31 +96,6 @@
</div>
</div>
</div>
{#
<div
class=
"col-sm-2"
>
#}
{#
</div>
#}
{##}
{#
<div
class=
"col-sm-2"
>
#}
{#
</div>
#}
{#
<div
class=
"col-sm-2"
>
#}
{#
</div>
#}
{#
<div
class=
"col-sm-4"
>
#}
{#
<div
class=
"input-group"
>
#}
{#
<input
type=
"text"
class=
"form-control m-b"
id=
"search_input"
name=
"keyword"
value=
"{{ keyword }}"
placeholder=
"Search"
>
#}
{#
<input
type=
"text"
style=
"display: none"
>
#}
{#
<div
class=
"input-group-btn"
>
#}
{#
<button
id=
'search_btn'
href=
"/jasset/asset_list/?search=true"
type=
"button"
class=
"btn btn-xm btn-primary search-btn"
onclick=
"change_info()"
>
#}
{# - 搜索 -#}
{#
</button>
#}
{#
<button
type=
"button"
href=
"/jasset/asset_list/?export=true"
name=
"export"
class=
"btn btn-xm btn-success search-btn-excel"
onclick=
"return false"
>
#}
{# - 导出 -#}
{#
</button>
#}
{#
</div>
#}
{#
</div>
#}
{#
</div>
#}
<div
id=
"export"
></div>
<table
class=
"table table-striped table-bordered table-hover "
id=
"editable"
name=
"editable"
>
<thead>
...
...
@@ -134,7 +109,9 @@
<th
class=
"text-center"
>
所属主机组
</th>
{#
<th
class=
"text-center"
>
配置信息
</th>
#}
<th
class=
"text-center"
>
操作系统
</th>
<th
class=
"text-center"
>
使用默认管理
</th>
<th
class=
"text-center"
>
cpu核数
</th>
<th
class=
"text-center"
>
内存
</th>
<th
class=
"text-center"
>
硬盘
</th>
<th
class=
"text-center"
>
操作
</th>
</tr>
</thead>
...
...
@@ -150,7 +127,9 @@
<td
class=
"text-center"
>
{{ asset.group.all|group_str2 }}
</td>
{#
<td
class=
"text-center"
>
{{ asset.cpu }}|{{ asset.memory }}|{{ asset.disk }}
</td>
#}
<td
class=
"text-center"
>
{{ asset.system_type|default_if_none:"" }}{{ asset.system_version|default_if_none:"" }}
</td>
<td
class=
"text-center"
>
{{ asset.use_default_auth|bool2str }}
</td>
<td
class=
"text-center"
>
{{ asset.cpu|get_cpu_core }}
</td>
<td
class=
"text-center"
>
{{ asset.memory }}{% if asset.memory %}G{% endif %}
</td>
<td
class=
"text-center"
>
{{ asset.disk }}
</td>
<td
class=
"text-center"
data-editable=
'false'
>
<a
href=
"/jasset/asset_detail/?id={{ asset.id }}"
class=
"btn btn-xs btn-primary"
>
详情
</a>
{% ifnotequal session_role_id 0 %}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment