Skip to content

Commit a26b706

Browse files
Creating.
1 parent cc429b7 commit a26b706

11 files changed

+46
-44
lines changed

experiments/Azure.Experiments/Azure.Experiments/Compute/VirtualMachineConfig.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ public static ResourceConfig<VirtualMachine> Create(
1919
.CreateComputeManagementClient()
2020
.VirtualMachines
2121
.GetAsync(resourceGroup.Name, name),
22-
c => c.Location);
22+
c => c.Location,
23+
(c, location) => c
24+
.CreateComputeManagementClient()
25+
.VirtualMachines
26+
.CreateOrUpdateAsync(
27+
resourceGroup.Name, name, new VirtualMachine { Location = location }));
2328
}
2429
}

experiments/Azure.Experiments/Azure.Experiments/ICreateOperation.cs

Lines changed: 0 additions & 29 deletions
This file was deleted.

experiments/Azure.Experiments/Azure.Experiments/ManagedResourceConfig.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@ public static ResourceConfig<I> Create<I>(
1313
string name,
1414
IEnumerable<IResourceConfig> dependencies,
1515
Func<Context, Task<I>> getAsync,
16-
Func<I, string> getLocation)
16+
Func<I, string> getLocation,
17+
Func<Context, string, Task<I>> createAsync)
1718
where I : class
1819
=> ResourceConfig.Create(
1920
name,
2021
dependencies.Concat(new[] { resourceGroup }),
2122
getAsync,
2223
i => new Location(true, getLocation(i)),
23-
(map, config) => map.Get(config));
24+
(map, config) => map.Get(config),
25+
createAsync);
2426
}
2527
}

experiments/Azure.Experiments/Azure.Experiments/Network/NetworkInterfaceConfig.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public static ResourceConfig<NetworkInterface> Create(
1616
resourceGroup,
1717
name,
1818
new IResourceConfig[] { subnet, publicIpAddress, networkSecurityGroup },
19-
c => c.NetworkInterfaces.GetAsync(resourceGroup.Name, name));
19+
c => c.NetworkInterfaces.GetAsync(resourceGroup.Name, name),
20+
(c, location) => c.NetworkInterfaces.CreateOrUpdateAsync(
21+
resourceGroup.Name, name, new NetworkInterface { Location = location }));
2022
}
2123
}

experiments/Azure.Experiments/Azure.Experiments/Network/NetworkResourceConfig.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@ public static ResourceConfig<I> Create<I>(
1212
ResourceConfig<ResourceGroup> resourceGroup,
1313
string name,
1414
IEnumerable<IResourceConfig> dependencies,
15-
Func<INetworkManagementClient, Task<I>> getAsync)
15+
Func<INetworkManagementClient, Task<I>> getAsync,
16+
Func<INetworkManagementClient, string, Task<I>> createAsync)
1617
where I : Management.Network.Models.Resource
1718
=> ManagedResourceConfig.Create(
1819
resourceGroup,
1920
name,
2021
dependencies,
21-
context => getAsync(context.CreateNetworkManagementClient()),
22-
i => i.Location);
22+
c => getAsync(c.CreateNetworkManagementClient()),
23+
i => i.Location,
24+
(c, location) => createAsync(c.CreateNetworkManagementClient(), location));
2325
}
2426
}

experiments/Azure.Experiments/Azure.Experiments/Network/NetworkSecurityGroupConfig.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public static ResourceConfig<NetworkSecurityGroup> Create(
1212
resourceGroup,
1313
name,
1414
new IResourceConfig[] { },
15-
c => c.NetworkSecurityGroups.GetAsync(resourceGroup.Name, name));
15+
c => c.NetworkSecurityGroups.GetAsync(resourceGroup.Name, name),
16+
(c, location) => c.NetworkSecurityGroups.CreateOrUpdateAsync(
17+
resourceGroup.Name, name, new NetworkSecurityGroup { Location = location }));
1618
}
1719
}

experiments/Azure.Experiments/Azure.Experiments/Network/PublicIpAddressConfig.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public static ResourceConfig<PublicIPAddress> Create(
1515
resourceGroup,
1616
name,
1717
new IResourceConfig[] { },
18-
c => c.PublicIPAddresses.GetAsync(resourceGroup.Name, name));
18+
c => c.PublicIPAddresses.GetAsync(resourceGroup.Name, name),
19+
(c, location) => c.PublicIPAddresses.CreateOrUpdateAsync(
20+
resourceGroup.Name, name, new PublicIPAddress { Location = location }));
1921
}
2022
}

