Charm Interface - Gnocchi
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

requires.py 1.2KB

1234567891011121314151617181920212223242526272829303132333435
  1. # Copyright 2017 Canonical Ltd
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. from charms.reactive import RelationBase
  15. from charms.reactive import hook
  16. from charms.reactive import scopes
  17. class GnocchiRequires(RelationBase):
  18. scope = scopes.GLOBAL
  19. auto_accessors = ['gnocchi_url']
  20. @hook('{requires:gnocchi}-relation-{joined,changed,departed}')
  21. def joined(self):
  22. self.set_state('{relation_name}.connected')
  23. if self.gnocchi_url() is not None:
  24. self.set_state('{relation_name}.available')
  25. else:
  26. self.remove_state('{relation_name}.available')
  27. @hook('{requires:gnocchi}-relation-{broken}')
  28. def broken(self):
  29. self.remove_state('{relation_name}.connected')