mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
176 lines
5.9 KiB
Python
176 lines
5.9 KiB
Python
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
""" Test cases for checking quota API
|
|
"""
|
|
|
|
# Import Local Modules
|
|
import tools.marvin.marvin
|
|
from tools.marvin.marvin.cloudstackTestCase import *
|
|
from tools.marvin.marvin.cloudstackAPI import *
|
|
from tools.marvin.marvin.lib.utils import *
|
|
from tools.marvin.marvin.lib.base import *
|
|
from tools.marvin.marvin.lib.common import *
|
|
from nose.plugins.attrib import attr
|
|
|
|
# Import System modules
|
|
import time
|
|
|
|
|
|
class TestQuotaTariffOrder(cloudstackTestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
testClient = super(TestQuotaTariffOrder, cls).getClsTestClient()
|
|
cls.api_client = testClient.getApiClient()
|
|
cls.services = testClient.getParsedTestDataConfig()
|
|
|
|
# Get Zone, Domain and templates
|
|
cls.domain = get_domain(cls.api_client)
|
|
cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests())
|
|
|
|
cls._cleanup = []
|
|
# Create Account
|
|
cls.account = Account.create(
|
|
cls.api_client,
|
|
cls.services["account"],
|
|
domainid=cls.domain.id
|
|
)
|
|
cls._cleanup.append(cls.account)
|
|
|
|
cls.services["account"] = cls.account.name
|
|
|
|
return
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
super(TestQuotaTariffOrder, cls).tearDownClass()
|
|
|
|
def setUp(self):
|
|
self.apiclient = self.testClient.getApiClient()
|
|
self.dbclient = self.testClient.getDbConnection()
|
|
self.cleanup = []
|
|
self.tariffs = []
|
|
return
|
|
|
|
def tearDown(self):
|
|
self.delete_tariffs()
|
|
super(TestQuotaTariffOrder, self).tearDown()
|
|
|
|
def delete_tariffs(self):
|
|
for tariff in self.tariffs:
|
|
cmd = quotaTariffDelete.quotaTariffDeleteCmd()
|
|
cmd.id = tariff.uuid
|
|
self.api_client.quotaTariffDelete(cmd)
|
|
|
|
@attr(
|
|
tags=[
|
|
"advanced",
|
|
"smoke"],
|
|
required_hardware="false")
|
|
def test_01_quota_tariff_order(self):
|
|
"""Test Quota Tariff Order
|
|
"""
|
|
|
|
cmd = quotaTariffCreate.quotaTariffCreateCmd()
|
|
cmd.name = 'tf1'
|
|
cmd.value = '1'
|
|
cmd.activationrule = '10'
|
|
cmd.usagetype = '22'
|
|
cmd.position = '2'
|
|
self.tariffs.append(self.api_client.quotaTariffCreate(cmd))
|
|
|
|
cmd = quotaTariffCreate.quotaTariffCreateCmd()
|
|
cmd.name = 'tf2'
|
|
cmd.value = '1'
|
|
cmd.activationrule = 'lastTariffs[lastTariffs.length -1].value + 7'
|
|
cmd.usagetype = '22'
|
|
cmd.position = '3'
|
|
self.tariffs.append(self.api_client.quotaTariffCreate(cmd))
|
|
|
|
cmd = quotaTariffCreate.quotaTariffCreateCmd()
|
|
cmd.name = 'tf3'
|
|
cmd.value = '1'
|
|
cmd.activationrule = 'lastTariffs[lastTariffs.length -2].value + lastTariffs[lastTariffs.length -1].value'
|
|
cmd.usagetype = '22'
|
|
cmd.position = '4'
|
|
self.tariffs.append(self.api_client.quotaTariffCreate(cmd))
|
|
|
|
cmd = quotaCredits.quotaCreditsCmd()
|
|
cmd.account = self.account.name
|
|
cmd.domainid = self.domain.id
|
|
cmd.value = 54
|
|
self.api_client.quotaCredits(cmd)
|
|
|
|
# Fetch account ID from account_uuid
|
|
self.debug("select id from account where uuid = '%s';"
|
|
% self.account.id)
|
|
|
|
qresultset = self.dbclient.execute(
|
|
"select id from account where uuid = '%s';"
|
|
% self.account.id
|
|
)
|
|
|
|
account_id = qresultset[0][0]
|
|
|
|
self.debug("SELECT id from `domain` d WHERE uuid = '%s';"
|
|
% self.domain.id)
|
|
|
|
qresultset = self.dbclient.execute(
|
|
"SELECT id from `domain` d WHERE uuid = '%s';"
|
|
% self.domain.id
|
|
)
|
|
|
|
domain_id = qresultset[0][0]
|
|
|
|
self.debug("SELECT id from data_center dc where dc.uuid = '%s';"
|
|
% self.zone.id)
|
|
|
|
qresultset = self.dbclient.execute(
|
|
"SELECT id from data_center dc where dc.uuid = '%s';"
|
|
% self.zone.id
|
|
)
|
|
|
|
zone_id = qresultset[0][0]
|
|
|
|
start = datetime.datetime.now() + datetime.timedelta(seconds=1)
|
|
end = datetime.datetime.now() + datetime.timedelta(hours=1)
|
|
|
|
query = "INSERT INTO cloud_usage.cloud_usage (zone_id,account_id,domain_id,description,usage_display,"
|
|
"usage_type,raw_usage,vm_instance_id,vm_name,offering_id,template_id,usage_id,`type`,`size`,"
|
|
"network_id,start_date,end_date,virtual_size,cpu_speed,cpu_cores,memory,quota_calculated,"
|
|
"is_hidden,state) VALUES ('{}','{}','{}','Test','1 Hrs',22,1,NULL,NULL,NULL,NULL,NULL,"
|
|
"'VirtualMachine',NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL,0,0,NULL);".format(zone_id, account_id, domain_id, start, end)
|
|
|
|
self.debug(query)
|
|
|
|
self.dbclient.execute(
|
|
query)
|
|
|
|
cmd = quotaUpdate.quotaUpdateCmd()
|
|
self.api_client.quotaUpdate(cmd)
|
|
|
|
cmd = quotaBalance.quotaBalanceCmd()
|
|
cmd.domainid = self.account.domainid
|
|
cmd.account = self.account.name
|
|
response = self.apiclient.quotaBalance(cmd)
|
|
|
|
self.debug(f"Quota Balance: {response.balance}")
|
|
|
|
self.assertEqual(response.balance.startquota, 0, f"startQuota is supposed to be 0 but was {response.balance.startquota}")
|
|
|
|
return
|