2 from sfa.util.plxrn import PlXrn
3 from sfa.util.xrn import Xrn
4 from sfa.rspecs.elements.execute import Execute
5 from sfa.rspecs.elements.install import Install
6 from sfa.rspecs.elements.login import Login
7 from sfa.rspecs.rspec_elements import RSpecElement, RSpecElements
11 'services': RSpecElement(RSpecElements.SERVICES, '//default:services | //services'),
12 'install': RSpecElement(RspecElements.INSTALL, './default:install | ./install'),
13 'execute': RSpecElement(RspecElements.EXECUTE, './default:execute | ./execute'),
14 'login': RSpecElement(RspecElements.LOGIN, './default:login | ./login'),
18 def add_services(xml, services):
19 for service in services:
20 service_elem = etree.SubElement(xml, 'service')
21 for install in service.get('install', []):
22 install_elem = etree.SubElement(service_elem, 'install')
23 for field in Install.fields:
25 install_elem.set(field, install[field])
26 for execute in service.get('execute', []):
27 execute_elem = etree.SubElement(service_elem, 'execute')
28 for field in Execute.fields:
30 execute_elem.set(field, execute[field])
31 for login in service.get('login', []):
32 login_elem = etree.SubElement(service_elem, 'login')
33 for field in Login.fields:
35 login_elem.set(field, login[field])
39 def get_services(xml):
41 for services_elem in xml.xpath(PGv2Services.elements['services'].path):
42 service = Services(services_elem.attrib, services_elem)
44 # get install elements
45 service['install'] = []
46 for install_elem in xml.xpath(PGv2Services.elements['install'].path):
47 install = Install(install_elem.attrib, install_elem)
48 service['install'].append(install)
50 # get execute elements
51 service['execute'] = []
52 for execute_elem in xml.xpath(PGv2Services.elements['execute'].path):
53 execute = Execute(execute_elem.attrib, execute_elem)
54 service['execute'].append(execute)
58 for login_elem in xml.xpath(PGv2Services.elements['login'].path):
59 login = Login(login_elem.attrib, login_elem)
60 service['login'].append(login)
62 services.append(service)