mirror of https://github.com/openspug/spug
U - 主机管理 docker连接地址已不再必填 #18
parent
cc368c2c7f
commit
1d6f3e66c1
|
@ -37,7 +37,8 @@ def get():
|
|||
@blueprint.route('/', methods=['POST'])
|
||||
@require_permission('assets_host_add')
|
||||
def post():
|
||||
form, error = JsonParser('name', 'type', 'zone', 'docker_uri', 'ssh_ip', 'ssh_port',
|
||||
form, error = JsonParser('name', 'type', 'zone', 'ssh_ip', 'ssh_port',
|
||||
Argument('docker_uri', nullable=True, required=False),
|
||||
Argument('desc', nullable=True, required=False)).parse()
|
||||
if error is None:
|
||||
host = Host(**form)
|
||||
|
@ -59,7 +60,8 @@ def delete(host_id):
|
|||
@blueprint.route('/<int:host_id>', methods=['PUT'])
|
||||
@require_permission('assets_host_edit')
|
||||
def put(host_id):
|
||||
form, error = JsonParser('name', 'type', 'zone', 'docker_uri', 'ssh_ip', 'ssh_port',
|
||||
form, error = JsonParser('name', 'type', 'zone', 'ssh_ip', 'ssh_port',
|
||||
Argument('docker_uri', nullable=True, required=False),
|
||||
Argument('desc', nullable=True, required=False)).parse()
|
||||
if error is None:
|
||||
host = Host.query.get_or_404(host_id)
|
||||
|
@ -75,6 +77,7 @@ def get_valid(host_id):
|
|||
if not Setting.has('ssh_private_key'):
|
||||
utils.generate_and_save_ssh_key()
|
||||
if ssh.ssh_ping(cli.ssh_ip, cli.ssh_port):
|
||||
if cli.docker_uri:
|
||||
try:
|
||||
sync_host_info(host_id, cli.docker_uri)
|
||||
except DockerException:
|
||||
|
@ -92,6 +95,7 @@ def post_valid(host_id):
|
|||
cli = Host.query.get_or_404(host_id)
|
||||
ssh.add_public_key(cli.ssh_ip, cli.ssh_port, form.secret)
|
||||
if ssh.ssh_ping(cli.ssh_ip, cli.ssh_port):
|
||||
if cli.docker_uri:
|
||||
try:
|
||||
sync_host_info(host_id, cli.docker_uri)
|
||||
except DockerException:
|
||||
|
@ -139,7 +143,7 @@ def host_import():
|
|||
def sync_host_info(host_id, uri):
|
||||
host_info = DockerClient(base_url=uri).docker_info()
|
||||
operate_system = host_info.get('OperatingSystem')
|
||||
memory = math.ceil(int(host_info.get('MemTotal'))/1024/1024/1024)
|
||||
memory = math.ceil(int(host_info.get('MemTotal')) / 1024 / 1024 / 1024)
|
||||
cpu = host_info.get('NCPU')
|
||||
# outer_ip = 1
|
||||
# inner_ip = 2
|
||||
|
|
|
@ -75,6 +75,7 @@ def ssh_ping(hostname, port):
|
|||
hostname,
|
||||
port=port,
|
||||
username='root',
|
||||
timeout=5,
|
||||
pkey=RSAKey.from_private_key(StringIO(Setting.ssh_private_key)))
|
||||
except AuthenticationException:
|
||||
return False
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
<el-form-item label="备注信息"><span>{{ props.row.desc }}</span></el-form-item>
|
||||
</el-form>
|
||||
<el-row v-else style="text-align: center">
|
||||
<span style="color: #99a9bf">暂没有配置信息,点击验证自动获取...</span>
|
||||
<span style="color: #99a9bf">暂没有配置信息,点击验证自动获取,需要配置docker连接地址</span>
|
||||
</el-row>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
@ -41,8 +41,12 @@
|
|||
<el-table-column prop="name" label="主机名称"></el-table-column>
|
||||
<el-table-column prop="zone" label="所属区域"></el-table-column>
|
||||
<el-table-column prop="type" label="类型"></el-table-column>
|
||||
<el-table-column prop="docker_uri" label="Docker连接" width="180"></el-table-column>
|
||||
<el-table-column prop="ssh_ip" label="SSH连接"></el-table-column>
|
||||
<el-table-column label="SSH连接">
|
||||
<template slot-scope="scope">
|
||||
{{scope.row['ssh_ip']}}:{{scope.row['ssh_port']}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="desc" label="备注"></el-table-column>
|
||||
<el-table-column label="操作" width="240px" v-if="has_permission('assets_host_edit|assets_host_del|assets_host_valid')">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="has_permission('assets_host_edit')" size="small" @click="handleEdit(scope.row)">编辑</el-button>
|
||||
|
@ -65,7 +69,7 @@
|
|||
</el-pagination>
|
||||
</div>
|
||||
|
||||
<el-dialog :title="title" :visible.sync="dialogVisible" width="80%" :close-on-click-modal="false">
|
||||
<el-dialog visible :title="title" v-if="dialogVisible" width="80%" :close-on-click-modal="false">
|
||||
<el-tabs v-model="activeName" >
|
||||
<el-tab-pane label="单条记录" name="first">
|
||||
<el-form :model="form" label-width="80px">
|
||||
|
@ -76,22 +80,22 @@
|
|||
<el-button style="margin-left: 15px" type="text" @click="addZone">添加区域</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="主机类型" prop="type" required>
|
||||
<el-input v-model="form.type"></el-input>
|
||||
<el-input v-model="form.type" placeholder="主机的类型,例如:web-server"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="主机名称" prop="name" required>
|
||||
<el-input v-model="form.name"></el-input>
|
||||
<el-input v-model="form.name" placeholder="主机唯一标识,例如:web-01"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Docker连接地址" prop="docker_uri" required>
|
||||
<el-input v-model="form.docker_uri" placeholder="连接主机Docker的地址,例如:192.168.1.1:2375"></el-input>
|
||||
<el-form-item label="Docker连接地址" prop="docker_uri">
|
||||
<el-input v-model="form.docker_uri" placeholder="用于应用发布等与容器相关功能,例如:192.168.1.1:2375"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="SSH地址" prop="ssh_ip" required>
|
||||
<el-input v-model="form.ssh_ip" placeholder="连接主机的SSH地址,例如:192.168.1.1"></el-input>
|
||||
<el-input v-model="form.ssh_ip" placeholder="连接主机的SSH地址,例如:192.168.1.1"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="SSH端口" prop="ssh_ip" required>
|
||||
<el-input v-model="form.ssh_port"></el-input>
|
||||
<el-input v-model="form.ssh_port" placeholder="主机的SSH端口,例如:22"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注信息" prop="outer_ip">
|
||||
<el-input v-model="form.desc" type="textarea" autosize></el-input>
|
||||
<el-input v-model="form.desc" type="textarea" autosize placeholder="额外备注信息"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
|
Loading…
Reference in New Issue