Skip to content

Commit 65b61d3

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Enable to specify which fixed-ip to add to a vm."
2 parents 25a77f7 + 7f98148 commit 65b61d3

4 files changed

Lines changed: 32 additions & 7 deletions

File tree

doc/source/command-objects/server.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,14 @@ Add fixed IP address to server
1313
.. code:: bash
1414
1515
openstack server add fixed ip
16+
[--fixed-ip-address <ip-address>]
1617
<server>
1718
<network>
1819
20+
.. option:: --fixed-ip-address <ip-address>
21+
22+
Requested fixed IP address
23+
1924
.. describe:: <server>
2025

2126
Server to receive the fixed IP address (name or ID)

openstackclient/compute/v2/server.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,11 @@ def get_parser(self, prog_name):
206206
"Network to allocate the fixed IP address from (name or ID)"
207207
),
208208
)
209+
parser.add_argument(
210+
"--fixed-ip-address",
211+
metavar="<ip-address>",
212+
help=_("Requested fixed IP address"),
213+
)
209214
return parser
210215

211216
def take_action(self, parsed_args):
@@ -217,7 +222,8 @@ def take_action(self, parsed_args):
217222
network = utils.find_resource(
218223
compute_client.networks, parsed_args.network)
219224

220-
server.add_fixed_ip(network.id)
225+
server.interface_attach(port_id=None, net_id=network.id,
226+
fixed_ip=parsed_args.fixed_ip_address)
221227

222228

223229
class AddFloatingIP(command.Command):

openstackclient/tests/unit/compute/v2/test_server.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,31 +104,39 @@ def setUp(self):
104104

105105
# Set add_fixed_ip method to be tested.
106106
self.methods = {
107-
'add_fixed_ip': None,
107+
'interface_attach': None,
108108
}
109109

110-
def test_server_add_fixed_ip(self):
110+
def _test_server_add_fixed_ip(self, extralist, fixed_ip_address):
111111
servers = self.setup_servers_mock(count=1)
112112
network = compute_fakes.FakeNetwork.create_one_network()
113113
self.networks_mock.get.return_value = network
114114

115115
arglist = [
116116
servers[0].id,
117117
network.id,
118-
]
118+
] + extralist
119119
verifylist = [
120120
('server', servers[0].id),
121-
('network', network.id)
121+
('network', network.id),
122+
('fixed_ip_address', fixed_ip_address)
122123
]
123124
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
124125

125126
result = self.cmd.take_action(parsed_args)
126127

127-
servers[0].add_fixed_ip.assert_called_once_with(
128-
network.id,
128+
servers[0].interface_attach.assert_called_once_with(
129+
port_id=None, net_id=network.id, fixed_ip=fixed_ip_address
129130
)
130131
self.assertIsNone(result)
131132

133+
def test_server_add_fixed_ip(self):
134+
self._test_server_add_fixed_ip([], None)
135+
136+
def test_server_add_specific_fixed_ip(self):
137+
extralist = ['--fixed-ip-address', '5.6.7.8']
138+
self._test_server_add_fixed_ip(extralist, '5.6.7.8')
139+
132140

133141
class TestServerAddFloatingIP(TestServer):
134142

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
features:
3+
- |
4+
Add ``--fixed-ip-address`` option to the ``server add fixed ip`` command
5+
[Bug `1678140 <https://bugs.launchpad.net/python-openstackclient/+bug/1678140>`_]
6+

0 commit comments

Comments
 (0)