experiments/Azure.Experiments/Azure.Experiments/Network/SubnetConfig.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public static ResourceConfig<Subnet> Create(
1313
new[] { virtualNetwork },
1414
_ => Task.FromResult<Subnet>(null),
1515
null,
16-
(map, _) => map.Get(virtualNetwork)?.Subnets?.FirstOrDefault(v => v.Name == name));
16+
(map, _) => map.Get(virtualNetwork)?.Subnets?.FirstOrDefault(v => v.Name == name),
17+
(_0, _1) => null);
1718
}
1819
}

experiments/Azure.Experiments/Azure.Experiments/Network/VirtualNetworkConfig.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public static ResourceConfig<VirtualNetwork> Create(
1212
resourceGroup,
1313
name,
1414
new IResourceConfig[] { },
15-
c => c.VirtualNetworks.GetAsync(resourceGroup.Name, name));
15+
c => c.VirtualNetworks.GetAsync(resourceGroup.Name, name),
16+
(c, location) => c.VirtualNetworks.CreateOrUpdateAsync(
17+
resourceGroup.Name, name, new VirtualNetwork { Location = location }));
1618
}
1719
}

experiments/Azure.Experiments/Azure.Experiments/ResourceConfig.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public interface IResourceConfig
1515
Location GetLocation(object i);
1616

1717
object GetState(IStateMap getState);
18+
19+
Task<object> CreateAsync(Context context, string location);
1820
}
1921

2022
public static class ResourceConfig
@@ -24,8 +26,10 @@ public static ResourceConfig<I> Create<I>(
2426
IEnumerable<IResourceConfig> dependencies,
2527
Func<Context, Task<I>> getAsync,
2628
Func<I, Location> getLocation,
27-
Func<IStateMap, ResourceConfig<I>, I> getState)
28-
=> new ResourceConfig<I>(name, dependencies, getAsync, getLocation, getState);
29+
Func<IStateMap, ResourceConfig<I>, I> getState,
30+
Func<Context, string, Task<I>> createAsync)
31+
=> new ResourceConfig<I>(
32+
name, dependencies, getAsync, getLocation, getState, createAsync);
2933
}
3034

3135
public sealed class ResourceConfig<I> : IResourceConfig
@@ -39,13 +43,15 @@ public ResourceConfig(
3943
IEnumerable<IResourceConfig> dependencies,
4044
Func<Context, Task<I>> getAsyncFunc,
4145
Func<I, Location> getLocationFunc,
42-
Func<IStateMap, ResourceConfig<I>, I> getStateFunc)
46+
Func<IStateMap, ResourceConfig<I>, I> getStateFunc,
47+
Func<Context, string, Task<I>> createAsyncFunc)
4348
{
4449
Name = name;
4550
Dependencies = dependencies;
4651
GetAsyncFunc = getAsyncFunc;
4752
GetLocationFunc = getLocationFunc;
4853
GetStateFunc = getStateFunc;
54+
CreateAsyncFunc = createAsyncFunc;
4955
}
5056

5157
public async Task<object> GetAsync(Context context) => await GetAsyncFunc(context);
@@ -54,10 +60,15 @@ public ResourceConfig(
5460

5561
public object GetState(IStateMap stateMap) => GetStateFunc(stateMap, this);
5662

63+
public async Task<object> CreateAsync(Context context, string location)
64+
=> await CreateAsyncFunc(context, location);
65+
5766
private Func<Context, Task<I>> GetAsyncFunc { get; }
5867

5968
private Func<I, Location> GetLocationFunc { get; }
6069

6170
public Func<IStateMap, ResourceConfig<I>, I> GetStateFunc { get; }
71+
72+
private Func<Context, string, Task<I>> CreateAsyncFunc { get; }
6273
}
6374
}

experiments/Azure.Experiments/Azure.Experiments/ResourceGroupConfig.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ public static ResourceConfig<ResourceGroup> Create(string name)
1111
new IResourceConfig[] { },
1212
c => c.CreateResourceManagementClient().ResourceGroups.GetAsync(name),
1313
i => new Location(false, i.Location),
14-
(map, config) => map.Get(config));
14+
(map, config) => map.Get(config),
15+
(c, location) => c.CreateResourceManagementClient().ResourceGroups.CreateOrUpdateAsync(
16+
name, new ResourceGroup { Location = location }));
1517
}
1618
}

0 commit comments

Comments
 (0)