ya.wang f05357a384 Add the functionality to support adding acl rule
Change-Id: I42e0a580872d69146ef7c656fa62abac08df50de
2018-09-14 14:13:42 +08:00

162 lines
5.1 KiB
Python

# Copyright 2018 99cloud, Inc.
# All Rights Reserved.
#
# Licensed 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.
vlan_network_interface_req_schema = {
'type': 'object',
'properties': {
'VLANId': {'type': 'number'},
'VLANEnable': {'type': 'boolean'},
'Oem': {
'type': 'object',
'properties': {
'Intel_RackScale': {
'type': 'object',
'properties': {
'Tagged': {'type': 'boolean'}
},
'required': ['Tagged']
}
},
'required': ['Intel_RackScale']
}
},
'required': [
'VLANId',
'VLANEnable',
'Oem'
],
'additionalProperties': False
}
acl_rule_req_schema = {
'type': 'object',
'oneOf': [
{
'properties': {
'Action': {'enum': ['Forward']}
},
'required': ['ForwardMirrorInterface']
},
{
'properties': {
'Action': {'enum': ['Mirror']}
},
'required': ['ForwardMirrorInterface',
'MirrorPortRegion', 'MirrorType']
},
{
'properties': {
'Action': {'enum': ['Permit', 'Deny']}
}
}
],
'properties': {
'RuleId': {'type': 'number'},
'Action': {
'type': 'string',
'enum': ['Permit', 'Deny', 'Forward', 'Mirror']
},
'ForwardMirrorInterface': {
'type': 'object',
'properties': {
'@odata.id': {
'type': 'string'
}
},
'required': ['@odata.id']
},
'MirrorPortRegion': {
'type': 'array',
'items': {
'type': 'object',
'properties': {
'@odata.id': {
'type': 'string'
}
},
'required': ['@odata.id']
}
},
'MirrorType': {
'type': 'string',
'enum': ['Egress', 'Ingress', 'Bidirectional', 'Redirect']
},
'Condition': {
'type': 'object',
'properties': {
'IPSource': {
'type': 'object',
'properties': {
'IPv4Addresses': {'type': 'string'},
'Mask': {'type': ['string', 'null']}
},
'required': ['IPv4Address']
},
'IPDestination': {
'type': 'object',
'properties': {
'IPv4Address': {'type': 'string'},
'Mask': {'type': ['string', 'null']}
},
'required': ['IPv4Address']
},
'MACSource': {
'type': 'object',
'properties': {
'MACAddress': {'type': 'string'},
'Mask': {'type': ['string', 'null']}
},
'required': ['MACAddress']
},
'MACDestination': {
'type': 'object',
'properties': {
'MACAddress': {'type': 'string'},
'Mask': {'type': ['string', 'null']}
},
'required': ['MACAddress']
},
'VLANId': {
'type': 'object',
'properties': {
'Id': {'type': 'number'},
'Mask': {'type': ['number', 'null']}
},
'required': ['Id']
},
'L4SourcePort': {
'type': 'object',
'properties': {
'Port': {'type': 'number'},
'Mask': {'type': ['number', 'null']}
},
'required': ['Port']
},
'L4DestinationPort': {
'type': 'object',
'properties': {
'Port': {'type': 'number'},
'Mask': {'type': ['number', 'null']}
},
'required': ['Port']
},
'L4Protocol': {'type': ['number', 'null']}
}
},
},
'required': ['Action', 'Condition'],
'additionalProperties': False
}