| # 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) |