Merge "add bulk edit hosts api" into dev/experimental
This commit is contained in:
commit
2e3bb99460
@ -114,6 +114,18 @@ def _get_request_data():
|
|||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
def _get_request_data_as_list():
|
||||||
|
if request.data:
|
||||||
|
try:
|
||||||
|
return json.loads(request.data)
|
||||||
|
except Exception:
|
||||||
|
raise exception_handler.BadRequest(
|
||||||
|
'request data is not json formatted: %s' % request.data
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
def _get_request_args():
|
def _get_request_args():
|
||||||
return dict(request.args)
|
return dict(request.args)
|
||||||
|
|
||||||
@ -1846,6 +1858,20 @@ def update_host(host_id):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/hosts", methods=['PUT'])
|
||||||
|
@log_user_action
|
||||||
|
@login_required
|
||||||
|
def update_hosts():
|
||||||
|
"""update hosts."""
|
||||||
|
data = _get_request_data_as_list()
|
||||||
|
return utils.make_json_response(
|
||||||
|
200,
|
||||||
|
host_api.update_hosts(
|
||||||
|
current_user, data
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@app.route("/hosts/<int:host_id>", methods=['DELETE'])
|
@app.route("/hosts/<int:host_id>", methods=['DELETE'])
|
||||||
@log_user_action
|
@log_user_action
|
||||||
@login_required
|
@login_required
|
||||||
@ -1937,7 +1963,7 @@ def list_host_networks(host_id):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@app.route("/host-networks", methods=['GET'])
|
@app.route("/host/networks", methods=['GET'])
|
||||||
@log_user_action
|
@log_user_action
|
||||||
@login_required
|
@login_required
|
||||||
def list_hostnetworks():
|
def list_hostnetworks():
|
||||||
@ -1965,7 +1991,7 @@ def show_host_network(host_id, host_network_id):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@app.route("/host-networks/<int:host_network_id>", methods=['GET'])
|
@app.route("/host/networks/<int:host_network_id>", methods=['GET'])
|
||||||
@log_user_action
|
@log_user_action
|
||||||
@login_required
|
@login_required
|
||||||
def show_hostnetwork(host_network_id):
|
def show_hostnetwork(host_network_id):
|
||||||
@ -1990,6 +2016,17 @@ def add_host_network(host_id):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/hosts/networks", methods=['POST'])
|
||||||
|
@log_user_action
|
||||||
|
@login_required
|
||||||
|
def add_host_networks():
|
||||||
|
"""add host networks."""
|
||||||
|
data = _get_request_data_as_list()
|
||||||
|
return utils.make_json_response(
|
||||||
|
200, host_api.add_host_networks(current_user, data)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@app.route(
|
@app.route(
|
||||||
"/hosts/<int:host_id>/networks/<int:host_network_id>",
|
"/hosts/<int:host_id>/networks/<int:host_network_id>",
|
||||||
methods=['PUT']
|
methods=['PUT']
|
||||||
|
@ -1144,7 +1144,7 @@ def review_cluster(session, reviewer, cluster_id, review={}, **kwargs):
|
|||||||
clusterhosts = []
|
clusterhosts = []
|
||||||
for clusterhost in cluster.clusterhosts:
|
for clusterhost in cluster.clusterhosts:
|
||||||
if (
|
if (
|
||||||
clusterhost.id in clusterhost_ids or
|
clusterhost.clusterhost_id in clusterhost_ids or
|
||||||
clusterhost.host_id in host_ids
|
clusterhost.host_id in host_ids
|
||||||
):
|
):
|
||||||
clusterhosts.append(clusterhost)
|
clusterhosts.append(clusterhost)
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
"""Host database operations."""
|
"""Host database operations."""
|
||||||
import functools
|
import functools
|
||||||
import logging
|
import logging
|
||||||
|
import netaddr
|
||||||
|
|
||||||
from compass.db.api import database
|
from compass.db.api import database
|
||||||
from compass.db.api import metadata_holder as metadata_api
|
from compass.db.api import metadata_holder as metadata_api
|
||||||
@ -60,7 +61,7 @@ RESP_DEPLOYED_CONFIG_FIELDS = [
|
|||||||
RESP_DEPLOY_FIELDS = [
|
RESP_DEPLOY_FIELDS = [
|
||||||
'status', 'host'
|
'status', 'host'
|
||||||
]
|
]
|
||||||
UPDATED_FIELDS = ['name', 'reinstall_os']
|
UPDATED_FIELDS = ['host_id', 'name', 'reinstall_os']
|
||||||
UPDATED_CONFIG_FIELDS = [
|
UPDATED_CONFIG_FIELDS = [
|
||||||
'put_os_config'
|
'put_os_config'
|
||||||
]
|
]
|
||||||
@ -244,13 +245,9 @@ def validate_host(session, host):
|
|||||||
|
|
||||||
|
|
||||||
@utils.supported_filters(optional_support_keys=UPDATED_FIELDS)
|
@utils.supported_filters(optional_support_keys=UPDATED_FIELDS)
|
||||||
@database.run_in_session()
|
|
||||||
@user_api.check_user_permission_in_session(
|
|
||||||
permission.PERMISSION_UPDATE_HOST
|
|
||||||
)
|
|
||||||
@utils.wrap_to_dict(RESP_FIELDS)
|
@utils.wrap_to_dict(RESP_FIELDS)
|
||||||
def update_host(session, updater, host_id, **kwargs):
|
def _update_host(session, updater, host_id, **kwargs):
|
||||||
"""Update a host."""
|
"""Update a host internal."""
|
||||||
host = utils.get_db_object(
|
host = utils.get_db_object(
|
||||||
session, models.Host, id=host_id
|
session, models.Host, id=host_id
|
||||||
)
|
)
|
||||||
@ -261,6 +258,26 @@ def update_host(session, updater, host_id, **kwargs):
|
|||||||
return utils.update_db_object(session, host, **kwargs)
|
return utils.update_db_object(session, host, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
@database.run_in_session()
|
||||||
|
@user_api.check_user_permission_in_session(
|
||||||
|
permission.PERMISSION_UPDATE_HOST
|
||||||
|
)
|
||||||
|
def update_host(session, updater, host_id, **kwargs):
|
||||||
|
"""Update a host."""
|
||||||
|
return _update_host(session, updater, host_id=host_id, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
@database.run_in_session()
|
||||||
|
@user_api.check_user_permission_in_session(
|
||||||
|
permission.PERMISSION_UPDATE_HOST
|
||||||
|
)
|
||||||
|
def update_hosts(session, updater, data=[]):
|
||||||
|
hosts = []
|
||||||
|
for host_data in data:
|
||||||
|
hosts.append(_update_host(session, updater, **host_data))
|
||||||
|
return hosts
|
||||||
|
|
||||||
|
|
||||||
@utils.supported_filters([])
|
@utils.supported_filters([])
|
||||||
@database.run_in_session()
|
@database.run_in_session()
|
||||||
@user_api.check_user_permission_in_session(
|
@user_api.check_user_permission_in_session(
|
||||||
@ -475,26 +492,69 @@ def get_hostnetwork(session, getter, host_network_id, **kwargs):
|
|||||||
@utils.input_validates(
|
@utils.input_validates(
|
||||||
ip=utils.check_ip
|
ip=utils.check_ip
|
||||||
)
|
)
|
||||||
|
@utils.wrap_to_dict(RESP_NETWORK_FIELDS)
|
||||||
|
def _add_host_network(
|
||||||
|
session, creator, host_id, exception_when_existing=True,
|
||||||
|
interface=None, ip=None, **kwargs
|
||||||
|
):
|
||||||
|
host = utils.get_db_object(
|
||||||
|
session, models.Host, id=host_id
|
||||||
|
)
|
||||||
|
is_host_editable(session, host, creator)
|
||||||
|
ip_int = long(netaddr.IPAddress(ip))
|
||||||
|
host_network = utils.get_db_object(
|
||||||
|
session, models.HostNetwork, False,
|
||||||
|
ip_int=ip_int
|
||||||
|
)
|
||||||
|
if host_network:
|
||||||
|
raise exception.InvalidParameter(
|
||||||
|
'ip %s exists in database' % ip
|
||||||
|
)
|
||||||
|
return utils.add_db_object(
|
||||||
|
session, models.HostNetwork,
|
||||||
|
exception_when_existing,
|
||||||
|
host_id, interface, ip=ip, **kwargs
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@database.run_in_session()
|
@database.run_in_session()
|
||||||
@user_api.check_user_permission_in_session(
|
@user_api.check_user_permission_in_session(
|
||||||
permission.PERMISSION_ADD_HOST_NETWORK
|
permission.PERMISSION_ADD_HOST_NETWORK
|
||||||
)
|
)
|
||||||
@utils.wrap_to_dict(RESP_NETWORK_FIELDS)
|
|
||||||
def add_host_network(
|
def add_host_network(
|
||||||
session, creator, host_id,
|
session, creator, host_id,
|
||||||
exception_when_existing=True,
|
exception_when_existing=True,
|
||||||
interface=None, **kwargs
|
interface=None, **kwargs
|
||||||
):
|
):
|
||||||
"""Create a host network."""
|
"""Create a host network."""
|
||||||
host = utils.get_db_object(
|
return _add_host_network(
|
||||||
session, models.Host, id=host_id
|
session, creator, host_id, exception_when_existing,
|
||||||
|
interface=interface, **kwargs
|
||||||
)
|
)
|
||||||
is_host_editable(session, host, creator)
|
|
||||||
return utils.add_db_object(
|
|
||||||
session, models.HostNetwork,
|
@database.run_in_session()
|
||||||
exception_when_existing,
|
@user_api.check_user_permission_in_session(
|
||||||
host_id, interface, **kwargs
|
permission.PERMISSION_ADD_HOST_NETWORK
|
||||||
)
|
)
|
||||||
|
def add_host_networks(
|
||||||
|
session, creator,
|
||||||
|
exception_when_existing=True,
|
||||||
|
data=[]
|
||||||
|
):
|
||||||
|
"""Create host networks."""
|
||||||
|
hosts = []
|
||||||
|
for host_data in data:
|
||||||
|
host_id = host_data['host_id']
|
||||||
|
networks = host_data['networks']
|
||||||
|
host_networks = []
|
||||||
|
hosts.append({'host_id': host_id, 'networks': host_networks})
|
||||||
|
for network in networks:
|
||||||
|
host_networks.append(_add_host_network(
|
||||||
|
session, creator, host_id, exception_when_existing,
|
||||||
|
**network
|
||||||
|
))
|
||||||
|
return hosts
|
||||||
|
|
||||||
|
|
||||||
@utils.supported_filters(
|
@utils.supported_filters(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user