def handle_update(self, json_snippet, tmpl_diff, prop_diff):
        try:
            obj_0 = self.vnc_lib().route_table_read(id=self.resource_id)
        except:
            raise Exception(_('route-table %s not found.') % self.name)

        if prop_diff.get(self.ROUTES) is not None:
            obj_1 = vnc_api.RouteTableType()
            if prop_diff.get(self.ROUTES,
                             {}).get(self.ROUTES_ROUTE) is not None:
                for index_1 in range(
                        len(
                            prop_diff.get(self.ROUTES,
                                          {}).get(self.ROUTES_ROUTE))):
                    obj_2 = vnc_api.RouteType()
                    if prop_diff.get(self.ROUTES, {}).get(
                            self.ROUTES_ROUTE,
                        {})[index_1].get(self.ROUTES_ROUTE_PREFIX) is not None:
                        obj_2.set_prefix(
                            prop_diff.get(self.ROUTES, {}).get(
                                self.ROUTES_ROUTE,
                                {})[index_1].get(self.ROUTES_ROUTE_PREFIX))
                    if prop_diff.get(self.ROUTES, {}).get(
                            self.ROUTES_ROUTE, {})[index_1].get(
                                self.ROUTES_ROUTE_NEXT_HOP) is not None:
                        obj_2.set_next_hop(
                            prop_diff.get(self.ROUTES, {}).get(
                                self.ROUTES_ROUTE,
                                {})[index_1].get(self.ROUTES_ROUTE_NEXT_HOP))
                    if prop_diff.get(self.ROUTES, {}).get(
                            self.ROUTES_ROUTE, {})[index_1].get(
                                self.ROUTES_ROUTE_NEXT_HOP_TYPE) is not None:
                        obj_2.set_next_hop_type(
                            prop_diff.get(self.ROUTES, {}).get(
                                self.ROUTES_ROUTE, {})[index_1].get(
                                    self.ROUTES_ROUTE_NEXT_HOP_TYPE))
                    if prop_diff.get(self.ROUTES, {}).get(
                            self.ROUTES_ROUTE,
                        {})[index_1].get(self.ROUTES_ROUTE_COMMUNITY_ATTRIBUTES
                                         ) is not None:
                        obj_3 = vnc_api.CommunityAttributes()
                        if prop_diff.get(self.ROUTES, {}).get(
                                self.ROUTES_ROUTE, {}
                        )[index_1].get(
                                self.ROUTES_ROUTE_COMMUNITY_ATTRIBUTES, {}
                        ).get(self.
                              ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE
                              ) is not None:
                            for index_3 in range(
                                    len(
                                        prop_diff.get(self.ROUTES, {}).get(
                                            self.ROUTES_ROUTE, {})
                                        [index_1].get(
                                            self.
                                            ROUTES_ROUTE_COMMUNITY_ATTRIBUTES,
                                            {}).
                                        get(self.
                                            ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE
                                            ))):
                                obj_3.add_community_attribute(
                                    prop_diff.get(self.ROUTES, {}).get(
                                        self.ROUTES_ROUTE, {})
                                    [index_1].get(
                                        self.ROUTES_ROUTE_COMMUNITY_ATTRIBUTES,
                                        {}).
                                    get(self.
                                        ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE
                                        )[index_3])
                        obj_2.set_community_attributes(obj_3)
                    obj_1.add_route(obj_2)
            obj_0.set_routes(obj_1)
        if prop_diff.get(self.DISPLAY_NAME) is not None:
            obj_0.set_display_name(prop_diff.get(self.DISPLAY_NAME))

        try:
            self.vnc_lib().route_table_update(obj_0)
        except:
            raise Exception(
                _('route-table %s could not be updated.') % self.name)
    def handle_create(self):
        parent_obj = None
        if parent_obj is None and self.properties.get(self.PROJECT):
            try:
                parent_obj = self.vnc_lib().project_read(
                    id=self.properties.get(self.PROJECT))
            except vnc_api.NoIdError:
                parent_obj = self.vnc_lib().project_read(
                    fq_name_str=self.properties.get(self.PROJECT))
            except:
                parent_obj = None

        if parent_obj is None:
            tenant_id = self.stack.context.tenant_id
            parent_obj = self.vnc_lib().project_read(
                id=str(uuid.UUID(tenant_id)))

        if parent_obj is None:
            raise Exception('Error: parent is not specified in template!')

        obj_0 = vnc_api.RouteTable(name=self.properties[self.NAME],
                                   parent_obj=parent_obj)

        if self.properties.get(self.ROUTES) is not None:
            obj_1 = vnc_api.RouteTableType()
            if self.properties.get(self.ROUTES,
                                   {}).get(self.ROUTES_ROUTE) is not None:
                for index_1 in range(
                        len(
                            self.properties.get(self.ROUTES,
                                                {}).get(self.ROUTES_ROUTE))):
                    obj_2 = vnc_api.RouteType()
                    if self.properties.get(self.ROUTES, {}).get(
                            self.ROUTES_ROUTE,
                        {})[index_1].get(self.ROUTES_ROUTE_PREFIX) is not None:
                        obj_2.set_prefix(
                            self.properties.get(self.ROUTES, {}).get(
                                self.ROUTES_ROUTE,
                                {})[index_1].get(self.ROUTES_ROUTE_PREFIX))
                    if self.properties.get(self.ROUTES, {}).get(
                            self.ROUTES_ROUTE, {})[index_1].get(
                                self.ROUTES_ROUTE_NEXT_HOP) is not None:
                        obj_2.set_next_hop(
                            self.properties.get(self.ROUTES, {}).get(
                                self.ROUTES_ROUTE,
                                {})[index_1].get(self.ROUTES_ROUTE_NEXT_HOP))
                    if self.properties.get(self.ROUTES, {}).get(
                            self.ROUTES_ROUTE, {})[index_1].get(
                                self.ROUTES_ROUTE_NEXT_HOP_TYPE) is not None:
                        obj_2.set_next_hop_type(
                            self.properties.get(self.ROUTES, {}).get(
                                self.ROUTES_ROUTE, {})[index_1].get(
                                    self.ROUTES_ROUTE_NEXT_HOP_TYPE))
                    if self.properties.get(self.ROUTES, {}).get(
                            self.ROUTES_ROUTE,
                        {})[index_1].get(self.ROUTES_ROUTE_COMMUNITY_ATTRIBUTES
                                         ) is not None:
                        obj_3 = vnc_api.CommunityAttributes()
                        if self.properties.get(self.ROUTES, {}).get(
                                self.ROUTES_ROUTE, {}
                        )[index_1].get(
                                self.ROUTES_ROUTE_COMMUNITY_ATTRIBUTES, {}
                        ).get(self.
                              ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE
                              ) is not None:
                            for index_3 in range(
                                    len(
                                        self.properties.get(
                                            self.ROUTES,
                                            {}).get(self.ROUTES_ROUTE, {})
                                        [index_1].get(
                                            self.
                                            ROUTES_ROUTE_COMMUNITY_ATTRIBUTES,
                                            {}).
                                        get(self.
                                            ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE
                                            ))):
                                obj_3.add_community_attribute(
                                    self.properties.get(self.ROUTES, {}).get(
                                        self.ROUTES_ROUTE, {})
                                    [index_1].get(
                                        self.ROUTES_ROUTE_COMMUNITY_ATTRIBUTES,
                                        {}).
                                    get(self.
                                        ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE
                                        )[index_3])
                        obj_2.set_community_attributes(obj_3)
                    obj_1.add_route(obj_2)
            obj_0.set_routes(obj_1)
        if self.properties.get(self.DISPLAY_NAME) is not None:
            obj_0.set_display_name(self.properties.get(self.DISPLAY_NAME))

        try:
            obj_uuid = super(ContrailRouteTable, self).resource_create(obj_0)
        except:
            raise Exception(
                _('route-table %s could not be updated.') % self.name)

        self.resource_id_set(obj_uuid)
