Add module and states for gnocchi

Initial version of the module allows to create/delete/update/list
archive policies and rules.
Also added client states supporting rules and policies creation

Change-Id: I7341dfb26a39275e1a9b55f7a49fd2ace9584612
Related-Prod: https://mirantis.jira.com/browse/PROD-20719
diff --git a/_modules/gnocchiv1/__init__.py b/_modules/gnocchiv1/__init__.py
new file mode 100644
index 0000000..16edda5
--- /dev/null
+++ b/_modules/gnocchiv1/__init__.py
@@ -0,0 +1,33 @@
+try:
+    import os_client_config
+    from keystoneauth1 import exceptions as ka_exceptions
+    REQUIREMENTS_MET = True
+except ImportError:
+    REQUIREMENTS_MET = False
+
+from gnocchiv1 import archive_policy
+
+archive_policy_create = archive_policy.archive_policy_create
+archive_policy_delete = archive_policy.archive_policy_delete
+archive_policy_list = archive_policy.archive_policy_list
+archive_policy_update = archive_policy.archive_policy_update
+archive_policy_read = archive_policy.archive_policy_read
+
+archive_policy_rule_create = archive_policy.archive_policy_rule_create
+archive_policy_rule_delete = archive_policy.archive_policy_rule_delete
+archive_policy_rule_list = archive_policy.archive_policy_rule_list
+archive_policy_rule_read = archive_policy.archive_policy_rule_read
+
+__all__ = (
+    'archive_policy_update', 'archive_policy_create', 'archive_policy_list', 'archive_policy_delete',
+    'archive_policy_read', 'archive_policy_rule_create', 'archive_policy_rule_delete', 'archive_policy_rule_list',
+    'archive_policy_rule_read'
+)
+
+def __virtual__():
+    """Only load gnocchiv1 if requirements are available."""
+    if REQUIREMENTS_MET:
+        return 'gnocchiv1'
+    else:
+        return False, ("The gnocchiv1 execution module cannot be loaded: "
+                       "os_client_config or keystoneauth are unavailable.")