def test_conflict(self): ctx = self.mock_ctx('testconflictnic') current_ctx.set(ctx=ctx) ctx.logger.info("BEGIN conflict NIC test") ctx.logger.info("create NIC") status_code = nic.create(ctx=ctx) ctx.logger.debug("status_code = " + str(status_code) ) self.assertTrue(bool((status_code == 200) or (status_code == 201))) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic",constants.SUCCEEDED, 600) ctx.logger.info("create NIC conflict") status_code = nic.create(ctx=ctx) ctx.logger.debug("status_code =" + str(status_code) ) self.assertTrue(bool((status_code == 200) or (status_code == 201))) ctx.logger.info("delete NIC") self.assertEqual(202, nic.delete(ctx=ctx)) ctx.logger.info("check is NIC is release") try: current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic","deleting", 600) except utils.WindowsAzureError: pass ctx.logger.info("delete conflict NIC") self.assertEqual(204, nic.delete(ctx=ctx)) ctx.logger.info("END conflict NIC test")
def test_add_public_ip(self): ctx = self.mock_ctx('testaddpublicip') ctx.logger.info("BEGIN attach public_ip to NIC test") ctx.logger.info("create NIC") current_ctx.set(ctx=ctx) nic.create(ctx=ctx) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic", constants.SUCCEEDED, 600) ctx.logger.info("attach public_ip to NIC: {}".format(ctx.instance.runtime_properties['subnet_id'])) ctx_rel = self.mock_relationship_ctx('testaddpublicip', ctx.instance.runtime_properties['subnet_id']) current_ctx.set(ctx=ctx_rel) nic.add_public_ip(ctx=ctx_rel) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic", constants.SUCCEEDED, 600) ctx.logger.info('Checking if Public IP is correctly set') current_ctx.set(ctx=ctx_rel) response = (connection.AzureConnectionClient().azure_get( ctx, ("subscriptions/{}" + "/resourceGroups/{}/providers/" + "microsoft.network/networkInterfaces/{}" "?api-version={}" ).format(test_utils.SUBSCRIPTION_ID, 'nic_resource_group_test' + self.__random_id, ctx.node.properties[constants.NETWORK_INTERFACE_KEY], constants.AZURE_API_VERSION_06 ) ) ).json() public_ip_id = nic.get_public_ip_id(ctx=ctx_rel) self.assertEqual(response['properties']['ipConfigurations'][ 0]['properties']['publicIPAddress']['id'], public_ip_id) ctx.logger.info("DELETING NIC") current_ctx.set(ctx=ctx) self.assertEqual(202, nic.delete(ctx=ctx)) ctx.logger.info("Check if NIC is released.") current_ctx.set(ctx=ctx) self.assertRaises(utils.WindowsAzureError, nic.get_provisioning_state, ctx=ctx ) ctx.logger.info("END add public ip NIC test")
def test_create_2nic_instance(self): ctx = self.mock_ctx('testcreate2nicinstance') current_ctx.set(ctx=ctx) ctx.logger.info("BEGIN create 2 NIC VM test: {}".format(ctx.instance.id)) subnet_name = 'instancesubnet_test_2_' + self.__random_id nic_name = 'instance_nic_test_2_' + self.__random_id ctx.logger.info("create new subnet") ctx.node.properties[constants.SUBNET_KEY] = subnet_name ctx.node.properties[constants.SUBNET_ADDRESS_KEY] =\ "10.0.2.0/24" current_ctx.set(ctx=ctx) subnet.create(ctx=ctx) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "subnet",constants.SUCCEEDED, 600) ctx.logger.info("create second NIC") ctx.node.properties[constants.NETWORK_INTERFACE_KEY] = nic_name ctx.node.properties[constants.NIC_PRIMARY_KEY] = True ctx.node.properties[constants.AZURE_CONFIG_KEY][constants.SUBNET_KEY] = subnet_name for relationship in ctx.instance.relationships: if relationship.type == constants.NIC_CONNECTED_TO_SUBNET: relationship.target.instance.runtime_properties[constants.SUBNET_KEY] = subnet_name current_ctx.set(ctx=ctx) nic.create(ctx=ctx) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic",constants.SUCCEEDED, 600) ctx.logger.info("create VM") ctx.node.properties[constants.FLAVOR_KEY] = 'Standard_A3' ctx.instance.relationships.append(test_mockcontext.MockRelationshipContext(node_id='test', runtime_properties={ constants.NETWORK_INTERFACE_KEY: nic_name, constants.NIC_PRIMARY_KEY: True }, type=constants.INSTANCE_CONNECTED_TO_NIC) ) current_ctx.set(ctx=ctx) instance.create(ctx=ctx) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "instance",constants.SUCCEEDED, 600) ctx.logger.info("verify the NIC's number of the instance") json = instance.get_json_from_azure() self.assertEqual(len(json['properties']['networkProfile']['networkInterfaces']),2) ctx.logger.info("delete VM") self.assertEqual(202, instance.delete(ctx=ctx)) ctx.logger.info("END create VM test")
def test_delete(self): ctx = self.mock_ctx('testdeletenic') current_ctx.set(ctx=ctx) ctx.logger.info("BEGIN delete NIC test") ctx.logger.info("create NIC") status_code = nic.create(ctx=ctx) ctx.logger.debug("status_code = " + str(status_code) ) self.assertTrue(bool((status_code == 200) or (status_code == 201))) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic",constants.SUCCEEDED, 600) ctx.logger.info("trying to delete an non-deletable nic") ctx.node.properties[constants.DELETABLE_KEY] = False current_ctx.set(ctx=ctx) self.assertEqual(0, nic.delete(ctx=ctx)) ctx.logger.info("delete NIC") ctx.node.properties[constants.DELETABLE_KEY] = True current_ctx.set(ctx=ctx) self.assertEqual(202, nic.delete(ctx=ctx)) ctx.logger.info("check is nic is release") try: current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic","deleting", 600) except utils.WindowsAzureError: pass ctx.logger.info("END delete NIC test")
def setUpClass(self): ctx = self.mock_ctx('init','') ctx.logger.info("BEGIN test datadisk number "\ + self.__random_id) current_ctx.set(ctx=ctx) ctx.logger.info("CREATE ressource_group") resource_group.create(ctx=ctx) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "resource_group", constants.SUCCEEDED, timeout=600) current_ctx.set(ctx=ctx) ctx.logger.info("CREATE storage account") ctx.node.properties[constants.ACCOUNT_TYPE_KEY] = "Standard_LRS" storage.create(ctx=ctx) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "storage",constants.SUCCEEDED, timeout=600) ctx.logger.info("CREATE network") current_ctx.set(ctx=ctx) ctx.node.properties[constants.VIRTUAL_NETWORK_ADDRESS_KEY] = \ "10.0.0.0/16" network.create(ctx=ctx) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "network",constants.SUCCEEDED, timeout=600) ctx.logger.info("CREATE subnet") current_ctx.set(ctx=ctx) ctx.node.properties[constants.SUBNET_ADDRESS_KEY] = "10.0.1.0/24" ctx.instance.runtime_properties[constants.VIRTUAL_NETWORK_KEY] =\ "diskvirtualnetwork_test" + self.__random_id subnet.create(ctx=ctx) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "subnet",constants.SUCCEEDED, timeout=600) ctx.logger.info("CREATE NIC") current_ctx.set(ctx=ctx) nic.create(ctx=ctx) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic",constants.SUCCEEDED, timeout=600)
def test_concurrent_delete_instance(self): ctx1 = self.mock_ctx('testconcurrentdelete1', id=1) ctx2 = self.mock_ctx('testconcurrentdelete2', id=2) ctx1.logger.info("BEGIN concurrent delete VM 1 test") ctx2.logger.info("BEGIN concurrent delete VM 2 test") ctx1.logger.info("CREATE nic 1") current_ctx.set(ctx=ctx1) nic.create(ctx=ctx1) current_ctx.set(ctx=ctx1) utils.wait_status(ctx1, "nic",constants.SUCCEEDED, 600) ctx2.logger.info("CREATE nic 2") current_ctx.set(ctx=ctx2) nic.create(ctx=ctx2) current_ctx.set(ctx=ctx2) utils.wait_status(ctx2, "nic",constants.SUCCEEDED, 600) ctx1.logger.info("create VM 1") instance.create(ctx=ctx1) ctx2.logger.info("create VM 2") instance.create(ctx=ctx2) ctx1.logger.info("check VM 1 status") ctx2.logger.info("check VM 2 status") status_vm1 = constants.CREATING status_vm2 = constants.CREATING while bool(status_vm1 == constants.CREATING or status_vm2 == constants.CREATING) : current_ctx.set(ctx=ctx1) status_vm1 = instance.get_provisioning_state(ctx=ctx1) current_ctx.set(ctx=ctx2) status_vm2 = instance.get_provisioning_state(ctx=ctx2) time.sleep(TIME_DELAY) ctx1.logger.info("check VM 1 creation success") self.assertEqual(constants.SUCCEEDED, status_vm1) ctx2.logger.info("check VM 2 creation success") self.assertEqual(constants.SUCCEEDED, status_vm2) def delete_vm(mokctx, queue): queue.put(instance.delete(ctx=mokctx)) queue1 = Queue.Queue() queue2 = Queue.Queue() vm1 = threading.Thread(target=delete_vm, args=(ctx1,queue1)) vm2 = threading.Thread(target=delete_vm, args=(ctx2,queue2)) ctx1.logger.info("delete VM 1") vm1.start() ctx2.logger.info("delete VM 2") vm2.start() vm1.join() vm2.join() self.assertEqual(202, queue1.get()) self.assertEqual(202, queue2.get()) current_ctx.set(ctx=ctx1) ctx1.logger.info("DELETE nic 1") nic.delete(ctx=ctx1) current_ctx.set(ctx=ctx2) ctx2.logger.info("DELETE nic 2") nic.delete(ctx=ctx2) ctx1.logger.info("END concurrent delete VM 1 test") ctx2.logger.info("END concurrent delete VM 2 test")