azure_mgmt_monitor 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/lib/azure_mgmt_monitor.rb +5 -0
  4. data/lib/generated/azure_mgmt_monitor.rb +96 -0
  5. data/lib/generated/azure_mgmt_monitor/action_groups.rb +579 -0
  6. data/lib/generated/azure_mgmt_monitor/activity_log_alerts.rb +593 -0
  7. data/lib/generated/azure_mgmt_monitor/alert_rule_incidents.rb +211 -0
  8. data/lib/generated/azure_mgmt_monitor/alert_rules.rb +510 -0
  9. data/lib/generated/azure_mgmt_monitor/autoscale_settings.rb +618 -0
  10. data/lib/generated/azure_mgmt_monitor/log_profiles.rb +477 -0
  11. data/lib/generated/azure_mgmt_monitor/models/action_group_list.rb +63 -0
  12. data/lib/generated/azure_mgmt_monitor/models/action_group_resource.rb +164 -0
  13. data/lib/generated/azure_mgmt_monitor/models/activity_log_alert_action_group.rb +65 -0
  14. data/lib/generated/azure_mgmt_monitor/models/activity_log_alert_action_list.rb +54 -0
  15. data/lib/generated/azure_mgmt_monitor/models/activity_log_alert_all_of_condition.rb +55 -0
  16. data/lib/generated/azure_mgmt_monitor/models/activity_log_alert_leaf_condition.rb +61 -0
  17. data/lib/generated/azure_mgmt_monitor/models/activity_log_alert_list.rb +64 -0
  18. data/lib/generated/azure_mgmt_monitor/models/activity_log_alert_patch_body.rb +65 -0
  19. data/lib/generated/azure_mgmt_monitor/models/activity_log_alert_resource.rb +147 -0
  20. data/lib/generated/azure_mgmt_monitor/models/alert_rule_resource.rb +159 -0
  21. data/lib/generated/azure_mgmt_monitor/models/alert_rule_resource_collection.rb +54 -0
  22. data/lib/generated/azure_mgmt_monitor/models/alert_rule_resource_patch.rb +131 -0
  23. data/lib/generated/azure_mgmt_monitor/models/autoscale_notification.rb +78 -0
  24. data/lib/generated/azure_mgmt_monitor/models/autoscale_profile.rb +101 -0
  25. data/lib/generated/azure_mgmt_monitor/models/autoscale_setting_resource.rb +155 -0
  26. data/lib/generated/azure_mgmt_monitor/models/autoscale_setting_resource_collection.rb +95 -0
  27. data/lib/generated/azure_mgmt_monitor/models/autoscale_setting_resource_patch.rb +127 -0
  28. data/lib/generated/azure_mgmt_monitor/models/comparison_operation_type.rb +20 -0
  29. data/lib/generated/azure_mgmt_monitor/models/condition_operator.rb +18 -0
  30. data/lib/generated/azure_mgmt_monitor/models/email_notification.rb +75 -0
  31. data/lib/generated/azure_mgmt_monitor/models/email_receiver.rb +69 -0
  32. data/lib/generated/azure_mgmt_monitor/models/enable_request.rb +45 -0
  33. data/lib/generated/azure_mgmt_monitor/models/error_response.rb +55 -0
  34. data/lib/generated/azure_mgmt_monitor/models/incident.rb +93 -0
  35. data/lib/generated/azure_mgmt_monitor/models/incident_list_result.rb +53 -0
  36. data/lib/generated/azure_mgmt_monitor/models/location_threshold_rule_condition.rb +85 -0
  37. data/lib/generated/azure_mgmt_monitor/models/log_profile_collection.rb +53 -0
  38. data/lib/generated/azure_mgmt_monitor/models/log_profile_resource.rb +154 -0
  39. data/lib/generated/azure_mgmt_monitor/models/log_profile_resource_patch.rb +126 -0
  40. data/lib/generated/azure_mgmt_monitor/models/log_settings.rb +70 -0
  41. data/lib/generated/azure_mgmt_monitor/models/management_event_aggregation_condition.rb +70 -0
  42. data/lib/generated/azure_mgmt_monitor/models/management_event_rule_condition.rb +73 -0
  43. data/lib/generated/azure_mgmt_monitor/models/metric_settings.rb +67 -0
  44. data/lib/generated/azure_mgmt_monitor/models/metric_statistic_type.rb +18 -0
  45. data/lib/generated/azure_mgmt_monitor/models/metric_trigger.rb +134 -0
  46. data/lib/generated/azure_mgmt_monitor/models/receiver_status.rb +17 -0
  47. data/lib/generated/azure_mgmt_monitor/models/recurrence.rb +62 -0
  48. data/lib/generated/azure_mgmt_monitor/models/recurrence_frequency.rb +22 -0
  49. data/lib/generated/azure_mgmt_monitor/models/recurrent_schedule.rb +139 -0
  50. data/lib/generated/azure_mgmt_monitor/models/retention_policy.rb +60 -0
  51. data/lib/generated/azure_mgmt_monitor/models/rule_action.rb +48 -0
  52. data/lib/generated/azure_mgmt_monitor/models/rule_condition.rb +63 -0
  53. data/lib/generated/azure_mgmt_monitor/models/rule_data_source.rb +58 -0
  54. data/lib/generated/azure_mgmt_monitor/models/rule_email_action.rb +80 -0
  55. data/lib/generated/azure_mgmt_monitor/models/rule_management_event_claims_data_source.rb +45 -0
  56. data/lib/generated/azure_mgmt_monitor/models/rule_management_event_data_source.rb +150 -0
  57. data/lib/generated/azure_mgmt_monitor/models/rule_metric_data_source.rb +68 -0
  58. data/lib/generated/azure_mgmt_monitor/models/rule_webhook_action.rb +80 -0
  59. data/lib/generated/azure_mgmt_monitor/models/scale_action.rb +86 -0
  60. data/lib/generated/azure_mgmt_monitor/models/scale_capacity.rb +69 -0
  61. data/lib/generated/azure_mgmt_monitor/models/scale_direction.rb +17 -0
  62. data/lib/generated/azure_mgmt_monitor/models/scale_rule.rb +57 -0
  63. data/lib/generated/azure_mgmt_monitor/models/scale_type.rb +17 -0
  64. data/lib/generated/azure_mgmt_monitor/models/service_diagnostic_settings_resource.rb +163 -0
  65. data/lib/generated/azure_mgmt_monitor/models/service_diagnostic_settings_resource_patch.rb +135 -0
  66. data/lib/generated/azure_mgmt_monitor/models/sms_receiver.rb +79 -0
  67. data/lib/generated/azure_mgmt_monitor/models/threshold_rule_condition.rb +108 -0
  68. data/lib/generated/azure_mgmt_monitor/models/time_aggregation_operator.rb +19 -0
  69. data/lib/generated/azure_mgmt_monitor/models/time_aggregation_type.rb +19 -0
  70. data/lib/generated/azure_mgmt_monitor/models/time_window.rb +104 -0
  71. data/lib/generated/azure_mgmt_monitor/models/webhook_notification.rb +63 -0
  72. data/lib/generated/azure_mgmt_monitor/models/webhook_receiver.rb +56 -0
  73. data/lib/generated/azure_mgmt_monitor/module_definition.rb +8 -0
  74. data/lib/generated/azure_mgmt_monitor/monitor_management_client.rb +150 -0
  75. data/lib/generated/azure_mgmt_monitor/service_diagnostic_settings_operations.rb +330 -0
  76. data/lib/generated/azure_mgmt_monitor/version.rb +8 -0
  77. metadata +188 -0
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ # Code generated by Microsoft (R) AutoRest Code Generator 1.2.2.0
3
+ # Changes may cause incorrect behavior and will be lost if the code is
4
+ # regenerated.
5
+
6
+ module Azure::ARM::Monitor
7
+ module Models
8
+ #
9
+ # Defines values for ReceiverStatus
10
+ #
11
+ module ReceiverStatus
12
+ NotSpecified = "NotSpecified"
13
+ Enabled = "Enabled"
14
+ Disabled = "Disabled"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,62 @@
1
+ # encoding: utf-8
2
+ # Code generated by Microsoft (R) AutoRest Code Generator 1.2.2.0
3
+ # Changes may cause incorrect behavior and will be lost if the code is
4
+ # regenerated.
5
+
6
+ module Azure::ARM::Monitor
7
+ module Models
8
+ #
9
+ # The repeating times at which this profile begins. This element is not
10
+ # used if the FixedDate element is used.
11
+ #
12
+ class Recurrence
13
+
14
+ include MsRestAzure
15
+
16
+ include MsRest::JSONable
17
+ # @return [RecurrenceFrequency] the recurrence frequency. How often the
18
+ # schedule profile should take effect. This value must be Week, meaning
19
+ # each week will have the same set of profiles. Possible values include:
20
+ # 'None', 'Second', 'Minute', 'Hour', 'Day', 'Week', 'Month', 'Year'
21
+ attr_accessor :frequency
22
+
23
+ # @return [RecurrentSchedule] the scheduling constraints for when the
24
+ # profile begins.
25
+ attr_accessor :schedule
26
+
27
+
28
+ #
29
+ # Mapper for Recurrence class as Ruby Hash.
30
+ # This will be used for serialization/deserialization.
31
+ #
32
+ def self.mapper()
33
+ {
34
+ required: false,
35
+ serialized_name: 'Recurrence',
36
+ type: {
37
+ name: 'Composite',
38
+ class_name: 'Recurrence',
39
+ model_properties: {
40
+ frequency: {
41
+ required: true,
42
+ serialized_name: 'frequency',
43
+ type: {
44
+ name: 'Enum',
45
+ module: 'RecurrenceFrequency'
46
+ }
47
+ },
48
+ schedule: {
49
+ required: true,
50
+ serialized_name: 'schedule',
51
+ type: {
52
+ name: 'Composite',
53
+ class_name: 'RecurrentSchedule'
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+ # Code generated by Microsoft (R) AutoRest Code Generator 1.2.2.0
3
+ # Changes may cause incorrect behavior and will be lost if the code is
4
+ # regenerated.
5
+
6
+ module Azure::ARM::Monitor
7
+ module Models
8
+ #
9
+ # Defines values for RecurrenceFrequency
10
+ #
11
+ module RecurrenceFrequency
12
+ None = "None"
13
+ Second = "Second"
14
+ Minute = "Minute"
15
+ Hour = "Hour"
16
+ Day = "Day"
17
+ Week = "Week"
18
+ Month = "Month"
19
+ Year = "Year"
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,139 @@
1
+ # encoding: utf-8
2
+ # Code generated by Microsoft (R) AutoRest Code Generator 1.2.2.0
3
+ # Changes may cause incorrect behavior and will be lost if the code is
4
+ # regenerated.
5
+
6
+ module Azure::ARM::Monitor
7
+ module Models
8
+ #
9
+ # The scheduling constraints for when the profile begins.
10
+ #
11
+ class RecurrentSchedule
12
+
13
+ include MsRestAzure
14
+
15
+ include MsRest::JSONable
16
+ # @return [String] the timezone for the hours of the profile. Some
17
+ # examples of valid timezones are: Dateline Standard Time, UTC-11,
18
+ # Hawaiian Standard Time, Alaskan Standard Time, Pacific Standard Time
19
+ # (Mexico), Pacific Standard Time, US Mountain Standard Time, Mountain
20
+ # Standard Time (Mexico), Mountain Standard Time, Central America
21
+ # Standard Time, Central Standard Time, Central Standard Time (Mexico),
22
+ # Canada Central Standard Time, SA Pacific Standard Time, Eastern
23
+ # Standard Time, US Eastern Standard Time, Venezuela Standard Time,
24
+ # Paraguay Standard Time, Atlantic Standard Time, Central Brazilian
25
+ # Standard Time, SA Western Standard Time, Pacific SA Standard Time,
26
+ # Newfoundland Standard Time, E. South America Standard Time, Argentina
27
+ # Standard Time, SA Eastern Standard Time, Greenland Standard Time,
28
+ # Montevideo Standard Time, Bahia Standard Time, UTC-02, Mid-Atlantic
29
+ # Standard Time, Azores Standard Time, Cape Verde Standard Time, Morocco
30
+ # Standard Time, UTC, GMT Standard Time, Greenwich Standard Time, W.
31
+ # Europe Standard Time, Central Europe Standard Time, Romance Standard
32
+ # Time, Central European Standard Time, W. Central Africa Standard Time,
33
+ # Namibia Standard Time, Jordan Standard Time, GTB Standard Time, Middle
34
+ # East Standard Time, Egypt Standard Time, Syria Standard Time, E. Europe
35
+ # Standard Time, South Africa Standard Time, FLE Standard Time, Turkey
36
+ # Standard Time, Israel Standard Time, Kaliningrad Standard Time, Libya
37
+ # Standard Time, Arabic Standard Time, Arab Standard Time, Belarus
38
+ # Standard Time, Russian Standard Time, E. Africa Standard Time, Iran
39
+ # Standard Time, Arabian Standard Time, Azerbaijan Standard Time, Russia
40
+ # Time Zone 3, Mauritius Standard Time, Georgian Standard Time, Caucasus
41
+ # Standard Time, Afghanistan Standard Time, West Asia Standard Time,
42
+ # Ekaterinburg Standard Time, Pakistan Standard Time, India Standard
43
+ # Time, Sri Lanka Standard Time, Nepal Standard Time, Central Asia
44
+ # Standard Time, Bangladesh Standard Time, N. Central Asia Standard Time,
45
+ # Myanmar Standard Time, SE Asia Standard Time, North Asia Standard Time,
46
+ # China Standard Time, North Asia East Standard Time, Singapore Standard
47
+ # Time, W. Australia Standard Time, Taipei Standard Time, Ulaanbaatar
48
+ # Standard Time, Tokyo Standard Time, Korea Standard Time, Yakutsk
49
+ # Standard Time, Cen. Australia Standard Time, AUS Central Standard Time,
50
+ # E. Australia Standard Time, AUS Eastern Standard Time, West Pacific
51
+ # Standard Time, Tasmania Standard Time, Magadan Standard Time,
52
+ # Vladivostok Standard Time, Russia Time Zone 10, Central Pacific
53
+ # Standard Time, Russia Time Zone 11, New Zealand Standard Time, UTC+12,
54
+ # Fiji Standard Time, Kamchatka Standard Time, Tonga Standard Time, Samoa
55
+ # Standard Time, Line Islands Standard Time
56
+ attr_accessor :time_zone
57
+
58
+ # @return [Array<String>] the collection of days that the profile takes
59
+ # effect on. Possible values are Sunday through Saturday.
60
+ attr_accessor :days
61
+
62
+ # @return [Array<Integer>] A collection of hours that the profile takes
63
+ # effect on. Values supported are 0 to 23 on the 24-hour clock (AM/PM
64
+ # times are not supported).
65
+ attr_accessor :hours
66
+
67
+ # @return [Array<Integer>] A collection of minutes at which the profile
68
+ # takes effect at.
69
+ attr_accessor :minutes
70
+
71
+
72
+ #
73
+ # Mapper for RecurrentSchedule class as Ruby Hash.
74
+ # This will be used for serialization/deserialization.
75
+ #
76
+ def self.mapper()
77
+ {
78
+ required: false,
79
+ serialized_name: 'RecurrentSchedule',
80
+ type: {
81
+ name: 'Composite',
82
+ class_name: 'RecurrentSchedule',
83
+ model_properties: {
84
+ time_zone: {
85
+ required: true,
86
+ serialized_name: 'timeZone',
87
+ type: {
88
+ name: 'String'
89
+ }
90
+ },
91
+ days: {
92
+ required: true,
93
+ serialized_name: 'days',
94
+ type: {
95
+ name: 'Sequence',
96
+ element: {
97
+ required: false,
98
+ serialized_name: 'StringElementType',
99
+ type: {
100
+ name: 'String'
101
+ }
102
+ }
103
+ }
104
+ },
105
+ hours: {
106
+ required: true,
107
+ serialized_name: 'hours',
108
+ type: {
109
+ name: 'Sequence',
110
+ element: {
111
+ required: false,
112
+ serialized_name: 'NumberElementType',
113
+ type: {
114
+ name: 'Number'
115
+ }
116
+ }
117
+ }
118
+ },
119
+ minutes: {
120
+ required: true,
121
+ serialized_name: 'minutes',
122
+ type: {
123
+ name: 'Sequence',
124
+ element: {
125
+ required: false,
126
+ serialized_name: 'NumberElementType',
127
+ type: {
128
+ name: 'Number'
129
+ }
130
+ }
131
+ }
132
+ }
133
+ }
134
+ }
135
+ }
136
+ end
137
+ end
138
+ end
139
+ end
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+ # Code generated by Microsoft (R) AutoRest Code Generator 1.2.2.0
3
+ # Changes may cause incorrect behavior and will be lost if the code is
4
+ # regenerated.
5
+
6
+ module Azure::ARM::Monitor
7
+ module Models
8
+ #
9
+ # Specifies the retention policy for the log.
10
+ #
11
+ class RetentionPolicy
12
+
13
+ include MsRestAzure
14
+
15
+ include MsRest::JSONable
16
+ # @return [Boolean] a value indicating whether the retention policy is
17
+ # enabled.
18
+ attr_accessor :enabled
19
+
20
+ # @return [Integer] the number of days for the retention in days. A value
21
+ # of 0 will retain the events indefinitely.
22
+ attr_accessor :days
23
+
24
+
25
+ #
26
+ # Mapper for RetentionPolicy class as Ruby Hash.
27
+ # This will be used for serialization/deserialization.
28
+ #
29
+ def self.mapper()
30
+ {
31
+ required: false,
32
+ serialized_name: 'RetentionPolicy',
33
+ type: {
34
+ name: 'Composite',
35
+ class_name: 'RetentionPolicy',
36
+ model_properties: {
37
+ enabled: {
38
+ required: true,
39
+ serialized_name: 'enabled',
40
+ type: {
41
+ name: 'Boolean'
42
+ }
43
+ },
44
+ days: {
45
+ required: true,
46
+ serialized_name: 'days',
47
+ constraints: {
48
+ InclusiveMinimum: 0
49
+ },
50
+ type: {
51
+ name: 'Number'
52
+ }
53
+ }
54
+ }
55
+ }
56
+ }
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,48 @@
1
+ # encoding: utf-8
2
+ # Code generated by Microsoft (R) AutoRest Code Generator 1.2.2.0
3
+ # Changes may cause incorrect behavior and will be lost if the code is
4
+ # regenerated.
5
+
6
+ module Azure::ARM::Monitor
7
+ module Models
8
+ #
9
+ # The action that is performed when the alert rule becomes active, and when
10
+ # an alert condition is resolved.
11
+ #
12
+ class RuleAction
13
+
14
+ include MsRestAzure
15
+
16
+ include MsRest::JSONable
17
+ @@discriminatorMap = Hash.new
18
+ @@discriminatorMap["Microsoft.Azure.Management.Insights.Models.RuleEmailAction"] = "RuleEmailAction"
19
+ @@discriminatorMap["Microsoft.Azure.Management.Insights.Models.RuleWebhookAction"] = "RuleWebhookAction"
20
+
21
+ def initialize
22
+ @odata.type = "RuleAction"
23
+ end
24
+
25
+ attr_accessor :odata.type
26
+
27
+
28
+ #
29
+ # Mapper for RuleAction class as Ruby Hash.
30
+ # This will be used for serialization/deserialization.
31
+ #
32
+ def self.mapper()
33
+ {
34
+ required: false,
35
+ serialized_name: 'RuleAction',
36
+ type: {
37
+ name: 'Composite',
38
+ polymorphic_discriminator: 'odata.type',
39
+ uber_parent: 'RuleAction',
40
+ class_name: 'RuleAction',
41
+ model_properties: {
42
+ }
43
+ }
44
+ }
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,63 @@
1
+ # encoding: utf-8
2
+ # Code generated by Microsoft (R) AutoRest Code Generator 1.2.2.0
3
+ # Changes may cause incorrect behavior and will be lost if the code is
4
+ # regenerated.
5
+
6
+ module Azure::ARM::Monitor
7
+ module Models
8
+ #
9
+ # The condition that results in the alert rule being activated.
10
+ #
11
+ class RuleCondition
12
+
13
+ include MsRestAzure
14
+
15
+ include MsRest::JSONable
16
+ @@discriminatorMap = Hash.new
17
+ @@discriminatorMap["Microsoft.Azure.Management.Insights.Models.ThresholdRuleCondition"] = "ThresholdRuleCondition"
18
+ @@discriminatorMap["Microsoft.Azure.Management.Insights.Models.LocationThresholdRuleCondition"] = "LocationThresholdRuleCondition"
19
+ @@discriminatorMap["Microsoft.Azure.Management.Insights.Models.ManagementEventRuleCondition"] = "ManagementEventRuleCondition"
20
+
21
+ def initialize
22
+ @odata.type = "RuleCondition"
23
+ end
24
+
25
+ attr_accessor :odata.type
26
+
27
+ # @return [RuleDataSource] the resource from which the rule collects its
28
+ # data. For this type dataSource will always be of type
29
+ # RuleMetricDataSource.
30
+ attr_accessor :data_source
31
+
32
+
33
+ #
34
+ # Mapper for RuleCondition class as Ruby Hash.
35
+ # This will be used for serialization/deserialization.
36
+ #
37
+ def self.mapper()
38
+ {
39
+ required: false,
40
+ serialized_name: 'RuleCondition',
41
+ type: {
42
+ name: 'Composite',
43
+ polymorphic_discriminator: 'odata.type',
44
+ uber_parent: 'RuleCondition',
45
+ class_name: 'RuleCondition',
46
+ model_properties: {
47
+ data_source: {
48
+ required: false,
49
+ serialized_name: 'dataSource',
50
+ type: {
51
+ name: 'Composite',
52
+ polymorphic_discriminator: 'odata.type',
53
+ uber_parent: 'RuleDataSource',
54
+ class_name: 'RuleDataSource'
55
+ }
56
+ }
57
+ }
58
+ }
59
+ }
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,58 @@
1
+ # encoding: utf-8
2
+ # Code generated by Microsoft (R) AutoRest Code Generator 1.2.2.0
3
+ # Changes may cause incorrect behavior and will be lost if the code is
4
+ # regenerated.
5
+
6
+ module Azure::ARM::Monitor
7
+ module Models
8
+ #
9
+ # The resource from which the rule collects its data.
10
+ #
11
+ class RuleDataSource
12
+
13
+ include MsRestAzure
14
+
15
+ include MsRest::JSONable
16
+ @@discriminatorMap = Hash.new
17
+ @@discriminatorMap["Microsoft.Azure.Management.Insights.Models.RuleMetricDataSource"] = "RuleMetricDataSource"
18
+ @@discriminatorMap["Microsoft.Azure.Management.Insights.Models.RuleManagementEventDataSource"] = "RuleManagementEventDataSource"
19
+
20
+ def initialize
21
+ @odata.type = "RuleDataSource"
22
+ end
23
+
24
+ attr_accessor :odata.type
25
+
26
+ # @return [String] the resource identifier of the resource the rule
27
+ # monitors.
28
+ attr_accessor :resource_uri
29
+
30
+
31
+ #
32
+ # Mapper for RuleDataSource class as Ruby Hash.
33
+ # This will be used for serialization/deserialization.
34
+ #
35
+ def self.mapper()
36
+ {
37
+ required: false,
38
+ serialized_name: 'RuleDataSource',
39
+ type: {
40
+ name: 'Composite',
41
+ polymorphic_discriminator: 'odata.type',
42
+ uber_parent: 'RuleDataSource',
43
+ class_name: 'RuleDataSource',
44
+ model_properties: {
45
+ resource_uri: {
46
+ required: false,
47
+ serialized_name: 'resourceUri',
48
+ type: {
49
+ name: 'String'
50
+ }
51
+ }
52
+ }
53
+ }
54
+ }
55
+ end
56
+ end
57
+ end
58
+ end