1
/* ============================================================================
2
Copyright 2014 Hewlett Packard
4
Licensed under the Apache License, Version 2.0 (the "License");
5
you may not use this file except in compliance with the License.
6
You may obtain a copy of the License at
8
http://www.apache.org/licenses/LICENSE-2.0
10
Unless required by applicable law or agreed to in writing, software
11
distributed under the License is distributed on an "AS IS" BASIS,
12
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
See the License for the specific language governing permissions and
14
limitations under the License.
15
============================================================================ */
17
using System.Collections.Generic;
19
using System.Management.Automation;
21
using Openstack.Client.Powershell.Cmdlets.Common;
22
using Openstack.Objects.DataAccess.Networking;
23
using Openstack.Objects.Domain.Networking;
25
namespace Openstack.Client.Powershell.Cmdlets.Networking
27
[Cmdlet("New", "Network", SupportsShouldProcess = true)]
28
public class NewNetworkCmdlet : BasePSCmdlet
30
private bool _adminStateUp = true;
31
private bool _force = true;
33
private string _cidr = "11.0.3.0/24";
36
//=========================================================================================
40
//=========================================================================================
41
[Parameter(Position = 0, ParameterSetName = "NewNetwork", Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "The Id of the Server.")]
46
set { _name = value; }
48
//=========================================================================================
52
//=========================================================================================
53
[Parameter(Position = 3, ParameterSetName = "NewNetwork", Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "The Id of the Server.")]
55
public string CidrValue
58
set { _cidr = value; }
60
//=========================================================================================
64
//=========================================================================================
65
[Parameter(Position = 1, ParameterSetName = "NewNetwork", Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Help Text")]
67
[ValidateNotNullOrEmpty]
68
public SwitchParameter AdminStateUp
70
get { return _adminStateUp; }
71
set { _adminStateUp = value; }
73
//=========================================================================================
77
//=========================================================================================
78
[Parameter(Position = 2, ParameterSetName = "NewNetwork", Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Help Text")]
80
[ValidateNotNullOrEmpty]
81
public SwitchParameter Force
83
get { return _force; }
84
set { _force = value; }
88
//=========================================================================================
92
/// <param name="sender"></param>
93
/// <param name="e"></param>
94
//=========================================================================================
95
private void BuilderEvent(object sender, CreateNetworkEventArgs e)
97
Console.WriteLine("- " + e.Message);
99
//=========================================================================================
103
//=========================================================================================
104
protected override void ProcessRecord()
106
Console.WriteLine("");
107
NewNetwork newNetwork = new NewNetwork();
108
newNetwork.AdminStateUp = _adminStateUp;
109
newNetwork.Name = _name;
111
if (this.CidrValue == null) {
112
newNetwork.Cidr = "11.0.3.0/24";
115
newNetwork.Cidr = this.CidrValue;
118
INetworkRepository repository = this.RepositoryFactory.CreateNetworkRepository();
119
repository.Changed += new Openstack.Objects.DataAccess.Networking.NetworkRepository.CreateNetworkEventHandler(BuilderEvent);
120
repository.SaveNetwork(newNetwork, this.Force);
121
repository.Changed -= new Openstack.Objects.DataAccess.Networking.NetworkRepository.CreateNetworkEventHandler(BuilderEvent);
122
Console.WriteLine(" Network Build Complete!");
123
Console.WriteLine("");