lib/cloudstack-cli/commands/domain.rb in cloudstack-cli-1.0.0.rc3 vs lib/cloudstack-cli/commands/domain.rb in cloudstack-cli-1.0.0.rc4

- old
+ new

@@ -13,6 +13,63 @@ print_table table say "Total number of domains: #{domains.size}" end end + desc 'create', 'create domain' + option :network_domain, desc: "Network domain for networks in the domain." + option :parent_domain, desc: "Assigns new domain a parent domain by domain name of the parent. If no parent domain is specied, the ROOT domain is assumed." + def create(name) + create_domains([options.merge(name: name)]) + end + + desc 'delete', 'delete domain' + option :parent_domain, desc: "Parent domain by domain name of the parent. If no parent domain is specied, the ROOT domain is assumed." + def delete(name) + delete_domains([options.merge(name: name)]) + end + + no_commands do + + def create_domains(domains) + puts domains + domains.each do |domain| + say "Creating domain '#{domain['name']}'... " + + if dom = client.list_domains(name: domain["name"], listall: true).first + unless domain["parent_domain"] && dom['parentdomainname'] != domain["parent_domain"] + say "domain '#{domain["name"]}' already exists.", :yellow + next + end + end + + if domain["parent_domain"] + parent = client.list_domains(name: domain["parent_domain"], listall: true).first + unless parent + say "parent domain '#{domain["parent_domain"]}' of domain '#{domain["name"]}' not found.", :yellow + next + end + domain['parentdomain_id'] = parent['id'] + end + + client.create_domain(domain) ? say("OK.", :green) : say("Failed.", :red) + end + end + + def delete_domains(domains) + domains.each do |domain| + print "Deleting domain '#{domain['name']}'..." + if dom = client.list_domains(name: domain["name"], listall: true).first + if domain["parent_domain"] && dom['parentdomainname'] =! domain["parent_domain"] + say "domain '#{domain["name"]}' with same name found, but parent_domain '#{domain["parent_domain"]}' does not match.", :yellow + next + end + client.delete_domain(id: dom['id']) ? say(" OK.", :green) : say(" Failed.", :red) + else + say "domain '#{domain["name"]}' not found.", :yellow + end + end + end + + end + end