Проблемы с развертыванием группы безопасности сети с использованием python: объект NetworkSecurityGroup не имеет атрибута 'lower' - PullRequest
0 голосов
/ 03 мая 2019

Заранее спасибо, я пытаюсь создать NSG, используя python и получаю проблему с

Сообщение = Невозможно построить модель: Невозможно десериализовать в объект: тип, AttributeError: у объекта 'NetworkSecurityGroup' нет атрибута 'lower', DeserializationError: Невозможно десериализовать в объект: тип, AttributeError: у объекта «NetworkSecurityGroup» нет атрибута «нижний»

from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.compute import ComputeManagementClient
from azure.mgmt.network import NetworkManagementClient
from azure.mgmt.compute.models import DiskCreateOption
from azure.mgmt.network.v2017_03_01.models import NetworkSecurityGroup
from azure.mgmt.network.v2017_03_01.models import SecurityRule
import azure.mgmt.network.models

SUBSCRIPTION_ID = 'XXXXX'
GROUP_NAME = 'AQRG'
LOCATION = 'westus'
VM_NAME = 'myVM'



def get_credentials():
    credentials = ServicePrincipalCredentials(
        client_id = 'xxxx',
        secret = 'xxxx',
        tenant = 'xxxx'
    )

    return credentials
def create_network_security_group(network_client):
        params_create = azure.mgmt.network.models.NetworkSecurityGroup(
            location=LOCATION,
            security_rules=[
                azure.mgmt.network.models.SecurityRule(
                    name='rdp rule',
                    access=azure.mgmt.network.models.SecurityRuleAccess.allow,
                    description='test security rule',
                    destination_address_prefix='*',
                    destination_port_range='3389',
                    direction=azure.mgmt.network.models.SecurityRuleDirection.inbound,
                    priority=500,
                    protocol=azure.mgmt.network.models.SecurityRuleProtocol.tcp,
                    source_address_prefix='*',
                    source_port_range='*',
                ),
            ],
        ),
        result_create = network_client.network_security_groups.create_or_update(
            GROUP_NAME,
            'nsg-vm',
            params_create,
        )

        return result_create.result()



# creation_result = create_network_security_group(network_client)
# print("------------------------------------------------------")
# print(creation_result)
# input('Press enter to continue...')

if __name__ == "__main__":
    credentials = get_credentials()

    resource_group_client = ResourceManagementClient(
        credentials, 
        SUBSCRIPTION_ID
    )
    network_client = NetworkManagementClient(
        credentials, 
        SUBSCRIPTION_ID
    )
    compute_client = ComputeManagementClient(
        credentials, 
        SUBSCRIPTION_ID
    )


    creation_result = create_network_security_group(network_client)
    print("------------------------------------------------------")
    print(creation_result)
    input('Press enter to continue...')

Я новичок в python и создал этот кусок кода через несколько часов. Я получаю эту ошибку при развертывании NSG, и мне придется работать над связыванием NSG с подсетью

def attach_network_security_group(network_client):
    params_create = azure.mgmt.network.models.Subnet(
            network_security_group='nsg-vm',
        )

    result_create = network_client.subnets.create_or_update(
            GROUP_NAME,
            VNET,
            SUBNET,
            params_create,
        )

    return result_create.result()

1 Ответ

1 голос
/ 04 мая 2019

Для вашей проблемы это просто маленькая ошибка.Вам просто нужно удалить , и тогда код будет выглядеть так:

params_create = azure.mgmt.network.models.NetworkSecurityGroup(
            location=LOCATION,
            security_rules=[
                azure.mgmt.network.models.SecurityRule(
                    name='rdp rule',
                    access=azure.mgmt.network.models.SecurityRuleAccess.allow,
                    description='test security rule',
                    destination_address_prefix='*',
                    destination_port_range='3389',
                    direction=azure.mgmt.network.models.SecurityRuleDirection.inbound,
                    priority=500,
                    protocol=azure.mgmt.network.models.SecurityRuleProtocol.tcp,
                    source_address_prefix='*',
                    source_port_range='*',
                ),
            ],
        )
...