Skip to content

Commit ab1ede5

Browse files
Merge pull request #1451 from ATGE/issues/1450
Add slcli order quote-save
2 parents 4eb112a + 68292e2 commit ab1ede5

File tree

7 files changed

+59
-0
lines changed

7 files changed

+59
-0
lines changed

Diff for: SoftLayer/CLI/order/quote_save.py

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
"""Save a quote"""
2+
# :license: MIT, see LICENSE for more details.
3+
import click
4+
5+
from SoftLayer.CLI import environment
6+
from SoftLayer.CLI import formatting
7+
from SoftLayer.managers import ordering
8+
from SoftLayer.utils import clean_time
9+
10+
11+
@click.command()
12+
@click.argument('quote')
13+
@environment.pass_env
14+
def cli(env, quote):
15+
"""Save a quote"""
16+
17+
manager = ordering.OrderingManager(env.client)
18+
result = manager.save_quote(quote)
19+
20+
table = formatting.Table([
21+
'Id', 'Name', 'Created', 'Modified', 'Status'
22+
])
23+
table.align['Name'] = 'l'
24+
25+
table.add_row([
26+
result.get('id'),
27+
result.get('name'),
28+
clean_time(result.get('createDate')),
29+
clean_time(result.get('modifyDate')),
30+
result.get('status'),
31+
])
32+
33+
env.fout(table)

Diff for: SoftLayer/CLI/routes.py

+1
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@
228228
('order:place-quote', 'SoftLayer.CLI.order.place_quote:cli'),
229229
('order:quote-list', 'SoftLayer.CLI.order.quote_list:cli'),
230230
('order:quote-detail', 'SoftLayer.CLI.order.quote_detail:cli'),
231+
('order:quote-save', 'SoftLayer.CLI.order.quote_save:cli'),
231232
('order:quote', 'SoftLayer.CLI.order.quote:cli'),
232233
('order:lookup', 'SoftLayer.CLI.order.lookup:cli'),
233234

Diff for: SoftLayer/fixtures/SoftLayer_Billing_Order_Quote.py

+2
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,5 @@
102102
]
103103
}
104104
}
105+
106+
saveQuote = getObject

Diff for: SoftLayer/managers/ordering.py

+7
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,13 @@ def get_quote_details(self, quote_id):
169169
quote = self.client['Billing_Order_Quote'].getObject(id=quote_id, mask=mask)
170170
return quote
171171

172+
def save_quote(self, quote_id):
173+
"""Save a quote.
174+
175+
:param quote_id: ID number of target quote
176+
"""
177+
return self.client['Billing_Order_Quote'].saveQuote(id=quote_id)
178+
172179
def get_order_container(self, quote_id):
173180
"""Generate an order container from a quote object.
174181

Diff for: docs/cli/ordering.rst

+4
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ Quotes
131131
:prog: order quote-detail
132132
:show-nested:
133133

134+
.. click:: SoftLayer.CLI.order.quote_save:cli
135+
:prog: order quote-save
136+
:show-nested:
137+
134138
.. click:: SoftLayer.CLI.order.place_quote:cli
135139
:prog: order place-quote
136140
:show-nested:

Diff for: tests/CLI/modules/order_tests.py

+5
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,11 @@ def test_quote_detail(self):
401401
self.assert_no_fail(result)
402402
self.assert_called_with('SoftLayer_Billing_Order_Quote', 'getObject', identifier='12345')
403403

404+
def test_quote_save(self):
405+
result = self.run_command(['order', 'quote-save', '12345'])
406+
self.assert_no_fail(result)
407+
self.assert_called_with('SoftLayer_Billing_Order_Quote', 'saveQuote', identifier='12345')
408+
404409
def test_quote_list(self):
405410
result = self.run_command(['order', 'quote-list'])
406411
self.assert_no_fail(result)

Diff for: tests/managers/ordering_tests.py

+7
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,13 @@ def test_get_quote_details(self):
104104
quote_fixture = quote_service.getObject(id=1234)
105105
self.assertEqual(quote, quote_fixture)
106106

107+
def test_save_quote(self):
108+
saved_quote = self.ordering.save_quote(1234)
109+
quote_service = self.ordering.client['Billing_Order_Quote']
110+
quote_fixture = quote_service.getObject(id=1234)
111+
self.assertEqual(saved_quote, quote_fixture)
112+
self.assert_called_with('SoftLayer_Billing_Order_Quote', 'saveQuote', identifier=1234)
113+
107114
def test_verify_quote(self):
108115
extras = {
109116
'hardware': [{

0 commit comments

Comments
 (0)