def create(ctx, name, sensors, elements): """Create a label. Creates a label with a given NAME and an (optional) list of sensors and elements associated with that label. """ client = ctx.find_object(Client) sensors = sensors or [] if sensors: all_sensors = Sensor.all(client) sensors = [ Sensor.lookup(client, id, resources=all_sensors) for id in sensors ] elements = elements or [] if elements: all_elements = Element.all(client) elements = [ Element.lookup(client, id, resources=all_elements) for id in elements ] label = Label.create(client, attributes={'name': name}) if sensors: label.update_sensors(sensors) if elements: label.update_elements(elements) label = Label.find(client, label.id, include=label_includes) Label.display(client, [label], include=label_includes)
def element(client, label, mac, **kwargs): """List elements for a label. List elements for a given LABEL. Add, remove or replace sensors from the LABEL by using the --add, --remove or --replace arguments respectively. Note that you can specify "none" with these to indicate an empty list. """ label = Label.lookup(client, label) actions = lookup_label_action_resources(client, Element, mac=mac, **kwargs) if actions.add is not None: label.add_elements(actions.add) if actions.remove is not None: label.remove_elements(actions.remove) if actions.replace is not None: label.update_elements(actions.replace) elements = label.elements() Element.display(client, elements, **kwargs)
def element(client, sensor, mac): """Get the element for a sensor. Gets the element a given SENSOR was last seen connected to. """ sensor = Sensor.lookup(client, sensor, mac=mac, include=[Element]) element = sensor.element(use_included=True) Element.display(client, [element] if element else [])
def update(client, element, name, mac, **kwargs): """Updates the attributes of a element. Updates the attributes of a given ELEMENT. """ element = Element.lookup(client, element, mac=mac) element = element.update(name=name) include = [Sensor] element = Element.lookup(client, element.id, mac=mac, include=include) Element.display(client, [element], include=include)
def update(client, element, name, mac, **kwargs): """Updates the attributes of a element. Updates the attributes of a given ELEMENT. """ element = Element.lookup(client, element, mac=mac) element = element.update(attributes={ 'name': name }) include = [Sensor] element = Element.lookup(client, element.id, mac=mac, include=include) Element.display(client, [element], include=include)
def list(client, element, mac, **kwargs): """List elements. Lists information for a given ELEMENT or all elements in the organization. """ include = [Sensor] if element: elements = [Element.lookup(client, element, mac=mac, include=include)] else: elements = Element.all(client, include=include) Element.display(client, elements, include=include)
def list(client, element, mac, **kwargs): """List elements. Lists information for a given ELEMENT or all elements in the organization. """ include = [Sensor] if element: elements = [Element.lookup(client, element, mac=mac, include=include)] else: metadata = kwargs.get('metadata') or None elements = Element.where(client, include=include, metadata=metadata) Element.display(client, elements, include=include)
def test_display_map(client): display_map = Element.display_map(client) assert display_map is not None def validate_display_map(element): values = [f(element) for f in display_map.values()] assert values is not None elements = Element.all(client, include=[Sensor]) assert len(elements) > 0 validate_display_map(elements[0]) elements = Element.all(client) assert len(elements) > 0 validate_display_map(elements[0])
def sensor(client, element, mac, **kwargs): """Get the sensors for an element. Gets the sensors last known to be connected to a given ELEMENT. """ element = Element.lookup(client, element, mac=mac, include=[Sensor]) sensors = element.sensors(use_included=True) Sensor.display(client, sensors, **kwargs)