mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Co-authored-by: rtodirica <rtodirica@ena.com> Co-authored-by: Huy Le <huylm@unitech.vn> Co-authored-by: radu-todirica <Radu.Todirica@ness.com> Co-authored-by: Huy Le <minh.le@ext.ewerk.com> Co-authored-by: Simon Weller <siweller77@gmail.com> Co-authored-by: dahn <daan@onecht.net>
95 lines
3.6 KiB
Python
95 lines
3.6 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.
|
|
|
|
import requests
|
|
from marvin.lib.utils import (validateList)
|
|
from marvin.lib.base import (VirtualMachine, FirewallRule, FirewallPolicy, TungstenTag,
|
|
ApplicationPolicySet, AddressGroup, ServiceGroup, LogicalRouter,
|
|
NetworkPolicy)
|
|
from marvin.cloudstackAPI import (listTungstenFabricProviders, listSystemVms)
|
|
from marvin.codes import PASS
|
|
|
|
def not_tungsten_fabric_zone(apiclient, zone_id):
|
|
cmd = listTungstenFabricProviders.listTungstenFabricProvidersCmd()
|
|
cmd.zoneid = zone_id
|
|
|
|
response = apiclient.listTungstenFabricProviders(cmd)
|
|
return validateList(response)[0] != PASS
|
|
|
|
|
|
def is_object_created(apiclient, zone_id, object, id):
|
|
cmd = listTungstenFabricProviders.listTungstenFabricProvidersCmd()
|
|
cmd.zoneid = zone_id
|
|
|
|
response = apiclient.listTungstenFabricProviders(cmd)
|
|
if validateList(response)[0] != PASS:
|
|
raise Exception("Warning: zone tungsten provider doesn't exist")
|
|
|
|
host = response[0].tungstenproviderhostname
|
|
port = response[0].tungstenproviderport
|
|
|
|
r = requests.get("http://%s:%s/%s/%s" % (host, port, object, id))
|
|
status_code = r.status_code
|
|
return status_code == 200
|
|
|
|
|
|
def is_object_deleted(apiclient, zone_id, object, id):
|
|
cmd = listTungstenFabricProviders.listTungstenFabricProvidersCmd()
|
|
cmd.zoneid = zone_id
|
|
|
|
response = apiclient.listTungstenFabricProviders(cmd)
|
|
if validateList(response)[0] != PASS:
|
|
raise Exception("Warning: zone tungsten provider doesn't exist")
|
|
|
|
host = response[0].tungstenproviderhostname
|
|
port = response[0].tungstenproviderport
|
|
|
|
r = requests.get("http://%s:%s/%s/%s" % (host, port, object, id))
|
|
status_code = r.status_code
|
|
return status_code == 404
|
|
|
|
|
|
def get_list_system_vm(apiclient, zone_id):
|
|
cmd = listSystemVms.listSystemVmsCmd()
|
|
cmd.zoneid = zone_id
|
|
|
|
return apiclient.listSystemVms(cmd)
|
|
|
|
|
|
def cleanup_resources(api_client, zoneid, resources):
|
|
for obj in resources:
|
|
if isinstance(obj, VirtualMachine):
|
|
obj.delete(api_client, expunge=True)
|
|
elif isinstance(obj, FirewallRule):
|
|
obj.delete(api_client, zoneid, obj.uuid)
|
|
elif isinstance(obj, FirewallPolicy):
|
|
obj.delete(api_client, zoneid, obj.uuid)
|
|
elif isinstance(obj, TungstenTag):
|
|
obj.delete(api_client, zoneid, obj.uuid)
|
|
elif isinstance(obj, ApplicationPolicySet):
|
|
obj.delete(api_client, zoneid, obj.uuid)
|
|
elif isinstance(obj, ServiceGroup):
|
|
obj.delete(api_client, zoneid, obj.uuid)
|
|
elif isinstance(obj, AddressGroup):
|
|
obj.delete(api_client, zoneid, obj.uuid)
|
|
elif isinstance(obj, LogicalRouter):
|
|
obj.delete(api_client, zoneid, obj.uuid)
|
|
elif isinstance(obj, NetworkPolicy):
|
|
obj.delete(api_client, zoneid, obj.uuid)
|
|
else:
|
|
obj.delete(api_client)
|