Пример #3
0
    def handle_update(self, json_snippet, tmpl_diff, prop_diff):
        try:
            obj_0 = self.vnc_lib().network_ipam_read(
                id=self.resource_id
            )
        except:
            raise Exception(_('network-ipam %s not found.') % self.name)

        if prop_diff.get(self.NETWORK_IPAM_MGMT) is not None:
            obj_1 = vnc_api.IpamType()
            if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_METHOD) is not None:
                obj_1.set_ipam_method(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_METHOD))
            if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_METHOD) is not None:
                obj_1.set_ipam_dns_method(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_METHOD))
            if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER) is not None:
                obj_2 = vnc_api.IpamDnsAddressType()
                if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS) is not None:
                    obj_3 = vnc_api.IpAddressesType()
                    if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS_IP_ADDRESS) is not None:
                        for index_3 in range(len(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS_IP_ADDRESS))):
                            obj_3.add_ip_address(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS_IP_ADDRESS)[index_3])
                    obj_2.set_tenant_dns_server_address(obj_3)
                if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_VIRTUAL_DNS_SERVER_NAME) is not None:
                    obj_2.set_virtual_dns_server_name(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_VIRTUAL_DNS_SERVER_NAME))
                obj_1.set_ipam_dns_server(obj_2)
            if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST) is not None:
                obj_2 = vnc_api.DhcpOptionsListType()
                if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION) is not None:
                    for index_2 in range(len(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION))):
                        obj_3 = vnc_api.DhcpOptionType()
                        if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_NAME) is not None:
                            obj_3.set_dhcp_option_name(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_NAME))
                        if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_VALUE) is not None:
                            obj_3.set_dhcp_option_value(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_VALUE))
                        if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_VALUE_BYTES) is not None:
                            obj_3.set_dhcp_option_value_bytes(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_VALUE_BYTES))
                        obj_2.add_dhcp_option(obj_3)
                obj_1.set_dhcp_option_list(obj_2)
            if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK) is not None:
                obj_2 = vnc_api.SubnetType()
                if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK_IP_PREFIX) is not None:
                    obj_2.set_ip_prefix(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK_IP_PREFIX))
                if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK_IP_PREFIX_LEN) is not None:
                    obj_2.set_ip_prefix_len(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK_IP_PREFIX_LEN))
                obj_1.set_cidr_block(obj_2)
            if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES) is not None:
                obj_2 = vnc_api.RouteTableType()
                if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE) is not None:
                    for index_2 in range(len(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE))):
                        obj_3 = vnc_api.RouteType()
                        if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_PREFIX) is not None:
                            obj_3.set_prefix(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_PREFIX))
                        if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_NEXT_HOP) is not None:
                            obj_3.set_next_hop(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_NEXT_HOP))
                        if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_NEXT_HOP_TYPE) is not None:
                            obj_3.set_next_hop_type(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_NEXT_HOP_TYPE))
                        if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES) is not None:
                            obj_4 = vnc_api.CommunityAttributes()
                            if prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE) is not None:
                                for index_4 in range(len(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE))):
                                    obj_4.add_community_attribute(prop_diff.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE)[index_4])
                            obj_3.set_community_attributes(obj_4)
                        obj_2.add_route(obj_3)
                obj_1.set_host_routes(obj_2)
            obj_0.set_network_ipam_mgmt(obj_1)
        if prop_diff.get(self.DISPLAY_NAME) is not None:
            obj_0.set_display_name(prop_diff.get(self.DISPLAY_NAME))

        # reference to virtual_DNS_refs
        ref_obj_list = []
        ref_data_list = []
        if self.VIRTUAL_DNS_REFS in prop_diff:
            for index_0 in range(len(prop_diff.get(self.VIRTUAL_DNS_REFS) or [])):
                try:
                    ref_obj = self.vnc_lib().virtual_DNS_read(
                        id=prop_diff.get(self.VIRTUAL_DNS_REFS)[index_0]
                    )
                except:
                    ref_obj = self.vnc_lib().virtual_DNS_read(
                        fq_name_str=prop_diff.get(self.VIRTUAL_DNS_REFS)[index_0]
                    )
                ref_obj_list.append(ref_obj.fq_name)

            obj_0.set_virtual_DNS_list(ref_obj_list)
            # End: reference to virtual_DNS_refs

        try:
            self.vnc_lib().network_ipam_update(obj_0)
        except:
            raise Exception(_('network-ipam %s could not be updated.') % self.name)
    def handle_update(self, json_snippet, tmpl_diff, prop_diff):
        try:
            obj_0 = self.vnc_lib().interface_route_table_read(
                id=self.resource_id)
        except:
            raise Exception(
                _('interface-route-table %s not found.') % self.name)

        if prop_diff.get(self.DISPLAY_NAME) is not None:
            obj_0.set_display_name(prop_diff.get(self.DISPLAY_NAME))
        if prop_diff.get(self.INTERFACE_ROUTE_TABLE_ROUTES) is not None:
            obj_1 = vnc_api.RouteTableType()
            if prop_diff.get(self.INTERFACE_ROUTE_TABLE_ROUTES, {}).get(
                    self.INTERFACE_ROUTE_TABLE_ROUTES_ROUTE) is not None:
                for index_1 in range(
                        len(
                            prop_diff.get(
                                self.INTERFACE_ROUTE_TABLE_ROUTES, {}).get(
                                    self.INTERFACE_ROUTE_TABLE_ROUTES_ROUTE))):
                    obj_2 = vnc_api.RouteType()
                    if prop_diff.get(
                            self.INTERFACE_ROUTE_TABLE_ROUTES,
                        {}).get(
                            self.INTERFACE_ROUTE_TABLE_ROUTES_ROUTE,
                            {})[index_1].get(
                                self.INTERFACE_ROUTE_TABLE_ROUTES_ROUTE_PREFIX
                            ) is not None:
                        obj_2.set_prefix(
                            prop_diff.get(self.INTERFACE_ROUTE_TABLE_ROUTES,
                                          {}).
                            get(self.INTERFACE_ROUTE_TABLE_ROUTES_ROUTE,
                                {})[index_1].get(
                                    self.
                                    INTERFACE_ROUTE_TABLE_ROUTES_ROUTE_PREFIX))
                    if prop_diff.get(
                            self.INTERFACE_ROUTE_TABLE_ROUTES, {}
                    ).get(self.INTERFACE_ROUTE_TABLE_ROUTES_ROUTE,
                          {})[index_1].get(
                              self.INTERFACE_ROUTE_TABLE_ROUTES_ROUTE_NEXT_HOP
                          ) is not None:
                        obj_2.set_next_hop(
                            prop_diff.get(
                                self.INTERFACE_ROUTE_TABLE_ROUTES, {}).get(
                                    self.INTERFACE_ROUTE_TABLE_ROUTES_ROUTE,
                                    {})
                            [index_1].get(
                                self.
                                INTERFACE_ROUTE_TABLE_ROUTES_ROUTE_NEXT_HOP))
                    if prop_diff.get(
                            self.INTERFACE_ROUTE_TABLE_ROUTES, {}
                    ).get(self.INTERFACE_ROUTE_TABLE_ROUTES_ROUTE,
                          {})[index_1].get(
                              self.
                              INTERFACE_ROUTE_TABLE_ROUTES_ROUTE_NEXT_HOP_TYPE
                          ) is not None:
                        obj_2.set_next_hop_type(
                            prop_diff.get(
                                self.INTERFACE_ROUTE_TABLE_ROUTES, {}).get(
                                    self.INTERFACE_ROUTE_TABLE_ROUTES_ROUTE,
                                    {})
                            [index_1].get(
                                self.
                                INTERFACE_ROUTE_TABLE_ROUTES_ROUTE_NEXT_HOP_TYPE
                            ))
                    if prop_diff.get(
                            self.INTERFACE_ROUTE_TABLE_ROUTES,
                        {}).get(
                            self.INTERFACE_ROUTE_TABLE_ROUTES_ROUTE, {}
                        )[index_1].get(
                            self.
                            INTERFACE_ROUTE_TABLE_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES
                        ) is not None:
                        obj_3 = vnc_api.CommunityAttributes()
                        if prop_diff.get(
                                self.INTERFACE_ROUTE_TABLE_ROUTES, {}
                        ).get(
                                self.INTERFACE_ROUTE_TABLE_ROUTES_ROUTE, {}
                        )[index_1].get(
                                self.
                                INTERFACE_ROUTE_TABLE_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES,
                            {}
                        ).get(self.
                              INTERFACE_ROUTE_TABLE_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE
                              ) is not None:
                            for index_3 in range(
                                    len(
                                        prop_diff.get(
                                            self.INTERFACE_ROUTE_TABLE_ROUTES,
                                            {}
                                        ).get(
                                            self.
                                            INTERFACE_ROUTE_TABLE_ROUTES_ROUTE,
                                            {})
                                        [index_1].get(
                                            self.
                                            INTERFACE_ROUTE_TABLE_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES,
                                            {}).
                                        get(self.
                                            INTERFACE_ROUTE_TABLE_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE
                                            ))):
                                obj_3.add_community_attribute(
                                    prop_diff.get(
                                        self.INTERFACE_ROUTE_TABLE_ROUTES,
                                        {}).get(
                                            self.
                                            INTERFACE_ROUTE_TABLE_ROUTES_ROUTE,
                                            {})
                                    [index_1].get(
                                        self.
                                        INTERFACE_ROUTE_TABLE_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES,
                                        {}).
                                    get(self.
                                        INTERFACE_ROUTE_TABLE_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE
                                        )[index_3])
                        obj_2.set_community_attributes(obj_3)
                    obj_1.add_route(obj_2)
            obj_0.set_interface_route_table_routes(obj_1)

        # reference to service_instance
        ref_obj_list = []
        ref_data_list = []
        if prop_diff.get(self.SERVICE_INSTANCE_REFS_DATA) is not None:
            for index_0 in range(
                    len(prop_diff.get(self.SERVICE_INSTANCE_REFS_DATA))):
                obj_1 = vnc_api.ServiceInterfaceTag()
                if prop_diff.get(
                        self.SERVICE_INSTANCE_REFS_DATA, {})[index_0].get(
                            self.SERVICE_INSTANCE_REFS_DATA_INTERFACE_TYPE
                        ) is not None:
                    obj_1.set_interface_type(
                        prop_diff.get(self.SERVICE_INSTANCE_REFS_DATA, {})
                        [index_0].get(
                            self.SERVICE_INSTANCE_REFS_DATA_INTERFACE_TYPE))
                ref_data_list.append(obj_1)
        if self.SERVICE_INSTANCE_REFS in prop_diff:
            for index_0 in range(
                    len(prop_diff.get(self.SERVICE_INSTANCE_REFS_DATA) or [])):
                try:
                    ref_obj = self.vnc_lib().service_instance_read(
                        id=prop_diff.get(self.SERVICE_INSTANCE_REFS)[index_0])
                except:
                    ref_obj = self.vnc_lib().service_instance_read(
                        fq_name_str=prop_diff.get(
                            self.SERVICE_INSTANCE_REFS)[index_0])
                ref_obj_list.append(ref_obj.fq_name)

            obj_0.set_service_instance_list(ref_obj_list, ref_data_list)
            # End: reference to service_instance_refs

        try:
            self.vnc_lib().interface_route_table_update(obj_0)
        except:
            raise Exception(
                _('interface-route-table %s could not be updated.') %
                self.name)
