diff options
Diffstat (limited to 'saharaclient/api/cluster_templates.py')
-rw-r--r-- | saharaclient/api/cluster_templates.py | 66 |
1 files changed, 65 insertions, 1 deletions
diff --git a/saharaclient/api/cluster_templates.py b/saharaclient/api/cluster_templates.py index da9b3fe..77af407 100644 --- a/saharaclient/api/cluster_templates.py +++ b/saharaclient/api/cluster_templates.py @@ -20,7 +20,7 @@ class ClusterTemplate(base.Resource): resource_name = 'Cluster Template' -class ClusterTemplateManager(base.ResourceManager): +class ClusterTemplateManagerV1(base.ResourceManager): resource_class = ClusterTemplate NotUpdated = base.NotUpdated() @@ -37,6 +37,15 @@ class ClusterTemplateManager(base.ResourceManager): 'hadoop_version': hadoop_version, } + return self._do_create(data, description, cluster_configs, + node_groups, anti_affinity, net_id, + default_image_id, use_autoconfig, shares, + is_public, is_protected, domain_name) + + def _do_create(self, data, description, cluster_configs, node_groups, + anti_affinity, net_id, default_image_id, use_autoconfig, + shares, is_public, is_protected, domain_name): + self._copy_if_defined(data, description=description, cluster_configs=cluster_configs, @@ -101,3 +110,58 @@ class ClusterTemplateManager(base.ResourceManager): def export(self, cluster_template_id): """Export a Cluster Template.""" return self._get('/cluster-templates/%s/export' % cluster_template_id) + + +class ClusterTemplateManagerV2(ClusterTemplateManagerV1): + NotUpdated = base.NotUpdated() + + def create(self, name, plugin_name, plugin_version, description=None, + cluster_configs=None, node_groups=None, anti_affinity=None, + net_id=None, default_image_id=None, use_autoconfig=None, + shares=None, is_public=None, is_protected=None, + domain_name=None): + """Create a Cluster Template.""" + + data = { + 'name': name, + 'plugin_name': plugin_name, + 'plugin_version': plugin_version + } + + return self._do_create(data, description, cluster_configs, + node_groups, anti_affinity, net_id, + default_image_id, use_autoconfig, shares, + is_public, is_protected, domain_name) + + def update(self, cluster_template_id, name=NotUpdated, + plugin_name=NotUpdated, plugin_version=NotUpdated, + description=NotUpdated, cluster_configs=NotUpdated, + node_groups=NotUpdated, anti_affinity=NotUpdated, + net_id=NotUpdated, default_image_id=NotUpdated, + use_autoconfig=NotUpdated, shares=NotUpdated, + is_public=NotUpdated, is_protected=NotUpdated, + domain_name=NotUpdated): + """Update a Cluster Template.""" + + data = {} + self._copy_if_updated(data, name=name, + plugin_name=plugin_name, + plugin_version=plugin_version, + description=description, + cluster_configs=cluster_configs, + node_groups=node_groups, + anti_affinity=anti_affinity, + neutron_management_network=net_id, + default_image_id=default_image_id, + use_autoconfig=use_autoconfig, + shares=shares, + is_public=is_public, + is_protected=is_protected, + domain_name=domain_name) + + return self._patch('/cluster-templates/%s' % cluster_template_id, + data, 'cluster_template') + + +# NOTE(jfreud): keep this around for backwards compatibility +ClusterTemplateManager = ClusterTemplateManagerV1 |