diff --git a/lib/fog/openstack/models/planning/plan.rb b/lib/fog/openstack/models/planning/plan.rb index 60057f5f7..9ffec3cb1 100644 --- a/lib/fog/openstack/models/planning/plan.rb +++ b/lib/fog/openstack/models/planning/plan.rb @@ -52,6 +52,29 @@ module Fog def remove_role(role_uuid) service.remove_role_from_plan(uuid, role_uuid) end + + def destroy + requires :uuid + service.delete_plan(uuid) + true + end + + def save + requires :name + identity ? update : create + end + + def create + requires :name + merge_attributes(service.create_plan(self.attributes).body) + self + end + + def update(parameters=nil) + requires :uuid + merge_attributes(service.patch_plan(uuid, parameters).body) + self + end end end end diff --git a/tests/openstack/models/planning/plan_tests.rb b/tests/openstack/models/planning/plan_tests.rb index f4ff3455a..bca079f7d 100644 --- a/tests/openstack/models/planning/plan_tests.rb +++ b/tests/openstack/models/planning/plan_tests.rb @@ -31,5 +31,21 @@ Shindo.tests("Fog::Openstack[:planning] | plan", ['openstack']) do tests('#remove_role').succeeds do @instance.remove_role(@role['uuid']) end + + tests('#save').succeeds do + @instance.save + end + + tests('#update').succeeds do + @instance.update + end + + tests('#destroy').succeeds do + @instance.destroy + end + + tests('#create').succeeds do + @instance.create + end end end