diff --git a/_states/manilang.py b/_states/manilang.py
index 964518a..97609c1 100644
--- a/_states/manilang.py
+++ b/_states/manilang.py
@@ -30,6 +30,8 @@
     'set_type_specs': 'manilang.set_share_type_extra_specs',
     'unset_type_specs': 'manilang.unset_share_type_extra_specs',
     'delete_type': 'manilang.delete_share_type',
+    'service_list': 'manilang.service_list',
+    'service_update': 'manilang.service_update',
 }
 
 
@@ -151,6 +153,64 @@
         return _find_failed(name, 'share_type')
 
 
+def service_enabled(name, binary, cloud_name, microversion=None):
+    """
+    Method allows enable service by binary and name.
+
+    :param name:    name of a host where service is running
+    :param binary:  name of the service have to be run
+    """
+
+    ret = {}
+
+    services = __salt__[manilang_func['service_list']](binary=binary, cloud_name=cloud_name)['services']
+
+    # You are able to either enable certain manila-share instance by name@driver
+    # or all existed instances on a node by name
+    if '@' in name:
+        disabled_services = [s for s in services if name == s['host'] and s['status'] == 'disabled']
+    else:
+        disabled_services = [s for s in services if name == s['host'].split('@')[0] and s['status'] == 'disabled']
+
+    if len(disabled_services):
+        for service in disabled_services:
+
+            changes = __salt__[manilang_func['service_update']](service['host'], binary, 'enable', cloud_name=cloud_name, microversion=microversion)
+            ret[service['host']] = {'disabled': changes['disabled']}
+
+        return _updated(name, binary, ret)
+    return _no_changes(name, binary)
+
+
+def service_disabled(name, binary, cloud_name, microversion=None):
+    """
+    Method allows disable service by binary and name.
+
+    :param name:    name of a host where service is running
+    :param binary:  name of the service have to be disabled
+    """
+
+    ret = {}
+
+    services = __salt__[manilang_func['service_list']](binary=binary, cloud_name=cloud_name)['services']
+
+    # You are able to either disable certain manila-share instance by name@driver
+    # or all existed instances on a node by name
+    if '@' in name:
+        enabled_services = [s for s in services if name == s['host'] and s['status'] == 'enabled']
+    else:
+        enabled_services = [s for s in services if name == s['host'].split('@')[0] and s['status'] == 'enabled']
+
+    if len(enabled_services):
+        for service in enabled_services:
+
+            changes = __salt__[manilang_func['service_update']](service['host'], binary, 'disable', cloud_name=cloud_name, microversion=microversion)
+            ret[service['host']] = {'disabled': changes['disabled']}
+
+        return _updated(name, binary, ret)
+    return _no_changes(name, binary)
+
+
 def _created(name, resource, resource_definition):
     changes_dict = {
         'name': name,