Пример #5
0
    def handle_create(self):
        parent_obj = None
        if parent_obj is None and self.properties.get(self.PROJECT):
            try:
                parent_obj = self.vnc_lib().project_read(id=self.properties.get(self.PROJECT))
            except vnc_api.NoIdError:
                parent_obj = self.vnc_lib().project_read(fq_name_str=self.properties.get(self.PROJECT))
            except:
                parent_obj = None

        if parent_obj is None:
            tenant_id = self.stack.context.tenant_id
            parent_obj = self.vnc_lib().project_read(id=str(uuid.UUID(tenant_id)))

        if parent_obj is None:
            raise Exception('Error: parent is not specified in template!')

        obj_0 = vnc_api.NetworkIpam(name=self.properties[self.NAME],
            parent_obj=parent_obj)

        if self.properties.get(self.NETWORK_IPAM_MGMT) is not None:
            obj_1 = vnc_api.IpamType()
            if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_METHOD) is not None:
                obj_1.set_ipam_method(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_METHOD))
            if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_METHOD) is not None:
                obj_1.set_ipam_dns_method(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_METHOD))
            if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER) is not None:
                obj_2 = vnc_api.IpamDnsAddressType()
                if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS) is not None:
                    obj_3 = vnc_api.IpAddressesType()
                    if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS_IP_ADDRESS) is not None:
                        for index_3 in range(len(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS_IP_ADDRESS))):
                            obj_3.add_ip_address(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS_IP_ADDRESS)[index_3])
                    obj_2.set_tenant_dns_server_address(obj_3)
                if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_VIRTUAL_DNS_SERVER_NAME) is not None:
                    obj_2.set_virtual_dns_server_name(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_VIRTUAL_DNS_SERVER_NAME))
                obj_1.set_ipam_dns_server(obj_2)
            if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST) is not None:
                obj_2 = vnc_api.DhcpOptionsListType()
                if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION) is not None:
                    for index_2 in range(len(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION))):
                        obj_3 = vnc_api.DhcpOptionType()
                        if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_NAME) is not None:
                            obj_3.set_dhcp_option_name(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_NAME))
                        if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_VALUE) is not None:
                            obj_3.set_dhcp_option_value(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_VALUE))
                        if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_VALUE_BYTES) is not None:
                            obj_3.set_dhcp_option_value_bytes(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_VALUE_BYTES))
                        obj_2.add_dhcp_option(obj_3)
                obj_1.set_dhcp_option_list(obj_2)
            if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK) is not None:
                obj_2 = vnc_api.SubnetType()
                if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK_IP_PREFIX) is not None:
                    obj_2.set_ip_prefix(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK_IP_PREFIX))
                if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK_IP_PREFIX_LEN) is not None:
                    obj_2.set_ip_prefix_len(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK_IP_PREFIX_LEN))
                obj_1.set_cidr_block(obj_2)
            if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES) is not None:
                obj_2 = vnc_api.RouteTableType()
                if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE) is not None:
                    for index_2 in range(len(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE))):
                        obj_3 = vnc_api.RouteType()
                        if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_PREFIX) is not None:
                            obj_3.set_prefix(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_PREFIX))
                        if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_NEXT_HOP) is not None:
                            obj_3.set_next_hop(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_NEXT_HOP))
                        if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_NEXT_HOP_TYPE) is not None:
                            obj_3.set_next_hop_type(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_NEXT_HOP_TYPE))
                        if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES) is not None:
                            obj_4 = vnc_api.CommunityAttributes()
                            if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE) is not None:
                                for index_4 in range(len(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE))):
                                    obj_4.add_community_attribute(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE)[index_4])
                            obj_3.set_community_attributes(obj_4)
                        obj_2.add_route(obj_3)
                obj_1.set_host_routes(obj_2)
            obj_0.set_network_ipam_mgmt(obj_1)
        if self.properties.get(self.DISPLAY_NAME) is not None:
            obj_0.set_display_name(self.properties.get(self.DISPLAY_NAME))

        # reference to virtual_DNS_refs
        if self.properties.get(self.VIRTUAL_DNS_REFS):
            for index_0 in range(len(self.properties.get(self.VIRTUAL_DNS_REFS))):
                try:
                    ref_obj = self.vnc_lib().virtual_DNS_read(
                        id=self.properties.get(self.VIRTUAL_DNS_REFS)[index_0]
                    )
                except vnc_api.NoIdError:
                    ref_obj = self.vnc_lib().virtual_DNS_read(
                        fq_name_str=self.properties.get(self.VIRTUAL_DNS_REFS)[index_0]
                    )
                obj_0.add_virtual_DNS(ref_obj)

        try:
            obj_uuid = super(ContrailNetworkIpam, self).resource_create(obj_0)
        except:
            raise Exception(_('network-ipam %s could not be updated.') % self.name)

        self.resource_id_set(obj_uuid)