1# coding: utf-8
2
3"""
4    API Specification
5
6    # Introduction Welcome to gridscales API documentation.  A REST API is a programming interface that allows you to access and send data directly to our systems using HTTPS requests, without the need to use a web GUI. All the functionality you are already familiar with in your control panel is accessible through the API, including expert methods that are only available through the API. Allowing you to script any actions you require, regardless of their complexity.  First we will start with a general overview about how the API works, followed by an extensive list of each endpoint, describing them in great detail.  ## Requests  For security, gridscale requires all API requests are made through the HTTPS protocol so that traffic is encrypted. The following table displays the different type of requests that the interface responds to, depending on the action you require.  | Method | Description | | --- | --- | | GET | A simple search of information. The response is a JSON object. Requests using GET are always read-only. | | POST | Adds new objects and object relations. The POST request must contain all the required parameters in the form of a JSON object. | | PATCH | Changes an object or an object relation. The parameters in PATCH requests are usually optional, so only the changed parameters must be specified in a JSON object. | | DELETE | Deletes an object or object relation. The object is deleted if it exists. | | OPTIONS | Get an extensive list of the servers support methods and characteristics. We will not give example OPTION requests on each endpoint, as they are extensive and self-descriptive. |  <aside class=\"notice\"> The methods PATCH and DELETE are idempotent - that is, a request with identical parameters can be sent several times, and it doesn't change the result. </aside>  ## Status Codes  | HTTP Status | `Message` | Description | | --- | --- | --- | | 200 | `OK` | The request has been successfully processed and the result of the request is transmitted in the response. | | 202 | `Accepted` | The request has been accepted, but will run at a later date. Meaning we can not guarantee the success of the request. You should poll the request to be notified once the resource has been provisioned - see the requests endpoint on how to poll. | | 204 | `No Content` | The request was successful, but the answer deliberately contains no data. | | 400 | `Bad Request` | The request message was built incorrectly. | | 401 | `Unauthorised` | The request can not be performed without a valid authentication. X-Auth UserId or X-Auth token HTTP header is not set or the userID / token is invalid. | | 402 | `Payment Required` | Action can not be executed - not provided any or invalid payment methods. | | 403 | `Forbidden` | The request was not carried out due to lack of authorization of the user or because an impossible action was requested. | | 404 | `Not Found` | The requested resource was not found. Will also be used if you do a resource exists, but the user does not have permission for it. | | 405 | `Method Not Allowed` | The request may be made only with other HTTP methods (eg GET rather than POST). | | 409 | `Conflict` | The request was made under false assumptions. For example, a user can not be created twice with the same email. | | 415 | `Unsupported Media Type` | The contents of the request have been submitted with an invalid media type. All POST or PATCH requests must have \"Content-Type : application / json\" as a header, and send a JSON object as a payload. | | 416 | `Requested Range Not Satisfiable` | The request could not be fulfilled. It is possible that a resource limit was reached or an IPv4 address pool is exhausted. | | 424 | `Failed Dependency` | The request could not be performed because the object is in the wrong status. | | 429 | `Too Many Requests` | The request has been rejected because rate limits have been exceeded. |  <aside class=\"success\"> Status 200-204 indicates that the request has been accepted and is processed. </aside> <aside class=\"notice\"> Status 400-429 indicates that there was a problem with the request that originated on the client. You will find more information about the problem in the body of 4xx response. </aside> <aside class=\"warning\"> A status 500 means that there was a server-side problem and your request can not be processed now. </aside>  ## Request Headers  | Header | Description | | --- | --- | | Content-Type | Always \"application/json\". | | X-Auth-userId | The user UUID. This can be found in the panel under \"API\" and will never change ( even after the change of user e-mail). | | X-Auth-Token | Is generated from the API hash and must be sent with all API requests. Both the token and its permissions can be configured in the panel.|  ## Response Headers  | Header | Description | | --- | --- | | Content-Type | Always \"application/json\". | | X-Time-Provisioning | The time taken to process the request (in ms). | | X-Api-Identity | The currently active Provisioning API version. Useful when reporting bugs to us. | | X-Request-Id  | The unique identifier of the request, be sure to include it when referring to a request. | | RateLimit-Limit | The number of requests that can be made per minute. | | RateLimit-Remaining | The number of requests that still remain before you hit your request limit. | | RateLimit-Reset | A [Unix timestamp](https://en.wikipedia.org/wiki/Unix_time) in milliseconds of when the rate limit will reset, or the time at which a request no longer will return 429 - Too Many Requests. |  ## Timestamp Format  All timestamps follow <a href=\"https://de.wikipedia.org/wiki/ISO_8601\" target=\"_blank_\">ISO 8601</a> and issued in <a href=\"https://www.timeanddate.de/zeitzonen/utc-gmt\" target=\"_blank_\">UTC</a>  ## CORS  ### Cross Origin Resource Sharing  To allow API access from other domains that supports the API CORS (Cross Origin Resource Sharing). See: enable-cors.org/ .  This allows direct use the API in the browser running a JavaScript web control panel.  All this is done in the background by the browser. The following HTTP headers are set by the API:  Header | Parameter | Description --- | --- | --- Access-Control-Allow-Methods   | GET, POST, PUT, PATCH, DELETE, OPTIONS | Contains all available methods that may be used for queries. Access-Control-Allow-Credentials | true | Is set to \"true\". Allows the browser to send the authentication data via X-Auth HTTP header. Access-Control-Allow-Headers | Origin, X-Requested-With, Content-Type, Accept, X-Auth-UserId, X-Auth-Token, X-Exec-Time, X-API-Version, X-Api-Client | The HTTP headers available for requests. Access-Control-Allow-Origin | * | The domain sent by the browser as a source of demand. Access-Control-Expose-Headers | X-Exec-Time, X-Api-Version | The HTTP headers that can be used by a browser application.  ## Rate Limits  The number of requests that can be made through our API is currently limited to 210 requests per 60 seconds. The current state of rate limiting is returned within the response headers of each request. The relevant response headers are  - RateLimit-Limit - RateLimit-Remaining - RateLimit-Reset  See the Response Headers section for details.  As long as the `RateLimit-Remaining` count is above zero, you will be able to make further requests. As soon as the `RateLimit-Remaining` header value is zero, subsequent requests will return the 429 status code. This will stay until the timestamp given in `RateLimit-Reset` has been reached.  ### Example rate limiting response  ```shell HTTP/1.0 429 TOO MANY REQUESTS Content-Length: 66 Content-Type: application/json; charset=utf-8 Date: Mon, 11 Nov 2019 11:11:33 GMT RateLimit-Limit: 210 RateLimit-Remaining: 0 RateLimit-Reset: 1573468299256  {     \"id\": \"too_many_requests\",     \"message\": \"API Rate limit exceeded.\" } ```  It is important to understand how rate limits are reset in order to use the API efficiently. Rate limits are reset for all counted requests at once. This means that that once the timestamp `RateLimit-Remaining` has arrived all counted request are reset and you can again start sending requests to the API.  This allows for short burst of traffic. The downside is once you have hit the request limit no more requests are allowed until the rate limit duration is reset.  ## Object Relations Relationships describe resource objects (storages, networks, IPs, etc.) that are connected to a server. These relationships are treated like objects themselves and can have properties specific to this relation.  One example would be, that the MAC address of a private network connected to a server (Server-to-Network relation) can be found as property of the relation itself - the relation is the _network interface_ in the server.  Another example is storage, where the SCSI LUN is also part of the Server-to-Storage relation object.  This information is especially interesting if some kind of network boot is used on the servers, where the properties of the server need to be known beforehand.  ## Deleted Objects Objects that are deleted are no longer visible on their *regular* endpoints. For historical reasons these objects are still available read-only on a special endpoint named /deleted. If objects have been deleted but have not yet been billed in the current period, the yet-to-be-billed price is still shown.  <!-- #strip_js --> ## Node.js Library  We have a JavaScript library for you to use our API with ease.  <a href=\"https://www.npmjs.com/package/@gridscale/api\" target=\"_blank\"><img src=\"https://badge.fury.io/js/%40gridscale%2Fapi.svg\" alt=\"npm badge\"></a>  <aside class=\"success\"> We want to make it even easier for you to manage your Infrastructure via our API - so feel free to contact us with any ideas, or languages you would like to see included. </aside>  Requests with our Node.js lib return a little differently. Everything is the same except it allows you to add URL parameters to customize your requests.  To get started <a href=\"https://www.npmjs.com/package/@gridscale/api\" target=\"_blank\">click here</a> .  <!-- #strip_js_end -->  <!-- #strip_go --> ## Golang Library We also have a Golang library for Gophers.  Requests with our Golang lib return a little differently. Everything is the same except it allows you to add URL parameters to customize your requests.  To get started <a href=\"https://github.com/gridscale/gsclient-go\" target=\"_blank\">click here</a> .  <!-- #strip_go_end -->  <!-- #strip_python --> ## Python Library  We have a Python library, that optionally also simplifies handling of asynchronous requests by mimicking synchronous blocking behaviour.  To get started <a href=\"https://pypi.org/project/gs-api-client/\" target=\"_blank\">click here</a> .  <!-- #strip_python_end -->  # Authentication  In order to use the API, the User-UUID and an API_Token are required. Both are available via the web GUI which can be found here on <a href=\"https://my.gridscale.io/APIs/\" target=\"_blank\">Your Account</a>  <aside class=\"success\"> If you are logged in, your UUID and Token will be pulled dynamically from your account, so you can copy request examples straight into your code. </aside>  The User-UUID remains the same, even if the users email address is changed. The API_Token is a randomly generated hash that allows read/write access.  ## API_Token  <table class=\"security-details\"><tbody><tr><th> Security scheme type: </th><td> API Key </td></tr><tr><th> header parameter name:</th><td> X-Auth-Token </td></tr></tbody></table>  ## User_UUID  <table class=\"security-details\"><tbody><tr><th> Security scheme type: </th><td> API Key </td></tr><tr><th> header parameter name:</th><td> X-Auth-UserId </td></tr></tbody></table>  ## Examples  <!-- #strip_js --> > Node.js ``` // to get started // read the docs @ https://www.npmjs.com/package/@gs_js_auth/api var gs_js_auth = require('@gs_js_auth/api').gs_js_auth; var client = new gs_js_auth.Client(\"##API_TOKEN##\",\"##USER_UUID##\"); ``` <!-- #strip_js_end -->  <!-- #strip_go --> > Golang ``` // to get started // read the docs @ https://github.com/gridscale/gsclient-go config := gsclient.NewConfiguration(   \"https://api.gridscale.io\",   \"##USER_UUID##\",   \"##API_TOKEN##\",   false, //set debug mode ) client := gsclient.NewClient(config) ``` <!-- #strip_go_end -->  > Shell Authentication Headers ```   -H \"X-Auth-UserId: ##USER_UUID##\" \\   -H \"X-Auth-Token: ##API_TOKEN##\" \\ ```  > Setting Authentication in your Environment variables ``` export API_TOKEN=\"##API_TOKEN##\" USER_UUID=\"##USER_UUID##\" ```  <aside class=\"notice\"> You must replace <code>USER_UUID</code> and <code>API_Token</code> with your personal UUID and API key respectively. </aside>   # noqa: E501
7
8    OpenAPI spec version: 1.0.16
9
10    Generated by: https://github.com/swagger-api/swagger-codegen.git
11"""
12
13
14import pprint
15import re  # noqa: F401
16
17import six
18
19from gs_api_client.swagger.models.task_events_server_server_add import TaskEventsServerServerAdd  # noqa: F401,E501
20from gs_api_client.swagger.models.task_events_server_server_power_update import TaskEventsServerServerPowerUpdate  # noqa: F401,E501
21from gs_api_client.swagger.models.task_events_server_server_relation_ipaddr_add import TaskEventsServerServerRelationIpaddrAdd  # noqa: F401,E501
22from gs_api_client.swagger.models.task_events_server_server_relation_isoimage_add import TaskEventsServerServerRelationIsoimageAdd  # noqa: F401,E501
23from gs_api_client.swagger.models.task_events_server_server_relation_isoimage_remove import TaskEventsServerServerRelationIsoimageRemove  # noqa: F401,E501
24from gs_api_client.swagger.models.task_events_server_server_relation_network_add import TaskEventsServerServerRelationNetworkAdd  # noqa: F401,E501
25from gs_api_client.swagger.models.task_events_server_server_relation_network_remove import TaskEventsServerServerRelationNetworkRemove  # noqa: F401,E501
26from gs_api_client.swagger.models.task_events_server_server_relation_storage_add import TaskEventsServerServerRelationStorageAdd  # noqa: F401,E501
27from gs_api_client.swagger.models.task_events_server_server_relation_storage_remove import TaskEventsServerServerRelationStorageRemove  # noqa: F401,E501
28from gs_api_client.swagger.models.task_events_server_server_remove import TaskEventsServerServerRemove  # noqa: F401,E501
29from gs_api_client.swagger.models.task_events_server_server_update import TaskEventsServerServerUpdate  # noqa: F401,E501
30
31
32class TaskEventsServer(object):
33    """NOTE: This class is auto generated by the swagger code generator program.
34
35    Do not edit the class manually.
36    """
37
38    """
39    Attributes:
40      swagger_types (dict): The key is attribute name
41                            and the value is attribute type.
42      attribute_map (dict): The key is attribute name
43                            and the value is json key in definition.
44    """
45    swagger_types = {
46        'server_relation_isoimage_add': 'TaskEventsServerServerRelationIsoimageAdd',
47        'server_relation_isoimage_update': 'TaskEventsServerServerRelationIsoimageAdd',
48        'server_relation_isoimage_remove': 'TaskEventsServerServerRelationIsoimageRemove',
49        'server_relation_ipaddr_add': 'TaskEventsServerServerRelationIpaddrAdd',
50        'server_relation_ipaddr_remove': 'TaskEventsServerServerRelationIpaddrAdd',
51        'server_relation_network_add': 'TaskEventsServerServerRelationNetworkAdd',
52        'server_relation_network_update': 'TaskEventsServerServerRelationNetworkAdd',
53        'server_relation_network_remove': 'TaskEventsServerServerRelationNetworkRemove',
54        'server_relation_storage_add': 'TaskEventsServerServerRelationStorageAdd',
55        'server_relation_storage_update': 'TaskEventsServerServerRelationStorageAdd',
56        'server_relation_storage_remove': 'TaskEventsServerServerRelationStorageRemove',
57        'server_add': 'TaskEventsServerServerAdd',
58        'server_update': 'TaskEventsServerServerUpdate',
59        'server_remove': 'TaskEventsServerServerRemove',
60        'server_power_shutdown': 'TaskEventsServerServerRemove',
61        'server_power_update': 'TaskEventsServerServerPowerUpdate'
62    }
63
64    attribute_map = {
65        'server_relation_isoimage_add': 'server_relation_isoimage_add',
66        'server_relation_isoimage_update': 'server_relation_isoimage_update',
67        'server_relation_isoimage_remove': 'server_relation_isoimage_remove',
68        'server_relation_ipaddr_add': 'server_relation_ipaddr_add',
69        'server_relation_ipaddr_remove': 'server_relation_ipaddr_remove',
70        'server_relation_network_add': 'server_relation_network_add',
71        'server_relation_network_update': 'server_relation_network_update',
72        'server_relation_network_remove': 'server_relation_network_remove',
73        'server_relation_storage_add': 'server_relation_storage_add',
74        'server_relation_storage_update': 'server_relation_storage_update',
75        'server_relation_storage_remove': 'server_relation_storage_remove',
76        'server_add': 'server_add',
77        'server_update': 'server_update',
78        'server_remove': 'server_remove',
79        'server_power_shutdown': 'server_power_shutdown',
80        'server_power_update': 'server_power_update'
81    }
82
83    def __init__(self, server_relation_isoimage_add=None, server_relation_isoimage_update=None, server_relation_isoimage_remove=None, server_relation_ipaddr_add=None, server_relation_ipaddr_remove=None, server_relation_network_add=None, server_relation_network_update=None, server_relation_network_remove=None, server_relation_storage_add=None, server_relation_storage_update=None, server_relation_storage_remove=None, server_add=None, server_update=None, server_remove=None, server_power_shutdown=None, server_power_update=None):  # noqa: E501
84        """TaskEventsServer - a model defined in Swagger"""  # noqa: E501
85
86        self._server_relation_isoimage_add = None
87        self._server_relation_isoimage_update = None
88        self._server_relation_isoimage_remove = None
89        self._server_relation_ipaddr_add = None
90        self._server_relation_ipaddr_remove = None
91        self._server_relation_network_add = None
92        self._server_relation_network_update = None
93        self._server_relation_network_remove = None
94        self._server_relation_storage_add = None
95        self._server_relation_storage_update = None
96        self._server_relation_storage_remove = None
97        self._server_add = None
98        self._server_update = None
99        self._server_remove = None
100        self._server_power_shutdown = None
101        self._server_power_update = None
102        self.discriminator = None
103
104        if server_relation_isoimage_add is not None:
105            self.server_relation_isoimage_add = server_relation_isoimage_add
106        if server_relation_isoimage_update is not None:
107            self.server_relation_isoimage_update = server_relation_isoimage_update
108        if server_relation_isoimage_remove is not None:
109            self.server_relation_isoimage_remove = server_relation_isoimage_remove
110        if server_relation_ipaddr_add is not None:
111            self.server_relation_ipaddr_add = server_relation_ipaddr_add
112        if server_relation_ipaddr_remove is not None:
113            self.server_relation_ipaddr_remove = server_relation_ipaddr_remove
114        if server_relation_network_add is not None:
115            self.server_relation_network_add = server_relation_network_add
116        if server_relation_network_update is not None:
117            self.server_relation_network_update = server_relation_network_update
118        if server_relation_network_remove is not None:
119            self.server_relation_network_remove = server_relation_network_remove
120        if server_relation_storage_add is not None:
121            self.server_relation_storage_add = server_relation_storage_add
122        if server_relation_storage_update is not None:
123            self.server_relation_storage_update = server_relation_storage_update
124        if server_relation_storage_remove is not None:
125            self.server_relation_storage_remove = server_relation_storage_remove
126        if server_add is not None:
127            self.server_add = server_add
128        if server_update is not None:
129            self.server_update = server_update
130        if server_remove is not None:
131            self.server_remove = server_remove
132        if server_power_shutdown is not None:
133            self.server_power_shutdown = server_power_shutdown
134        if server_power_update is not None:
135            self.server_power_update = server_power_update
136
137    @property
138    def server_relation_isoimage_add(self):
139        """Gets the server_relation_isoimage_add of this TaskEventsServer.  # noqa: E501
140
141
142        :return: The server_relation_isoimage_add of this TaskEventsServer.  # noqa: E501
143        :rtype: TaskEventsServerServerRelationIsoimageAdd
144        """
145        return self._server_relation_isoimage_add
146
147    @server_relation_isoimage_add.setter
148    def server_relation_isoimage_add(self, server_relation_isoimage_add):
149        """Sets the server_relation_isoimage_add of this TaskEventsServer.
150
151
152        :param server_relation_isoimage_add: The server_relation_isoimage_add of this TaskEventsServer.  # noqa: E501
153        :type: TaskEventsServerServerRelationIsoimageAdd
154        """
155
156        self._server_relation_isoimage_add = server_relation_isoimage_add
157
158    @property
159    def server_relation_isoimage_update(self):
160        """Gets the server_relation_isoimage_update of this TaskEventsServer.  # noqa: E501
161
162
163        :return: The server_relation_isoimage_update of this TaskEventsServer.  # noqa: E501
164        :rtype: TaskEventsServerServerRelationIsoimageAdd
165        """
166        return self._server_relation_isoimage_update
167
168    @server_relation_isoimage_update.setter
169    def server_relation_isoimage_update(self, server_relation_isoimage_update):
170        """Sets the server_relation_isoimage_update of this TaskEventsServer.
171
172
173        :param server_relation_isoimage_update: The server_relation_isoimage_update of this TaskEventsServer.  # noqa: E501
174        :type: TaskEventsServerServerRelationIsoimageAdd
175        """
176
177        self._server_relation_isoimage_update = server_relation_isoimage_update
178
179    @property
180    def server_relation_isoimage_remove(self):
181        """Gets the server_relation_isoimage_remove of this TaskEventsServer.  # noqa: E501
182
183
184        :return: The server_relation_isoimage_remove of this TaskEventsServer.  # noqa: E501
185        :rtype: TaskEventsServerServerRelationIsoimageRemove
186        """
187        return self._server_relation_isoimage_remove
188
189    @server_relation_isoimage_remove.setter
190    def server_relation_isoimage_remove(self, server_relation_isoimage_remove):
191        """Sets the server_relation_isoimage_remove of this TaskEventsServer.
192
193
194        :param server_relation_isoimage_remove: The server_relation_isoimage_remove of this TaskEventsServer.  # noqa: E501
195        :type: TaskEventsServerServerRelationIsoimageRemove
196        """
197
198        self._server_relation_isoimage_remove = server_relation_isoimage_remove
199
200    @property
201    def server_relation_ipaddr_add(self):
202        """Gets the server_relation_ipaddr_add of this TaskEventsServer.  # noqa: E501
203
204
205        :return: The server_relation_ipaddr_add of this TaskEventsServer.  # noqa: E501
206        :rtype: TaskEventsServerServerRelationIpaddrAdd
207        """
208        return self._server_relation_ipaddr_add
209
210    @server_relation_ipaddr_add.setter
211    def server_relation_ipaddr_add(self, server_relation_ipaddr_add):
212        """Sets the server_relation_ipaddr_add of this TaskEventsServer.
213
214
215        :param server_relation_ipaddr_add: The server_relation_ipaddr_add of this TaskEventsServer.  # noqa: E501
216        :type: TaskEventsServerServerRelationIpaddrAdd
217        """
218
219        self._server_relation_ipaddr_add = server_relation_ipaddr_add
220
221    @property
222    def server_relation_ipaddr_remove(self):
223        """Gets the server_relation_ipaddr_remove of this TaskEventsServer.  # noqa: E501
224
225
226        :return: The server_relation_ipaddr_remove of this TaskEventsServer.  # noqa: E501
227        :rtype: TaskEventsServerServerRelationIpaddrAdd
228        """
229        return self._server_relation_ipaddr_remove
230
231    @server_relation_ipaddr_remove.setter
232    def server_relation_ipaddr_remove(self, server_relation_ipaddr_remove):
233        """Sets the server_relation_ipaddr_remove of this TaskEventsServer.
234
235
236        :param server_relation_ipaddr_remove: The server_relation_ipaddr_remove of this TaskEventsServer.  # noqa: E501
237        :type: TaskEventsServerServerRelationIpaddrAdd
238        """
239
240        self._server_relation_ipaddr_remove = server_relation_ipaddr_remove
241
242    @property
243    def server_relation_network_add(self):
244        """Gets the server_relation_network_add of this TaskEventsServer.  # noqa: E501
245
246
247        :return: The server_relation_network_add of this TaskEventsServer.  # noqa: E501
248        :rtype: TaskEventsServerServerRelationNetworkAdd
249        """
250        return self._server_relation_network_add
251
252    @server_relation_network_add.setter
253    def server_relation_network_add(self, server_relation_network_add):
254        """Sets the server_relation_network_add of this TaskEventsServer.
255
256
257        :param server_relation_network_add: The server_relation_network_add of this TaskEventsServer.  # noqa: E501
258        :type: TaskEventsServerServerRelationNetworkAdd
259        """
260
261        self._server_relation_network_add = server_relation_network_add
262
263    @property
264    def server_relation_network_update(self):
265        """Gets the server_relation_network_update of this TaskEventsServer.  # noqa: E501
266
267
268        :return: The server_relation_network_update of this TaskEventsServer.  # noqa: E501
269        :rtype: TaskEventsServerServerRelationNetworkAdd
270        """
271        return self._server_relation_network_update
272
273    @server_relation_network_update.setter
274    def server_relation_network_update(self, server_relation_network_update):
275        """Sets the server_relation_network_update of this TaskEventsServer.
276
277
278        :param server_relation_network_update: The server_relation_network_update of this TaskEventsServer.  # noqa: E501
279        :type: TaskEventsServerServerRelationNetworkAdd
280        """
281
282        self._server_relation_network_update = server_relation_network_update
283
284    @property
285    def server_relation_network_remove(self):
286        """Gets the server_relation_network_remove of this TaskEventsServer.  # noqa: E501
287
288
289        :return: The server_relation_network_remove of this TaskEventsServer.  # noqa: E501
290        :rtype: TaskEventsServerServerRelationNetworkRemove
291        """
292        return self._server_relation_network_remove
293
294    @server_relation_network_remove.setter
295    def server_relation_network_remove(self, server_relation_network_remove):
296        """Sets the server_relation_network_remove of this TaskEventsServer.
297
298
299        :param server_relation_network_remove: The server_relation_network_remove of this TaskEventsServer.  # noqa: E501
300        :type: TaskEventsServerServerRelationNetworkRemove
301        """
302
303        self._server_relation_network_remove = server_relation_network_remove
304
305    @property
306    def server_relation_storage_add(self):
307        """Gets the server_relation_storage_add of this TaskEventsServer.  # noqa: E501
308
309
310        :return: The server_relation_storage_add of this TaskEventsServer.  # noqa: E501
311        :rtype: TaskEventsServerServerRelationStorageAdd
312        """
313        return self._server_relation_storage_add
314
315    @server_relation_storage_add.setter
316    def server_relation_storage_add(self, server_relation_storage_add):
317        """Sets the server_relation_storage_add of this TaskEventsServer.
318
319
320        :param server_relation_storage_add: The server_relation_storage_add of this TaskEventsServer.  # noqa: E501
321        :type: TaskEventsServerServerRelationStorageAdd
322        """
323
324        self._server_relation_storage_add = server_relation_storage_add
325
326    @property
327    def server_relation_storage_update(self):
328        """Gets the server_relation_storage_update of this TaskEventsServer.  # noqa: E501
329
330
331        :return: The server_relation_storage_update of this TaskEventsServer.  # noqa: E501
332        :rtype: TaskEventsServerServerRelationStorageAdd
333        """
334        return self._server_relation_storage_update
335
336    @server_relation_storage_update.setter
337    def server_relation_storage_update(self, server_relation_storage_update):
338        """Sets the server_relation_storage_update of this TaskEventsServer.
339
340
341        :param server_relation_storage_update: The server_relation_storage_update of this TaskEventsServer.  # noqa: E501
342        :type: TaskEventsServerServerRelationStorageAdd
343        """
344
345        self._server_relation_storage_update = server_relation_storage_update
346
347    @property
348    def server_relation_storage_remove(self):
349        """Gets the server_relation_storage_remove of this TaskEventsServer.  # noqa: E501
350
351
352        :return: The server_relation_storage_remove of this TaskEventsServer.  # noqa: E501
353        :rtype: TaskEventsServerServerRelationStorageRemove
354        """
355        return self._server_relation_storage_remove
356
357    @server_relation_storage_remove.setter
358    def server_relation_storage_remove(self, server_relation_storage_remove):
359        """Sets the server_relation_storage_remove of this TaskEventsServer.
360
361
362        :param server_relation_storage_remove: The server_relation_storage_remove of this TaskEventsServer.  # noqa: E501
363        :type: TaskEventsServerServerRelationStorageRemove
364        """
365
366        self._server_relation_storage_remove = server_relation_storage_remove
367
368    @property
369    def server_add(self):
370        """Gets the server_add of this TaskEventsServer.  # noqa: E501
371
372
373        :return: The server_add of this TaskEventsServer.  # noqa: E501
374        :rtype: TaskEventsServerServerAdd
375        """
376        return self._server_add
377
378    @server_add.setter
379    def server_add(self, server_add):
380        """Sets the server_add of this TaskEventsServer.
381
382
383        :param server_add: The server_add of this TaskEventsServer.  # noqa: E501
384        :type: TaskEventsServerServerAdd
385        """
386
387        self._server_add = server_add
388
389    @property
390    def server_update(self):
391        """Gets the server_update of this TaskEventsServer.  # noqa: E501
392
393
394        :return: The server_update of this TaskEventsServer.  # noqa: E501
395        :rtype: TaskEventsServerServerUpdate
396        """
397        return self._server_update
398
399    @server_update.setter
400    def server_update(self, server_update):
401        """Sets the server_update of this TaskEventsServer.
402
403
404        :param server_update: The server_update of this TaskEventsServer.  # noqa: E501
405        :type: TaskEventsServerServerUpdate
406        """
407
408        self._server_update = server_update
409
410    @property
411    def server_remove(self):
412        """Gets the server_remove of this TaskEventsServer.  # noqa: E501
413
414
415        :return: The server_remove of this TaskEventsServer.  # noqa: E501
416        :rtype: TaskEventsServerServerRemove
417        """
418        return self._server_remove
419
420    @server_remove.setter
421    def server_remove(self, server_remove):
422        """Sets the server_remove of this TaskEventsServer.
423
424
425        :param server_remove: The server_remove of this TaskEventsServer.  # noqa: E501
426        :type: TaskEventsServerServerRemove
427        """
428
429        self._server_remove = server_remove
430
431    @property
432    def server_power_shutdown(self):
433        """Gets the server_power_shutdown of this TaskEventsServer.  # noqa: E501
434
435
436        :return: The server_power_shutdown of this TaskEventsServer.  # noqa: E501
437        :rtype: TaskEventsServerServerRemove
438        """
439        return self._server_power_shutdown
440
441    @server_power_shutdown.setter
442    def server_power_shutdown(self, server_power_shutdown):
443        """Sets the server_power_shutdown of this TaskEventsServer.
444
445
446        :param server_power_shutdown: The server_power_shutdown of this TaskEventsServer.  # noqa: E501
447        :type: TaskEventsServerServerRemove
448        """
449
450        self._server_power_shutdown = server_power_shutdown
451
452    @property
453    def server_power_update(self):
454        """Gets the server_power_update of this TaskEventsServer.  # noqa: E501
455
456
457        :return: The server_power_update of this TaskEventsServer.  # noqa: E501
458        :rtype: TaskEventsServerServerPowerUpdate
459        """
460        return self._server_power_update
461
462    @server_power_update.setter
463    def server_power_update(self, server_power_update):
464        """Sets the server_power_update of this TaskEventsServer.
465
466
467        :param server_power_update: The server_power_update of this TaskEventsServer.  # noqa: E501
468        :type: TaskEventsServerServerPowerUpdate
469        """
470
471        self._server_power_update = server_power_update
472
473    def to_dict(self):
474        """Returns the model properties as a dict"""
475        result = {}
476
477        for attr, _ in six.iteritems(self.swagger_types):
478            value = getattr(self, attr)
479            if isinstance(value, list):
480                result[attr] = list(map(
481                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
482                    value
483                ))
484            elif hasattr(value, "to_dict"):
485                result[attr] = value.to_dict()
486            elif isinstance(value, dict):
487                result[attr] = dict(map(
488                    lambda item: (item[0], item[1].to_dict())
489                    if hasattr(item[1], "to_dict") else item,
490                    value.items()
491                ))
492            else:
493                result[attr] = value
494        if issubclass(TaskEventsServer, dict):
495            for key, value in self.items():
496                result[key] = value
497
498        return result
499
500    def to_str(self):
501        """Returns the string representation of the model"""
502        return pprint.pformat(self.to_dict())
503
504    def __repr__(self):
505        """For `print` and `pprint`"""
506        return self.to_str()
507
508    def __eq__(self, other):
509        """Returns true if both objects are equal"""
510        if not isinstance(other, TaskEventsServer):
511            return False
512
513        return self.__dict__ == other.__dict__
514
515    def __ne__(self, other):
516        """Returns true if both objects are not equal"""
517        return not self == other
518