Use common function to parse python list

Depends-on: https://review.opendev.org/931749
Change-Id: I152c9871c2fcf909328eb6d8cf73a23d7c32070c
This commit is contained in:
Takashi Kajinami 2024-10-10 10:32:11 +09:00
parent da7785c6fa
commit 06159d4b23
3 changed files with 9 additions and 22 deletions
lib/puppet/provider
nova_aggregate
nova_flavor
spec/unit/provider/nova_flavor

@ -22,7 +22,7 @@ Puppet::Type.type(:nova_aggregate).provide(
:id => attrs[:id],
:availability_zone => attrs[:availability_zone],
:metadata => properties,
:hosts => string2list(attrs[:hosts]).sort,
:hosts => parse_python_list(attrs[:hosts]).sort,
)
end
end
@ -126,8 +126,4 @@ Puppet::Type.type(:nova_aggregate).provide(
end
end
end
def self.string2list(input)
return input[1..-2].split(",").map { |x| x.match(/'(.*?)'/)[1] }
end
end

@ -99,23 +99,14 @@ Puppet::Type.type(:nova_flavor).provide(
access_project_ids = project[:access_project_ids]
# Client can return None and this should be considered as ''
if access_project_ids.downcase.chomp == 'none'
project_value = ''
# If the ids are formatted as Array, surrounding [] should be removed
elsif access_project_ids.start_with?('[') and access_project_ids.end_with?(']')
# TODO(tkajinam): We'd need to consider multiple projects can be returned
project_value = access_project_ids[1..-2]
project_id = nil
project_name = nil
else
project_value = access_project_ids
end
project_value = project_value.gsub('\'', '')
if project_value != ''
# TODO(tkajinam): We'd need to consider multiple projects can be returned
project_value = parse_python_list(access_project_ids)[0]
project = request('project', 'show', project_value)
project_id = project[:id]
project_name = project[:name]
else
project_id = ''
project_name = ''
end
properties = parse_python_dict(attrs[:properties])

@ -168,8 +168,8 @@ domain_id="domain_one_id"
expect(instances[0].swap).to eq('0')
expect(instances[0].rxtx_factor).to eq('1.0')
expect(instances[0].properties).to eq({})
expect(instances[0].project).to eq('')
expect(instances[0].project_name).to eq('')
expect(instances[0].project).to eq(:absent)
expect(instances[0].project_name).to eq(:absent)
expect(instances[1].name).to eq('m1.nano')
expect(instances[1].id).to eq('42')
expect(instances[1].ram).to eq('256')
@ -180,8 +180,8 @@ domain_id="domain_one_id"
expect(instances[1].swap).to eq('0')
expect(instances[1].rxtx_factor).to eq('1.0')
expect(instances[1].properties).to eq({'key1' => 'val1', 'key2' => 'val2'})
expect(instances[1].project).to eq('')
expect(instances[1].project_name).to eq('')
expect(instances[1].project).to eq(:absent)
expect(instances[1].project_name).to eq(:absent)
end
end