Add support for hostname change. (#68)

* Add support for hostname change.

* Fix lint

* Fix lint p2

* Update network.py
This commit is contained in:
Pascal Vizeli 2017-05-22 21:59:19 +02:00 committed by GitHub
parent 0cdef0d118
commit 97853d1691
3 changed files with 33 additions and 6 deletions

5
API.md
View File

@ -176,6 +176,11 @@ Optional:
### Network
- GET `/network/info`
```json
{
"hostname": ""
}
```
- POST `/network/options`
```json

View File

@ -1,11 +1,19 @@
"""Init file for HassIO network rest api."""
import logging
from .util import api_process_hostcontrol
import voluptuous as vol
from .util import api_process, api_process_hostcontrol, api_validate
from ..const import ATTR_HOSTNAME
_LOGGER = logging.getLogger(__name__)
SCHEMA_OPTIONS = vol.Schema({
vol.Optional(ATTR_HOSTNAME): vol.Coerce(str),
})
class APINetwork(object):
"""Handle rest api for network functions."""
@ -15,12 +23,21 @@ class APINetwork(object):
self.loop = loop
self.host_control = host_control
@api_process_hostcontrol
def info(self, request):
@api_process
async def info(self, request):
"""Show network settings."""
pass
return {
ATTR_HOSTNAME: self.host_control.hostname,
}
@api_process_hostcontrol
def options(self, request):
async def options(self, request):
"""Edit network settings."""
pass
body = await api_validate(SCHEMA_OPTIONS, request)
# hostname
if ATTR_HOSTNAME in body:
if self.host_control.hostname != body[ATTR_HOSTNAME]:
await self.host_control.set_hostname(body[ATTR_HOSTNAME])
return True

View File

@ -17,6 +17,7 @@ UNKNOWN = 'unknown'
FEATURES_SHUTDOWN = 'shutdown'
FEATURES_REBOOT = 'reboot'
FEATURES_UPDATE = 'update'
FEATURES_HOSTNAME = 'hostname'
FEATURES_NETWORK_INFO = 'network_info'
FEATURES_NETWORK_CONTROL = 'network_control'
@ -117,3 +118,7 @@ class HostControl(object):
if version:
return self._send_command("update {}".format(version))
return self._send_command("update")
def set_hostname(self, hostname):
"""Update hostname on host."""
return self._send_command("hostname {}".format(hostname))