1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 """
17 Resource class and its manager for interface attachment in Compute API v2
18 """
19
20 from yakumo import base
21 from yakumo.constant import UNDEF
22 from yakumo import mapper
23 from yakumo import utils
24
25
26 ATTRIBUTE_MAPPING = [
27 ('port', 'port_id', mapper.Resource('port')),
28 ('id', 'port_id', mapper.Resource('port')),
29 ('network', 'net_id', mapper.Resource('network')),
30 ('mac_addr', 'mac_addr', mapper.Noop),
31 ('fixed_ips', 'fixed_ips', mapper.Noop),
32 ('status', 'port_state', mapper.Noop),
33 ]
34
35
37 """Resource class for interface attachment in Compute API v2"""
38
40 """
41 Detach a interface
42
43 @rtype: None
44 """
45 super(Resource, self).delete()
46
47
49 """Manager class for interface attachment in Compute API v2"""
50
51 resource_class = Resource
52 service_type = 'compute'
53 _attr_mapping = ATTRIBUTE_MAPPING
54 _hidden_methods = ["create", "update", "delete"]
55 _json_resource_key = 'interfaceAttachment'
56 _json_resources_key = 'interfaceAttachments'
57 _url_resource_path = '/servers/%s/os-interface'
58
60 """Attach a interface
61
62 @keyword port: Port
63 @type port: yakumo.neutron.v2.port.Resource
64 @keyword network: Network
65 @type network: yakumo.neutron.v2.network.Resource
66 @keyword fixed_ips: list of fixed ips (required if network= exists)
67 @type fixed_ips: [yakumo.neutron.v2.fixed_ip.Resource]
68 @return: Interface attachment
69 @rtype: yakumo.nova.v2.interface_attachment.Resource
70 """
71 return super(Manager, self).create(port=port,
72 network=network,
73 fixed_ips=fixed_ips)
74